簡體   English   中英

在線性編程中表達或約束

[英]Expressing an OR constraint in linear programming

我在線性程序中有一個浮點變量x ,它應該為0或在兩個常量CONSTANT_ACONSTANT_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM