我想写下这些方程式:
X21+X22+X23+X24=55
X11+X12+X13+X14=90
X11+X21<=H1*Y11+H2*Y21+H3*Y31
我知道我应该使用SUM函数,但我不完全清楚它 但我无法转换它们。 我如何在方程式部分写出它们? 这是我的代码的一部分:
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
答案 0 :(得分:1)
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的值,则不应将其定义为变量。 您可以在以下教程中找到另一个包含sum和更多详细信息的示例 http://www.gams.com/dd/docs/gams/Tutorial.pdf
答案 1 :(得分:0)
尝试:
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') + ... ;