CPLEX 使用簡介教學
CPLEX全名為IBM ILOG CPLEX Optimization Studio,其為一套強大的規劃求解工具,本文將引領入門初學者學習使用CPLEX進行線性規劃(LP)模式的建構與求解。其內容為:
CPLEX可求解的問題類型:
參考資料:IBM - Product information
補充:
- 軟體的發展
- 模式撰寫規範
- 模式求解操作方法
- 求解結果輸出
- 範例實作
CPLEX可求解的問題類型:
- 線性規劃(Linear Programming, LP)
- 混合整數規劃(Mixed-integer linear Programming, MIP)
- 二次規劃(Quadratic Programming, QP)
- 二次約束規劃(Quadratic Constrained Programming, QCP)
- 變數格式:
- 須以英文字母開頭 ( e 與 E 不可使用)
- 保留符號不可使用「+、-、*、/、^、>、=、<、:、[、]」
- 其餘可為任意英文、數字、符號
- 例:x01, iPad(2), WKS_15
- 函數格式:
- 係數乘以變數,乘號需省略
- 2×x1+3×x2 寫法為 2x1+3x2
- 函數命名「:」,例:function1: 2x1+3x2
- 運算符號「+、-、*、/、^」
- 括號「[、]」
- 變數乘以變數或變數的平方須包含於括號內,
例:2a+[b^2-b*c] - 不等式「>、<、=、>=、<=」
- 不等式格式:
- 變數在前項,常數在後項
- 正確範例: 2x1+3x2 > 10
- 錯誤範例: 10 < 2x1+3x2
- 例外:於變數範圍限制(Bounds)的部分可使用範圍限制寫法,
例: 10 <= x1 <= 15 - 無限制寫法: x1 Free
- 單邊無限制寫法:
-Infinity <= x1 <= 15
10 <= x1 <= Infinity - 檔案儲存格式:
- 以附檔名lp存檔,例 model.lp
- 功能區塊格式:
- 目標式
Maximize 最大化問題
Minimize 最小化問題 - 限制式
Subject To - 變數範圍限制
Bounds 預設範圍為非負實數(>=0) - 變數屬性
General, Integer 整數
Binary 二元變數 - 結束標籤
End - 範例 (MIP):
Maximize
obj: x1 + 2 x2 + 3 x3 + x4
Subject To
c1: - x1 + x2 + x3 + 10 x4 <= 20
c2: x1 - 3 x2 + x3 <= 30
c3: x2 - 3.5 x4 = 0
Bounds
0 <= x1 <= 40
2 <= x4 <= 3
General
x4
End
- 範例 (QP)
Minimize
obj: a + b + [ a^2 + 4 a * b + 7 b^2 ]/2
Subject To
c1: a + b >= 10
End
- 執行cplex.exe啟動CPLEX
- 於CPLEX命令視窗內輸入指令
- 讀取問題
格式:read [模式檔案位置]
區隔符號為反斜線「\」
範例:CPLEX> read C:\model.lp - 開始求解
範例:CPLEX> opt - 等待求解完成或使用Ctrl+C中斷
- 顯示目標值
範例:CPLEX> display solution objective - 顯示決策變數
範例:CPLEX> display solution variables * - 寫出求解結果
格式:write [輸出檔案名稱] sol
範例:CPLEX> write example_sol sol - 離開
範例:CPLEX> quit
參考資料:IBM - Product information
補充:
- 如求解時發現整數變數或二元變數結果為浮點數,可於開始求解前下指令
CPLEX> set mip tolerances integrality 0
調整參數設定使其結果為嚴格整數或二元變數
留言
張貼留言