全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
5990 7
2014-09-07
p(j)+q(i,j)=l=0.05*x(i)*a(i,j)这样写为什么会报错?
附件列表
gams1.JPG

原图尺寸 15.93 KB

gams1.JPG

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-9-8 23:03:00
你定义的约束方程是不是忘了写维度?

EQUATIONS
        CONS(i,j)
;
CONS(i,j)..    z(i) + p(i,j) =G= a(i,j) * x(j);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-9 10:26:52
qianhaoqi 发表于 2014-9-8 23:03
你定义的约束方程是不是忘了写维度?

EQUATIONS
嗯,非常感谢啊,但还是会出现domain violation for set的报错,还有,当j=1的时候需要单独列出,如何写?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-9 10:34:21
qianhaoqi 发表于 2014-9-8 23:03
你定义的约束方程是不是忘了写维度?

EQUATIONS
face(1)..z- sum(m,u(m)*do1(m))+2*p(1)+sum(i,q(i,1)) =l= 0
或 scalar b /1/;
face(b)..z- sum(m,u(m)*do1(m))+2*p(b)+sum(i,q(i,b)) =l= 0都会出现domain violation for set,如何改写?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-10 13:40:45
【炊烟】 发表于 2014-9-9 10:26
嗯,非常感谢啊,但还是会出现domain violation for set的报错,还有,当j=1的时候需要单独列出,如何写? ...
需要单独列出的,然后定义一个子集的映射,用自己去conditional控制equations
举例来说:

SETS
        i       / 1*2 /
        j       / 1*5 /
        ij(i,j) / 1*2.1 /
;

EQUATIONS
        CONS1(i,j)
        CONS2(i,j)
;
CONS1(i,j)$ij(i,j)..    z(i) + p(i,j) =G= a(i,j) * x(j);
CONS2(i,j)$(not ij(i,j))..    z(i) + p(i,j) =G= a(i,j) * x(j);

上面定义的ij(i,j)是一个映射集合,这个集合定义的是(i=1,j=1)和(i=2,j=1),所以对应的CONS1方程就仅仅包含j=1的所有情况,而CONS2方程对应的是剩下的所有情况~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-10 13:42:41
【炊烟】 发表于 2014-9-9 10:34
face(1)..z- sum(m,u(m)*do1(m))+2*p(1)+sum(i,q(i,1)) =l= 0
或 scalar b /1/;
face(b)..z- sum(m,u ...
conditional equation要用conditional的写法,GAMS里用的是dollar符号$,见上楼的例子可参考~或者查看GAMS的users guide里也有说明~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群