標籤:

OPL建模語言從入門到放棄(四)

OPL是ILOG團隊為運籌學研究者定製的一種優化建模語言,語法相對簡單,接近運籌學研究者習慣的數學表達。

導航地址

OPL建模語言從入門到放棄(一) 基本組成

OPL建模語言從入門到放棄(二) 數據結構

OPL建模語言從入門到放棄(三) 數據源

OPL建模語言從入門到放棄(四) 決策變數

OPL建模語言從入門到放棄(五) 表達式

OPL建模語言從入門到放棄(六) 約束條件

OPL建模語言從入門到放棄(七) 參數

OPL建模語言從入門到放棄(八) 預處理語句

下文描述了OPL的決策變數,即決策中需要重複使用的變數。

決策變數

是什麼

決策變數是在最優化問題中的未知變數,它在定義域範圍內取值。

OPL模型就是尋找決策變數,使得決策變數滿足約束條件並取得目標函數最值得過程。

單獨的決策變數

在聲明決策變數時需要聲明變數的類型。

// dvar 數據類型 數據名稱dvar int averageDelay

可以聲明變數的取值範圍。

// dvar 數據類型 數據名稱 in Rangedvar int averageDelay in 0..maxDelay;

部分取值範圍可以簡寫。

dvar int+ x; // 非負整數dvar float+ y; // 非負小數dvar boolean z; // 布爾值// 與下面等價dvar int x in 0..maxint;dvar float y in 0..infinity;dvar int z in 0..1;

數組中的決策變數

當數組內決策變數取值範圍相同時,可以使用集合作為索引。

tuple Route { City orig; City dest} {Route} routes = ...; dvar int transp[routes] in 0..100;

當數組內決策變數取值範圍不同時,只能通過普通聲明限定。

tuple Route { City orig; City dest; }{Route} routes = ...; int capacity[routes] = ...; dvar int transp[r in routes] in 0..capacity[r];

決策變數表達式

如果一個決策變數是由其他決策變數計算而來的,那麼就應當寫成表達式形式。

// dexpr 數據類型 數據名稱 = 決策變數運算dexpr int slack[i in r] = x[i] - y[i];

推薦閱讀:

python 如何調用Cplex?

TAG:CPLEX | 運籌學 |