Гамс, как писать уравнения?

Я хочу написать эти уравнения:

    X21+X22+X23+X24=55
    X11+X12+X13+X14=90
    X11+X21<=H1*Y11+H2*Y21+H3*Y31

Я знаю, что должен использовать функцию СУММ, но точно не знаю, но не могу их преобразовать. как я могу записать их в разделе уравнений? вот часть моего кода:

SETS
i   regions /shomal,jonub/
j   cities  /shiraz,esfahan,hamedan,yazd/
k   palaieshgahha /p1,p2,p3/;

PARAMETERS
         Y(k,j) pk Ntekhab shavad ia nashavad /1,0/
         S(k) sarmaieye  avalie /400000,600000,950000/
         H(k) zarfiate palaieshgah /20,35,50/;

 Table c(i,j)  cost 1milion boshke b milion rial
                    shiraz  esfahan   hamedan   yazd
      shomal         120        90         75     80
      jonub          45         65         110    95;

 VARIABLES
       X(i,j)   tedad milion boshke
       Y(k,j)      Ntekhabe palaieshgah
         Z       total cost;
POSITIVE VARIABLE X ;
EQUATIONS
//I have problem here

person Nickool    schedule 26.01.2012    source источник
comment
Что это за язык программирования?   -  person Pete Kirkham    schedule 27.03.2012


Ответы (2)


Ответ rafaelcidade требует некоторых исправлений, т.е. вместо

eqn2.. sum(i, X('shomal', i))  =e= 90;

должно быть

eqn2.. sum(j, X('shomal', j))  =e= 90;

и вместо

eqn3.. X('jonub', 'shiraz') + X('jonub', 'shiraz') =le= H('p1') * Y('shomal','shiraz') + ... ;

должно быть

eqn3.. sum(i,x(i,'shiraz') =le= sum(k,H(k)*Y(k,'shiraz'));

Другой вариант - определить набор уравнений на множестве i, определяя первые два уравнения как

Parameter val(i) = /55,90/;
Equations eqn_block1(i) 'first block of equations';
eqn_block1(i).. sum(j,X(i,j)) =e= val(i);

Еще одно наблюдение по вопросу заключается в том, что вы определили Y как параметр и переменную. Вы также определили два значения для параметра, и я не уверен, что это неверно, но в случае, если это не так, остальные значения будут равны нулю. Вероятно, вы хотели определить параметр Y (i), а не Y (k, j)

В любом случае, если значения Y известны, вы не должны определять его как переменную. Вы можете найти еще один пример с суммой и более подробной информацией в следующем руководстве http://www.gams.com/dd/docs/gams/Tutorial.pdf.

person kon psych    schedule 10.06.2012

Пытаться:

EQUATIONS 

eqn1 First Equation
eqn2 Second Equation
eqn3 Third Equation;

eqn1.. sum(j, X('jonub', j)) =e= 55;

eqn2.. sum(i, X('shomal', i))  =e= 90;

eqn3.. X('jonub', 'shiraz') + X('jonub', 'shiraz') =le= H('p1') * Y('shomal','shiraz') + ... ;
person rafaelcidade    schedule 09.03.2012