GAMS 中的范围汇总

Range Summatory in GAMS

我必须做一个函数,我必须根据索引对我对象中的所有 i 进行求和,伪代码如下所示:

对象

Sets NUM_OBJECTS 7

          i objects / o1*o7 /;

方程

diasCon                 .. if(i<4) 
                           then ((sum from i to i+5 ,value(i)) =g= value(i)*5), 
                           else ((sum i ,value(i)) + (sum from  1 to 5-(8-i) ,value(i)) =g= value(i)*5);

但是我不知道如何实现这个。

假设 value(i) 是一个变量,我认为你可以这样做

 SET i /o1*o7/;
 ALIAS(i,ii);
 EQUATION EqName1(i), EqName2(i);
 EqName1(i)$(ord(i) lt 4)..      SUM(ii$((ord(ii) ge ord(i)) AND (ord(ii) le (ord(i)+5))),value(ii) =g= 5*value(i)
 EqName2(i)$(ord(i) ge 4)..      SUM(ii,value(ii)) + SUM(ii$(ord(ii) le (ord(i) - 3)),value(ii)) =g= 5*value(i)