国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

魯棒優(yōu)化入門(7)—Matlab+Yalmip兩階段魯棒優(yōu)化通用編程指南(下)

這篇具有很好參考價(jià)值的文章主要介紹了魯棒優(yōu)化入門(7)—Matlab+Yalmip兩階段魯棒優(yōu)化通用編程指南(下)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

0.引言

????????上一篇博客介紹了使用Yalmip工具箱求解單階段魯棒優(yōu)化的方法。這篇文章將和大家一起繼續(xù)研究如何使用Yalmip工具箱求解兩階段魯棒優(yōu)化(默認(rèn)看到這篇博客時(shí)已經(jīng)有一定的基礎(chǔ)了,如果沒有可以看看我專欄里的其他文章)。關(guān)于兩階段魯棒優(yōu)化列與約束生成算法的原理,之前的博客已經(jīng)詳細(xì)地介紹過了,這里就不再過多介紹,主要是結(jié)合實(shí)例來講解編程思路。這篇博客用到了兩個(gè)算例,1個(gè)是兩階段魯棒優(yōu)化問題和列與約束生成算法的開山鼻祖[1],另一個(gè)是電氣專業(yè)中兩階段魯棒優(yōu)化問題最熱門的文章之一[2],相信大家在網(wǎng)上見到過無數(shù)號(hào)稱完美復(fù)現(xiàn)的代碼,但實(shí)際上大部分都是有問題的(包括我自己早期寫的代碼,也是被網(wǎng)上的代碼帶歪了,后面理解慢慢深入才發(fā)現(xiàn)問題所在)。

????????求解兩階段魯棒優(yōu)化問題一共有兩個(gè)難點(diǎn),一是求解max-min或者min-max形式的子問題,其實(shí)就是求解一個(gè)單階段魯棒優(yōu)化,上一篇博客我已經(jīng)非常詳細(xì)地介紹了求解方式,借助Yalmip工具箱,共有三種不同的方式可以解決。二是主問題和子問題的迭代求解,也就是列與約束生成算法(C&CG)的實(shí)現(xiàn)。很多代碼在復(fù)現(xiàn)C&CG算法時(shí)并沒有向主問題同時(shí)添加列(變量)和約束,這也是代碼中最常見的問題。針對(duì)這兩個(gè)難點(diǎn),我將用兩個(gè)不同的算例詳細(xì)地進(jìn)行講解。

????????此外,文獻(xiàn)[1]和[2]中都是采用了先將約束條件寫成緊湊的矩陣形式,然后再對(duì)子問題進(jìn)行處理的方式,很多朋友和我反映這部分太難處理了,實(shí)際問題的約束建模過程中經(jīng)常包括循環(huán)語句,想要轉(zhuǎn)成矩陣形式確實(shí)很不容易。這篇文章中我將分別采用兩種不同的方式求解魯棒優(yōu)化。一是采用原始的約束條件,省去將約束條件轉(zhuǎn)為矩陣形式的步驟,這種方式數(shù)學(xué)公式可能會(huì)更繁瑣,但比起矩陣形式的轉(zhuǎn)換,理解起來會(huì)更容易一些。二是采用矩陣形式進(jìn)行編程,在博客中我教大家一種非常簡單就能將約束寫為矩陣形式的方法,文中只是介紹了如何使用,之后也會(huì)單獨(dú)寫博客對(duì)此詳細(xì)展開。

????????總之,這篇博客干貨滿滿,可以認(rèn)真通讀一遍,跟著博客中的思路親自動(dòng)手使用Matlab+Yalmip實(shí)現(xiàn)兩階段魯棒優(yōu)化的編程(博客中提到的所有例子我都提供了相應(yīng)的代碼)。相信大家理解后,面對(duì)任何類型的兩階段魯棒優(yōu)化問題都能迅速使用類似的方法進(jìn)行解決。

????????博客中主要包含8大內(nèi)容:

????????①.拿到一個(gè)復(fù)雜的兩階段魯棒優(yōu)化問題分析步驟和方法。

????????②.采用Yalmip工具箱中的uncertain函數(shù)魯棒優(yōu)化模塊求解兩階段魯棒優(yōu)化的子問題。

????????③.Yalmip工具箱中的魯棒優(yōu)化模塊和常規(guī)的求解思路有什么異同。

????????④.使用KKT條件求解兩階段魯棒優(yōu)化的子問題,并使用C&CG算法進(jìn)行迭代求解。

????????⑤.使用對(duì)偶變換求解兩階段魯棒優(yōu)化的子問題,并使用C&CG算法進(jìn)行迭代求解。

????????⑥.采用Yalmip工具箱的內(nèi)置函數(shù),將線性約束寫成緊湊矩陣形式的方法。

????????⑦.矩陣形式的兩階段魯棒優(yōu)化問題,如何快速寫出子問題內(nèi)層優(yōu)化的KKT條件,并使用C&CG算法進(jìn)行迭代求解。

????????⑧.矩陣形式的兩階段魯棒優(yōu)化問題,如何快速寫出子問題內(nèi)層優(yōu)化的對(duì)偶問題,并使用C&CG算法進(jìn)行迭代求解。

????????由于博客篇幅較長,將分上下兩篇發(fā)布,其中上篇使用的是文獻(xiàn)[1]中的算例,包含上述①-⑤的內(nèi)容。下篇使用文獻(xiàn)[2]中的算例,包含上述①、④、⑥-⑧的內(nèi)容。

????????這篇博客是下篇的內(nèi)容。

1.兩階段魯棒優(yōu)化基本形式

????????如文獻(xiàn)[1]中所述,標(biāo)準(zhǔn)的兩階段魯棒優(yōu)化問題的形式為:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????其中,y為第一階段決策變量,u為不確定變量,x為第二階段決策變量。和分析單階段魯棒優(yōu)化問題的五個(gè)特征一樣,拿到一個(gè)復(fù)雜的兩階段魯棒優(yōu)化問題先不用慌,按照下面的步驟進(jìn)行分析即可:

????????1)確定第一階段決策變量有哪些,將其與變量y對(duì)應(yīng)。

????????2)確定第二階段決策變量有哪些,將其與變量x對(duì)應(yīng)。

????????3)確定不確定變量有哪些,將其與變量u對(duì)應(yīng)。

????????4)確定優(yōu)化問題中不確定集合的形式,并考慮是否可以直接使用Yalmip中的魯棒優(yōu)化模塊進(jìn)行求解。

????????5)確定目標(biāo)函數(shù)是否有僅包含第一階段決策變量的項(xiàng),如果有的話可以單獨(dú)拿出來。

????????6)確定子問題的目標(biāo)函數(shù),將其與魯棒優(yōu)化的標(biāo)準(zhǔn)形式相對(duì)應(yīng)。

????????7)確定約束條件,考慮是否包含非線性約束,是否需要線性化。

????????8)求解max-min或者min-max類型的子問題

????????9)使用迭代方式,將子問題產(chǎn)生的變量和約束不斷添加到主問題中,最終得到最優(yōu)解。

????????下面分別以文獻(xiàn)[1]和[2]中的優(yōu)化問題進(jìn)行講解說明:

2.兩階段魯棒運(yùn)輸問題編程實(shí)戰(zhàn)

????????更多內(nèi)容,請(qǐng)關(guān)注Matlab+Yalmip兩階段魯棒優(yōu)化通用編程指南(上):

魯棒優(yōu)化入門(6)—Matlab+Yalmip兩階段魯棒優(yōu)化通用編程指南(上)

3.微電網(wǎng)兩階段魯棒優(yōu)化調(diào)度編程實(shí)戰(zhàn)

????????第二個(gè)算例來源于文獻(xiàn)[2],其兩階段魯棒優(yōu)化問題的形式為:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

s.t.

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????我之前寫過一篇博客解析這篇論文,但是使用的是緊湊的矩陣形式。這次博客我先嘗試使用一般形式的約束進(jìn)行求解,方便大家體會(huì)采用矩陣形式求解兩階段魯棒優(yōu)化的方便之處。

????????首先逐步進(jìn)行分析:

????????1)確定第一階段決策變量有哪些。

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????2)確定第二階段決策變量有哪些。

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????3)確定不確定變量有哪些。

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????4)確定優(yōu)化問題中不確定集合的形式,并考慮是否可以直接使用Yalmip中的魯棒優(yōu)化模塊進(jìn)行求解。

????????該優(yōu)化問題的不確定集中為箱式不確定集,但包含0-1變量,不可以直接使用Yalmip中的魯棒優(yōu)化模塊進(jìn)行求解。

????????5)確定目標(biāo)函數(shù)是否有僅包含第一階段決策變量的項(xiàng),如果有的話可以單獨(dú)拿出來。

????????該優(yōu)化問題第一階段和第二階段目標(biāo)函數(shù)相同。

????????6)確定子問題的目標(biāo)函數(shù),將其與兩階段魯棒優(yōu)化的標(biāo)準(zhǔn)形式相對(duì)應(yīng)。

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????7)確定約束條件,考慮是否包含非線性約束,是否需要線性化。

????????子問題中的約束條件均為線性,但不確定變量的約束條件包含0-1變量,則含變量的優(yōu)化問題并不滿足強(qiáng)對(duì)偶定理,KKT條件和對(duì)偶變換都無法適用。那是不是無法使用常規(guī)的方法求解單階段魯棒優(yōu)化形式的子問題呢?

????????當(dāng)然不是,如果出現(xiàn)這種情況,我們就可以把不確定變量寫在外層。那么對(duì)于子問題的內(nèi)層優(yōu)化問題來說,變量是一個(gè)確定值,即使其中包含0-1變量,也只是一個(gè)常數(shù)。實(shí)際上子問題的內(nèi)層優(yōu)化并不包含0-1變量,因此還是可以使用常規(guī)的KKT條件或強(qiáng)對(duì)偶定理進(jìn)行求解。但是由于不確定變量中包含0-1變量,直接通過uncertain函數(shù)直接使用Yalmip魯棒優(yōu)化模塊的方法不可行。

????????分析完成后,分別使用KKT條件和強(qiáng)對(duì)偶定理求解子問題,具體如下:

3.1?KKT條件求解子問題

????????為了方便求解,我們首先把子問題的內(nèi)層min優(yōu)化問題寫出來,并將所有約束寫成≤0的形式或=0的形式:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????根據(jù)拉格朗日函數(shù)可以寫出內(nèi)層優(yōu)化的KKT條件。

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????其中表示上三角全為1,主對(duì)角線以下全為0的24階方陣,即:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????要想求解這個(gè)問題,還需要寫出引入16組0-1變量,使用大M法將16組互補(bǔ)松弛條件轉(zhuǎn)為線性約束,具體如下:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????其中q1-q16都是0-1變量,qi和λi的維度相同。

????????將內(nèi)層優(yōu)化的KKT方程組添加到外層優(yōu)化中,就可以將雙層優(yōu)化問題轉(zhuǎn)為單層優(yōu)化問題。經(jīng)過上面的處理,便順利將max-min形式的子問題轉(zhuǎn)為混合整數(shù)線性規(guī)劃問題,并可以使用Yalmip進(jìn)行求解,代碼在壓縮包中的Problem2文件夾中,運(yùn)行Problem2_subproblem_KKT1.m文件即可得到結(jié)果。

????????PS:假設(shè)第一階段變量的取值:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????運(yùn)行結(jié)果如下:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????從運(yùn)行結(jié)果可以看出,使用KKT條件可以正常求出最優(yōu)解,但由于引入了非常多的拉格朗日乘子和相應(yīng)的0-1變量,對(duì)于初始的約束形式手動(dòng)寫KKT條件非常麻煩,一旦出錯(cuò)也很難發(fā)現(xiàn)問題在哪。

3.2 將兩階段魯棒優(yōu)化問題寫成矩陣形式

????????對(duì)于約束條件比較復(fù)雜的兩階段魯棒優(yōu)化問題,先把目標(biāo)函數(shù)和約束條件寫成緊湊的矩陣形式再使用KKT條件或?qū)ε甲儞Q求解會(huì)方便很多。文獻(xiàn)[1]中將優(yōu)化問題寫成了緊湊的矩陣形式,但存在一定問題,我在此重新梳理一遍。

????????首先,將優(yōu)化問題寫成緊湊的矩陣形式(等式約束都改寫成不等式形式,例如x=0可以寫成x≥0,-x≥0):

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????其中,第一階段決策變量x是一個(gè)48維的列向量:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????第二階段決策變量y是一個(gè)192維的列向量:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????c和y的維度一樣,但c是一個(gè)192維的常數(shù)列向量:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????那么如何確定矩陣G,矩陣E,矩陣M,向量h的取值呢?之前的博客中我采用了手動(dòng)推導(dǎo)的方式(微電網(wǎng)兩階段魯棒優(yōu)化經(jīng)濟(jì)調(diào)度方法matlab代碼_)。

????????這次我來教大家使用Yalmip工具箱中的函數(shù)depends、getbase、getbasematrix、see寫出約束矩陣取值的方法,函數(shù)的語法可以參考官方文檔。

????????下面是一個(gè)簡單的線性規(guī)劃問題:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????我用這個(gè)例子來幫助大家體會(huì)depends、getbase、getbasematrix、see等函數(shù)的用法,代碼如下:

clc
clear
close all
warning off
yalmip('clear')
 
%% 決策變量
sdpvar x1 x2
%% 目標(biāo)函數(shù)
obj = x1 + 2*x2;
 
z = [-2*x1 + 3*x2 - 12 ;
    x1 + x2 - 14;
    -3*x1 + x2 + 3;
    3*x1 + x2 - 30];
 
x1_index = depends(x1)
x2_index = depends(x2)
M1 = full(getbase(z))
M2 = full(getbasematrix(z,depends(x1)))
M3 = full(getbasematrix(z,depends(x2)))
see(z)

????????運(yùn)行結(jié)果如下:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????觀察可知,depends函數(shù)返回的是變量在Yalmip工具箱中的編號(hào)getbase函數(shù)以稀疏矩陣的形式返回sdpvar變量中的常數(shù)項(xiàng)系數(shù)以及變量系數(shù),getbasematrix函數(shù)以稀疏矩陣的形式返回sdpvar變量中指定編號(hào)的變量系數(shù),see函數(shù)直接在命令行輸出sdpvar變量中的常數(shù)項(xiàng)變量系數(shù)以及用到的變量編號(hào)。

????????假設(shè)我們想把上面的優(yōu)化問題寫成緊湊的矩陣形式:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????求矩陣A、b、c,然后使用矩陣形式求解優(yōu)化問題的代碼如下:

clc
clear
close all
warning off
yalmip('clear')
 
%% 決策變量
sdpvar x1 x2
 
%% 求系數(shù)矩陣
obj0 = x1 + 2*x2;
 
z = [-2*x1 + 3*x2 - 12 ;
    x1 + x2 - 14;
    -3*x1 + x2 + 3;
    3*x1 + x2 - 30];
 
M1 = full(getbase(z));
M2 = full(getbase(obj0));
index = depends([x1 x2]);
A = M1(:,index + 1);
b = -M1(:,1);
c = M2(index + 1)';
 
%% 矩陣形式的目標(biāo)函數(shù)
x = [x1;x2];
obj = c'*x;
C = [A*x <= b , x >= 0];
 
%% 求解優(yōu)化問題
ops = sdpsettings('verbose', 3, 'solver', 'gurobi');
sol = optimize(C , -obj ,ops);
 
%% 判斷求解是否成功
if sol.problem == 0
    disp('求解成功!!!');
    x = value(x)
else
    disp(['求解失敗,原因?yàn)?,sol.info]);
end

????????運(yùn)行結(jié)果如下:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????采用相同的方法,將文獻(xiàn)[1]所提確定性優(yōu)化問題改寫成矩陣形式求解的代碼在壓縮包中的Problem2文件夾中,運(yùn)行Problem2_matrix.m文件即可得到結(jié)果。

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

3.3 矩陣形式的C&CG算法與KKT條件求解

????????原始子問題為:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????內(nèi)層優(yōu)化中變量x和不確定變量u都可以看作常數(shù),其拉格朗日函數(shù)可以寫作:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????其中,π和θ都是拉格朗日乘子。根據(jù)拉格朗日函數(shù)進(jìn)一步寫出KKT條件

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????這就是初始的KKT條件,可以進(jìn)一步化簡。首先根據(jù)式(1)和(4)可以得到:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????然后,根據(jù)式(1)和(3)可以得到:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????經(jīng)過這樣處理,就可以消去變量θ,減少?zèng)Q策變量的數(shù)目,得到:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????其中包含兩項(xiàng)互補(bǔ)松弛條件,可以通過引入0-1變量,使用大M法轉(zhuǎn)換為線性約束:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????將KKT條件添加到子問題的外層優(yōu)化中,子問題便轉(zhuǎn)為:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????子問題變成了一個(gè)混合整數(shù)線性規(guī)劃,可以采用求解器有效地進(jìn)行求解。

????????再復(fù)習(xí)一下,我們把文獻(xiàn)[2]中所提兩階段魯棒優(yōu)化分解成一個(gè)主問題MP2_KKT和一個(gè)子問題SP2_KKT:

????????主問題MP2_KKT

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????子問題SP2_KKT

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????使用KKT條件+C&CG算法求解該兩階段魯棒優(yōu)化問題的代碼在壓縮包中的Problem2文件夾中,運(yùn)行Problem2_KKT.m文件即可得到結(jié)果。

3.4 矩陣形式的C&CG算法與對(duì)偶變換求解

????????原始子問題為:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????其內(nèi)層優(yōu)化min問題的對(duì)偶問題可以寫做:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????將其與外層max問題合并得到:??

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????該問題的目標(biāo)函數(shù)中包含的非線性項(xiàng),可以進(jìn)行線性化,也可以直接使用求解器進(jìn)行求解。為了方便起見,我直接使用了求解器進(jìn)行求解。但是由于問題規(guī)模比較大,求解時(shí)間會(huì)比較長(大概要3小時(shí)左右才能得到最優(yōu)解)。

????????首先,將不確定變量u寫成:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????式中,符號(hào)表示矩陣的Hadamard乘積(哈達(dá)瑪積 Hadamard Product - 知乎),即對(duì)應(yīng)元素相乘,對(duì)應(yīng)于matlab中的“.*”符號(hào)。在此基礎(chǔ)上,可以對(duì)原優(yōu)化問題的目標(biāo)函數(shù)進(jìn)行化簡:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????兩階段魯棒優(yōu)化問題可以分為主問題和子問題:

????????對(duì)偶變換版本主問題MP2_dual

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????對(duì)偶變換版本子問題SP2_dual

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????使用C&CG算法與對(duì)偶變換求解兩階段魯棒優(yōu)化的步驟概括如下:

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

yalmip怎么查看對(duì)偶乘子,魯棒優(yōu)化入門,Yalmip工具箱使用教程,電氣期刊論文復(fù)現(xiàn),matlab,兩階段魯棒優(yōu)化,yalmip,KKT條件,強(qiáng)對(duì)偶定理

????????使用對(duì)偶變換+C&CG算法求解該兩階段魯棒優(yōu)化問題的代碼在壓縮包中的Problem2文件夾中,運(yùn)行Problem2_dual.m文件即可得到結(jié)果。

參考文獻(xiàn):

[1]Zeng B, Zhao L. Solving two-stage robust optimization problems using a column-and-constraint generation method[J]. Operations Research Letters, 2013, 41(5): 457-461.

[2]劉一欣,郭力,王成山.微電網(wǎng)兩階段魯棒優(yōu)化經(jīng)濟(jì)調(diào)度方法[J].中國電機(jī)工程學(xué)報(bào),2018,38(14):4013-4022+4307.

PS:

????????完整資料可以私信博主獲取。文章來源地址http://www.zghlxwxcb.cn/news/detail-793736.html

到了這里,關(guān)于魯棒優(yōu)化入門(7)—Matlab+Yalmip兩階段魯棒優(yōu)化通用編程指南(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包