indexes and restrictions

Hi,

I have a model which has a variable v(j,t) where j e t is in

{ 8,9,10,11,12}

and I want to write the following restrictions in GAMS

v(8,9) = 1;

v(8,10) + v(9,10) = 1;

v(8,11) + v(9,11) + v(10,11) = 1;

v(8,12) + v(9,12) + v(10,12) + v(11,12) = 1;

I put this following form, but is there any way more concise? I’m asking because this set j it will be larger in other instances…

j set / 8 * 12 / ;
alias( j,t ) ;

C2(t)… sum(j$(ord(j) eq 1), v(j,‘9’)) =e= 1;

C3(t)… sum(j$(ord(j) le 2), v(j,‘10’)) =e= 1;

C4(t)… sum(j$(ord(j) le 3), v(j,‘11’)) =e= 1;

C5(t)… sum(j$(ord(j) le 4), v(j,‘12’)) =e= 1;

Best regards,
Brígida

\

To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

Thank you so much, it helped me a lot.

Best regards,
Brígida

2011/10/4 Arne Stolbjerg Drud

Brigida:



It seems that the last index is driving the equation (excluding the first element) and that the first index that you sum over always should be less than the second. This gives the following suggestion:



set j / 8 * 12 / ;
alias( j,t ) ;
equation c(t);

c(t)(ord(t) gt 1) .. sum(j(ord(j) lt ord(t)), v(j,t) ) =E= 1;



Good luck



Arne


\

Arne Stolbjerg Drud

ARKI Consulting & Development A/S

Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark

Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk



Fra: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] På vegne af Brígida Sartini
Sendt: 3. oktober 2011 02:36
Til: gamsworld@googlegroups.com
Emne: indexes and restrictions



Hi,

I have a model which has a variable v(j,t) where j e t is in

{ 8,9,10,11,12}

and I want to write the following restrictions in GAMS

v(8,9) = 1;

v(8,10) + v(9,10) = 1;

v(8,11) + v(9,11) + v(10,11) = 1;

v(8,12) + v(9,12) + v(10,12) + v(11,12) = 1;

I put this following form, but is there any way more concise? I’m asking because this set j it will be larger in other instances…

j set / 8 * 12 / ;
alias( j,t ) ;

C2(t)… sum(j$(ord(j) eq 1), v(j,‘9’)) =e= 1;

C3(t)… sum(j$(ord(j) le 2), v(j,‘10’)) =e= 1;

C4(t)… sum(j$(ord(j) le 3), v(j,‘11’)) =e= 1;

C5(t)… sum(j$(ord(j) le 4), v(j,‘12’)) =e= 1;

Best regards,
Brígida


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

\

To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.