[英]Expressing an OR constraint in linear programming
我在線性程序中有一個浮點變量x
,它應該為0
或在兩個常量CONSTANT_A
和CONSTANT_B
:
LP.addConstraint(x == 0 OR CONSTANT_A <= x <= CONSTANT_B)
當然,在線性編程中沒有顯式“ OR
類的東西。 有沒有辦法表達這種約束?
因此,假設您需要約束:
x == 0 OR 1 <= x <= 2
顯然,線性程序的可行區域不是凸的,因為x = 0和x = 1都是可行的,但是沒有合適的凸組合是可行的。 結果,證明不可能使用線性程序對此建模。
就是說,如果引入一個二進制決策變量y,就很容易對此建模,如果我們在該范圍內,則取值1;如果我們將其固定為0,則取值為0。然后可以對以下內容進行建模:
y <= x <= 2*y
y binary
或者,在您的一般情況下:
y*CONSTANT_A <= x <= y*CONSTANT_B
y binary
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.