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)
我必须做一个函数,我必须根据索引对我对象中的所有 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)