魯棒優化工具包 XProg和RSOME

2021-10-08 03:46:11 字數 2425 閱讀 9307

記錄一下魯棒優化學習內容。之前研究過一段時間的魯棒優化,但由於沒有資料也就沒有繼續研究下去。最近有時間,覺得魯棒優化比較有意思就繼續研究一下。主要結合xprog[1]和rsome[2]進行魯棒優化的學習和實際操作。

xprog工具箱針對隨機規劃、魯棒優化和分布魯棒優化(dro)設計的matlab工具包,優化問題求解需要呼叫cplex12.6或者依賴c/c++編譯器。新加坡國立大學的 peng xiong於2023年發布了1.0版本,其後沒再更新[3],對於xprog感興趣的可以通過文獻[1]獲得源**。

rsome是針對魯棒隨機優化(rso)設計的matlab工具箱,其也能夠處理一般的隨機規劃、魯棒優化和dro問題[2]。rso處理的是擁有不確定場景(多種場景)的不確定性優化問題,可以理解為,對前述的不確定性問題(例如dro),把其擴充套件到多種不同的場景,每種場景具有一定的概率。相反,如果把多場景退化為單場景,也就是最基本的dro問題。

xprog和rsome中關於場景(scenario)的定義和實現不太相同。xprog的場景實現方式主要針對於隨機規劃(stochastic programming),需要針對每個場景設定不同的引數和概率。對於dro而言,xprog其一般只關注於模糊集的設計,並且只針對於單一場景。而rso是對dro在多場景下的擴充套件,也即是把dro從單一的場景推廣到了多個不同的場景,並且每一場景的模糊集可以不相同。這也是rso的定義,多場景下的dro和隨機線性規劃。

xprog中大部分的功能和應用場景可以使用rsome改寫建模,因為xprog的作者同樣是rsome的作者之一,二者思想和**具有相似性。但是對於dro中具有巢狀子集(非全概率)的情況,自我感覺還無法使用rsome進行建模。

例如,xprog使用者手冊中例4.2.1中定義的模糊集:

f ==

1p=0.9p∈

[0.6

,0.7]}

\bbb=\begin &\tilde\in \bbb\\ &\bbb}}(\tilde)=0\\ &\bbb}}(\tilde^)\leq 1\\ \bbb \in \mathcal(\bbb):&\bbb\\leq 2\}=1\\ &\bbb\\leq 1\}=0.9\\ &\bbb\\leq 0.5\}\in [0.6,0.7]\\ \end

f=⎩⎪⎪⎪

⎪⎪⎪⎨

⎪⎪⎪⎪

⎪⎪⎧​

p∈p(

r):​

z~∈r

ep​(

z~)=

0ep​

(z~2

)≤1p

=1p=

0.9p

∈[0.

6,0.

7]​⎭

⎪⎪⎪⎪

⎪⎪⎬⎪

⎪⎪⎪⎪

⎪⎫​該種情況,rsome只能描述前四行表示的模糊集,後兩行的情況目前無法表述。

在使用rsome的時候遇到了一些錯誤,記錄一下。

(1)對xprog的例4.2.2的多產品報童問題,使用rsome進行改寫。rsome在建模模糊集時,利用p.suppset()新增集合約束時,需要一次性新增完成,不能分開新增,否則報錯(error using subsref, reference non-existent field objval, error in cplex/subsref)。

如上圖所示,在定義模糊集時分開定義會報錯。

解決辦法,將以上中的關於suppset的定義全部寫到乙個suppset()函式中,也即是一次性把不含期望的模糊集定義完成。

改用高版本的cplex和matlab,例如matlab2018和cplex12.8.0會報以下錯誤:(錯誤使用 cplexlink1280, cplex error: promotional version. problem size limits exceeded.)

由於問題求解規模超過cplex教育版的限制,此時解決方案有兩種,一是縮減求解問題規模,二是使用無限製版的cplex或者其他對應的求解器。但是在使用的算例中(xprog的例4.2.2多產品報童問題)決策變數的規模沒有超過10個,即便是引入輔助變數也沒有超過30個。自我感覺,可能在使用cplex求解時又涉及相關的問題轉換,導致求解變數增加,不知這樣理解是否正確,有待**。

參考文獻

[1]【學界】xprog: 簡單實用的魯棒優化(ro, dro)程式語言.

[2]rsome: robust stochastic optimization made easy. www.rsomerso.com

[3] peng xiong. xprog 1.0 users』 guide-matlab toolbox for optimization under uncertainty, 2016.10.17.

建立工作空間和工具包

工作空間 workspace 是乙個存放工程開發相關檔案的資料夾。常使用的是catkin編譯系統。典型的工作空間一般包含四個目錄空間 1.src 原始碼空間 source space 開發過程中最常用的資料夾,用來儲存所有ros功能包的原始碼檔案。2.build 編譯空間 build space 用...

SqlServer效能檢測和優化工具使用詳細

原文 sqlserver效能檢測和優化工具使用詳細 如果你的資料庫應用系統中,存在有大量表,檢視,索引,觸發器,函式,儲存過程,sql語句等等,又效能低下,而苦逼的你又要對其優化,那麼你該怎麼辦?哥教你,首先你要知道問題出在 如果想知道問題出在 並且找到他,咱們可以借助本文中要講述的效能檢測工具 s...

SqlServer效能檢測和優化工具使用詳細

原文 sqlserver效能檢測和優化工具使用詳細 如果你的資料庫應用系統中,存在有大量表,檢視,索引,觸發器,函式,儲存過程,sql語句等等,又效能低下,而苦逼的你又要對其優化,那麼你該怎麼辦?哥教你,首先你要知道問題出在 如果想知道問題出在 並且找到他,咱們可以借助本文中要講述的效能檢測工具 s...