學界丨XPROG:簡單實用的魯棒優(yōu)化RO, DRO編程語言(魯棒優(yōu)化方法)
首發(fā)于微信公眾號『運籌OR帷幄』
文章作者:湯勤深
責任編輯: 張帆
此文簡單介紹AROMA的1.0版本:XProg。希望可以幫做魯棒優(yōu)化相關的同行們省去手動求對偶和Robust Counterpart,然后吭哧吭哧編程的麻煩。后臺回復關鍵詞”XProg“可以獲取XProg軟件下載鏈接,回復”XProg程序“即可獲取文中出現的全部代碼。
本文將簡單介紹XProg(內容主要來自Xprog的用戶手冊)。Julia語言里有為魯棒優(yōu)化開發(fā)的JuMPeR。個人使用體驗是XProg更簡潔,功能更齊全:可以直接編程最新的分布式魯棒優(yōu)化(DRO)的相關模型,而JuMPeR主要適用于傳統(tǒng)的魯棒優(yōu)化模型,而且似乎現在處于無人維護的狀態(tài)。
Julia入門科普請出門左轉到 @覃含章 的文章:Julia:簡單易用的數值計算/優(yōu)化編程語言
XProg由Dr. Peng Xiong開發(fā),旨在用最簡單直觀的語言進行魯棒優(yōu)化模型的求解。最新版本的AROMA由Prof. Melvyn Sim, Dr. Peng Xiong 和Dr. Zhi Chen開發(fā)。XProg只有Matlab版;AROMA將會增加Python版本。兩者都可通過調用Gurobi,Cplex, MOSEK等求解器進行求解。
XProg
先上一個多產品的分布式魯棒報童模型的求解,直觀感受一下。
其中,模糊集(ambiguity set)
為,
求解程序如下:
對于里面的extended模糊集和extended LDR的概念,請參考
Adaptive Distributionally Robust Optimization
pubsonline.informs.org
由上面的例子可以看出,XProg提供了一種照著原始模型編出來的簡潔高效編程方法。它已經把求對偶求robust counterpart等步驟全部內嵌到程序里去了。這大大地減少了之前做RO或者DRO的問題的時候,往往得先手動求對偶,然后再用C, C , Java,Matlab等求解的那份酸爽!
以下直接舉例來闡明XProg的用法,具體語法請參閱XProg包里面的“用戶手冊”。以下所舉的例子大都在安裝包中的“examples”。
1、線性規(guī)劃 (Linear Programming)
對于任意的線性規(guī)劃:
實現起來特別方便:
比如下面這個線性規(guī)劃:
只需要在程序開始賦值:
解出來結果如下:
2、混合整數規(guī)劃(Mixed Integer Programming)
對于混合整數規(guī)劃,只需在定義變量時注明是二進制變量(binary variable)還是整數變量就可:
3、隨機規(guī)劃
XProg 還可以對隨機規(guī)劃問題進行求解。不同場景下的決策可以用cell array實現,舉例如下(編者實在太懶。。。問題描述請參考用戶手冊第15頁):
求解程序如下:
求解結果如下:
4、經典魯棒優(yōu)化模型求解
舉例多階段庫存優(yōu)化模型(問題描述請參考用戶手冊22頁):
實現程序如下:
5、分布式魯棒優(yōu)化模型求解
詳見文首的例子。
鑒于XProg很快就要被功能強大N多的AROMA取代,本文特別精簡地介紹了XProg這個簡單實用的魯棒優(yōu)化(RO, DRO)編程語言。AROMA進一步對XProg進行了精簡,但是功能卻更加強大了。等AROMA正式上線之后,再寫一篇詳細的入門介紹文章。
參考文獻:
D. Bertsimas and M. Sim. 2004. Price of Robustness. Operations Research, 52(1), 35-53.
W. Wiesemann, D. Kuhn, M. Sim. 2014. Distributionally Robust Convex Optimization. Operations Research, 62(6), 1358-1376.
D. Bertsimas, M. Sim and M. Zhang 2017. A Practically Efficient Approach for Solving Adaptive Distributionally Robust Linear Optimization Problems. Forthcoming in Management Science.
在微信公眾號后臺回復“XProg” 可以獲得本文所有代碼和XProg軟件包的下載鏈接。
原文鏈接:https://mp.weixin.qq.com/s/q0x9pXz7p7OciWqBOIV5JQ
版權說明:本文由『運籌OR帷幄』編譯整理,不作為商業(yè)用途,如有內容侵權,我們將隨時刪除。
歡迎查看原文,獲取更多訊息!
版權聲明:本文內容由互聯網用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 舉報,一經查實,本站將立刻刪除。