在GAMS中使用sum函数对变量的子集求和

时间:2018-09-26 10:00:28

标签: sum gams-math

我正在处理GAMS中的最大化问题,我将选择 X=(x_1,x2,...,x_n),以使f(X)=c_1*x_1+...c_n*x_n最大化。 c是已知的标量,我知道n(在我的情况下为10)。我希望约束使得第一个(n-1)=9 x的总和为1,而最后一个x的总和应小于10。如何使用总和来做到这一点?

这是我尝试过的:

SET C / c1 .... c2 /;
ALIAS(Assets,i)

Parameter Valuesforc(i) 'C values'/
*( here are my values typed in for all the C1)

POSITIVE VARIABLES
    x(i);

EQUATIONS
    Const1 First constraint
    Const1 Second constraint
    Obj    The Object;
* here comes the trouble:
Const1 ..   x(10) =l= 10
Const2 ..   sum((i-1),x(i)) =e= 1

代码不是全部完成,但是我相信必须输入基本设置。如何求和以找到x_1+x_1 + .... x_(n-1)以及如何引用x_10? / strong>

1 个答案:

答案 0 :(得分:2)

尝试一下:

Const1 ..   x('10') =l= 10;
Const2 ..   sum(i$(ord(i)<card(i)),x(i)) =e= 1;

编辑:以下是一些注释,以解释在Const2中发生的情况,特别是在“ $(ord(i)

因此,总而言之,有一个条件表明,除最后一个元素外,i中的所有元素都应包括在总和中。