標籤:

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輪融資

TAG:CPLEX | 運籌學 |