Alejandro Cordoba
Alejandro Cordoba

Reputation: 447

Range Summatory in GAMS

I have to do a function where for all i inside my objects I have to do a sum depending of the index the pseudo code would look like this:

Objects

Sets NUM_OBJECTS 7

          i objects / o1*o7 /;

Equations

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);

But I have no idea hwo to implement this.

Upvotes: 0

Views: 130

Answers (1)

Salva
Salva

Reputation: 219

Assuming that value(i) is a variable, I think this is how you can do it

 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)

Upvotes: 1

Related Questions