2013-05-08 95 views
1

在AMPL中,我有一組變量x [e],對於某些計算,我需要一個二進制變量w [e],當x [e]> 0時等於1,如果x [ e] = 0。我嘗試了很多東西來制定這個約束,但是我沒有提出一些東西。這可能嗎?從AMPL中的另一個變量創建的變量

回答

1

我已經解決你的問題的方式如下:

var u binary; 

這是我們的二元變量,這將是0或1。 那麼我們就把下面的約束:

subject to U_constraint : 
    x <= 999999 * u; 

現在,X =當0,那麼AMPL將使u = 0,當x!= 0時顯然u = 1。

+0

幹得好@bond_t! – Mithrand1r 2013-05-10 06:44:58

+0

當x = 0時,什麼阻止你成爲1? – 2017-10-09 00:31:24

+0

真相被告知自2013年以來我一直沒有使用AMPL,所以我沒有真正記得這個方法,我在大學項目中使用過這個方法,並且它工作正常。如果您發現任何錯誤,請分享,我會爲其他人更正此答案。 – 2017-10-11 09:07:59

相關問題