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];
推薦閱讀: