CPLEX & OPL建模語言從入門到放棄(一)
OPL是ILOG團隊為運籌學研究者定製的一種優化建模語言,語法相對簡單,接近運籌學研究者習慣的數學表達。
導航地址
OPL建模語言從入門到放棄(一) 基本組成
OPL建模語言從入門到放棄(二) 數據結構
OPL建模語言從入門到放棄(三) 數據源
OPL建模語言從入門到放棄(四) 決策變數
OPL建模語言從入門到放棄(五) 表達式
OPL建模語言從入門到放棄(六) 約束條件
OPL建模語言從入門到放棄(七) 參數
OPL建模語言從入門到放棄(八) 預處理語句
下文描述了OPL建模語言的基本組成,以及用OPL語言建模的方法。
注釋
多行注釋
/* This is a multiline comment */
單行注釋
dvar int cost in 0..maxCost; // decision variable
模型
一個模型應當包括以下幾個部分:
變數聲明(必須)
// dvar 表示決策變數dvar float+ x;dvar float+ y;// dexpr 表示決策表達式dexpr float cost = 0.12*x + 0.15*y;
預處理指令(可選)
execute { writeln(start reducing) }
問題描述(必須)
// 最小化minimize cost;subject to { 60*x + 60*y >= 300; 12*x + 6*y >= 36; 10*x + 30*y >= 90; }
後處理指令(可選)
execute { if (cplex.getCplexStatus() == 1) { writeln(reduced cost of x= , x.reducedCost) writeln(reduced cost of y= , y.reducedCost) } }
在CPlex中使用OPL
右鍵文件窗口,新建 - OPL項目,新建一個項目文件夾。
右鍵運行配置文件夾,新建 - 運行配置,新建一個運行配置。
右鍵項目文件夾,新建 - 模型,新建一個模型,並編寫代碼。
// 變數dvar float+ x;dvar float+ y; execute { writeln(start reducing) } // 聲明dexpr float cost = 0.12*x + 0.15*y; // 模型minimize cost;subject to { 60*x + 60*y >= 300; 12*x + 6*y >= 36; 10*x + 30*y >= 90; } execute { if (cplex.getCplexStatus() == 1) { writeln(reduced cost of x= , x.reducedCost) writeln(reduced cost of y= , y.reducedCost) }}
添加 cost 模型(mod)、數據(dat)和運行配置,將模型、數據拖拽到運行配置下。
右鍵 conf_1 運行這個,在問題瀏覽器中查看運行結果。
命令行運行 CPLEX
由於 Cplex 對中文支持較差,所以在直接運行調試的時候可能會遇到報錯亂碼。
對於這種情況,我們需要使用命令行運行模型,在命令行中報錯的編碼格式是正確的。
點擊運行 - 外部工具 -外部工具配置。
點擊下面的運行,計算機會自動執行 oplrun 命令。
現在,在控制台中已經可以看到正常的中文報錯了。
推薦閱讀:
※運籌學、人工智慧、數據科學尋學術合作,承接工業界諮詢,歡迎訪問海德堡大學組合優化實驗室、圖像處理中心
※【學界】21世紀運籌學相關的12個未解難題
※【觀點】從無人駕駛看人工智慧發展到什麼程度
※36氪首發 | 幫複雜的商業問題找到「最優解」,杉數科技完成4000萬元A輪融資