簡體   English   中英

當變量之一屬於集合時如何求解整數線性規划

[英]how to solve integer linear programming when one of the variables belong to a set

我正在使用整數線性規划來解決優化問題,其中一個約束條件假設變量的值屬於一組值,如下所示:

 min 5*x1 + 2*x2
 s.t.
 x1,x2>0
 x1 in {2,4,-5}

我怎么能代表這個問題來解決使用CPLEX或lp_solve在matlab中? F,A,b數組的值是多少?

謝謝

您可以重寫一個問題,其中整數變量在更多變量中作為二進制程序具有有限的不連續整數集可能值。 寫吧:

2 * b1 + 4 * b2 -5 * b3 - x1 = 0
b1 + b2 + b3 = 1

其中b1, b2, b3約束為二進制。 可能直接得到支持,或者表示為

b1, b2, b3 integer
0 <= b1, b2, b3 <= 1

如果不允許使用平等約束,請記住一對不平等約束是等效的。

 Ax = b;

是相同的

 Ax <= b
-Ax <- -b

但是解決方案集仍然沒有內部空間,因此內部點方法無法工作。 您可以通過以下方法放松一下:

 Ax - e <= b
-Ax - e <= -b

並使用您的目標函數將e最小化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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