CPLEX 使用簡介教學

CPLEX全名為IBM ILOG CPLEX Optimization Studio,其為一套強大的規劃求解工具,本文將引領入門初學者學習使用CPLEX進行線性規劃(LP)模式的建構與求解。其內容為:
  1. 軟體的發展
  2. 模式撰寫規範
  3. 模式求解操作方法
  4. 求解結果輸出
  5. 範例實作
相關簡報:CPLEX 講習

CPLEX可求解的問題類型:
  • 線性規劃(Linear Programming, LP)
  • 混合整數規劃(Mixed-integer linear Programming, MIP)
  • 二次規劃(Quadratic Programming, QP)
  • 二次約束規劃(Quadratic Constrained Programming, QCP)
LP格式規範:
  • 變數格式:
  • 須以英文字母開頭 ( 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
求解步驟:
  1. 執行cplex.exe啟動CPLEX
  2. 於CPLEX命令視窗內輸入指令
  3. 讀取問題
    格式:read [模式檔案位置]
    區隔符號為反斜線「\」
    範例:CPLEX> read C:\model.lp
  4. 開始求解
    範例:CPLEX> opt
  5. 等待求解完成或使用Ctrl+C中斷
  6. 顯示目標值
    範例:CPLEX> display solution objective
  7. 顯示決策變數
    範例:CPLEX> display solution variables *
  8. 寫出求解結果
    格式:write [輸出檔案名稱] sol
    範例:CPLEX> write example_sol sol
  9. 離開
    範例:CPLEX> quit

參考資料:IBM - Product information


補充:
  1. 如求解時發現整數變數或二元變數結果為浮點數,可於開始求解前下指令
    CPLEX> set mip tolerances integrality 0
    調整參數設定使其結果為嚴格整數或二元變數

留言

這個網誌中的熱門文章