2017-06-12 60 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

是的。我認爲明確的說法更清楚。我個人傾向於有三個獨立的方程。 –