2017-06-12 46 views
1

我使用GAMS来解决网络分发问题,这是我第一次使用GAMS。我有下面的约束(见图),我想写在gams中,但不断收到错误。尝试使用IF语句或任何其他方式来解决它。变量z是一个二进制变量,它已被声明。使用IF语句的约束

谢谢!

Image

回答

1

你不if语句需要的,但可以用美元的条件下处理这个问题。 您可以在方程中使用美元条件(如此处所述)来完成此操作,也可以使用美元条件编写三个单独的方程来定义每个方程的域。

E_z(u,v,i).. sum(j, z(u,v,j,i)) - sum(j, z(u,v,i,j)) 
=E= 
0 + 1$(sameas(i,u)) - 1$(sameas(i,v)); 

与之相同的操作符记录在here。如果你的组具有数字值,那么进行数值比较可能会更清晰。 $(i.val = u.val)。

+0

的部分“0 +”后直接“= E =”因为“$ 1甚至被排除在外( sameas(i,u))“如果”i“和”u“不一样,则评价为0,但这只是化妆品,可能是个人品味的问题。 – Lutz

+0

是的。我认为明确的说法更清楚。我个人倾向于有三个独立的方程。 –