【炊烟】 发表于 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方程对应的是剩下的所有情况~