Gurobi 使用簡介教學
Gurobi全名為Gurobi Optimizer,其為一套強大的規劃求解工具,本文將引領入門初學者學習使用Gurobi進行線性規劃(LP)模式的建構與求解。
Gurobi可求解的問題類型:
附註:
參考資料:GUROBI DOCUMENTATION
Gurobi可求解的問題類型:
- 線性規劃(Linear Programming, LP)
- 二次規劃(Quadratic Programming, QP)
- 二次約束規劃(Quadratic Constrained Programming, QCP)
- 混合整數規劃(Mixed-integer linear Programming, MILP)
- 混合整數二次規劃(Mixed-integer Quadratic Programming, MIQP)
- 混合整數二次約束規劃(Mixed-integer Quadratically Constrained Programming, MIQCP)
- 變數格式:
- 除保留符號不可使用「+、-、*、/、^、>、=、<、:、[、]」
- 其餘可為任意英文、數字、符號
- 例:x01, E(2), 7
- 函數格式:
- 係數乘以變數,乘號需省略
- 2×x1+3×x2 寫法為 2 x1 + 3 x2
- 函數命名「:」,例:function1: 2 x1 + 3 x2
- 運算符號「+、-、*、/、^」
- 括號「[、]」
- 變數乘以變數或變數的平方須包含於括號內,
例:2 a + [ b ^ 2 - b * c ] - 不等式「>、<、=、>=、<=」
- 不等式格式:
- 符號、係數、變數、常數都要以空白符號隔開
- 變數在前項,常數在後項
- 正確範例: 2 x1 + 3 x2 > 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 - 範例 (MIQCP):
Maximize
x + y + z
Subject To
c0: x + y = 1
c1: x + 5 y + 2 z <= 10
qc0: x + y + [ x ^ 2 - 2 x * y + 3 y ^ 2 ] <= 5
Bounds
0 <= x <= 5
z >= 2
General
x y z
End
- 執行gurobi.bat啟動Gurobi
- 於Gurobi命令視窗內輸入指令
- 讀取問題
格式:m = read('[模式檔案位置]')
區隔符號為斜線「/」
範例:gurobi> m = read('C:/model.lp') - 開始求解
範例:gurobi> m.optimize() - 等待求解完成或使用Ctrl+C中斷
- 目標值相關求解資訊會顯示於畫面上
- 顯示決策變數
範例:gurobi> m.printAttr('X') - 寫出求解結果
格式:m.write('[輸出檔案名稱].sol')
範例:gurobi> m.write('output.sol') - 離開
範例:gurobi> quit()
附註:
- 如果你覺得這篇文章似曾相似,表示你讀過這篇
- Gurobi為CPLEX成員新開發的規劃求解工具,故在許多地方都很相似
- Gurobi在求解能力上超越CPLEX,但是沒有自己的GUI介面
參考資料:GUROBI DOCUMENTATION
留言
張貼留言