目錄
一 兩階段魯棒優(yōu)化理論
二 兩階段魯棒優(yōu)化程序?qū)崿F(xiàn)
2.1 主/子問題變量要分清
2.2 對(duì)偶問題
2.3 線性化處理
2.4 編程小技巧
2.5 迭代問題
三 程序運(yùn)行效果
視頻講解
兩階段魯棒優(yōu)化方法是電力專業(yè)分析分布式發(fā)電(風(fēng)/光)或者負(fù)荷不確定性的核心方法之一,分析兩階段魯棒優(yōu)化方法常用的就是C&CG和benders,由于CCG算法中子問題向主問題返回原切平面,相較返回對(duì)偶切平面的benders分解法效率更高,因此本文主要介紹CCG算法,根據(jù)多年編寫程序經(jīng)驗(yàn),兩階段魯棒優(yōu)化常遇到的問題無外乎以下幾種:
1.對(duì)偶問題不會(huì)寫
2.不同階段變量不知道怎么用程序表達(dá)
3.不會(huì)用matlab編寫主函數(shù)迭代問題
4.迭代過程不收斂
5.迭代第二次UB-LB就等于0
為了敘述清晰性更強(qiáng),本文以陳哲《計(jì)及需求側(cè)響應(yīng)日前—日內(nèi)兩階段魯棒備用優(yōu)化》文章作為對(duì)象,詳細(xì)說一下具體編程方法。
一 兩階段魯棒優(yōu)化理論
兩階段魯棒優(yōu)化基本形式及求解方法如下:
二 兩階段魯棒優(yōu)化程序?qū)崿F(xiàn)
2.1 主/子問題變量要分清
在兩階段魯棒優(yōu)化模型構(gòu)建過程中一定要分清第一階段變量和第二階段變量以及不確定變量,如陳哲《計(jì)及需求側(cè)響應(yīng)日前—日內(nèi)兩階段魯棒備用優(yōu)化》文章中定義中在緊湊型改寫過程中,明確了兩階段變量內(nèi)容:
而且還要清楚一件事情,主問題階段是需要不斷增加對(duì)應(yīng)子問題的變量的,也就是主問題不僅有自己存在的部分變量,同樣存在子問題變量和約束不斷疊加。具體迭代方式可以根據(jù)循環(huán)次數(shù)來設(shè)定變量維度,參考程序如下:
for?kd=1:kl%逐步增加變量開始循環(huán)
cons=[cons,Q1*x0s(:,kd)+P1*t0s(:,kd)==G1,x0s>=0];%每次迭代需滿足的約束內(nèi)容,下同
cons=[cons,Q2*t0s(:,kd)<=G2];
cons=[cons,Q3*t0s(:,kd)<=G3];
cons=[cons,Q4*x0s(:,kd)<=G4];
cons=[cons,Q5*x0s(:,kd)<=G5];
cons=[cons,Q6*x0s(:,kd)-T6*Z0(:,kd)<=G6];
cons=[cons,Q7*x0s(:,kd)<=G7];
cons=[cons,yita>=Ar*x0s(:,kd)+Ap*Z0(:,kd)+Ccur*sum(Aw)];
end
該部分為主問題中的一部分,因此對(duì)于不確定性變量已經(jīng)是一個(gè)確定性的數(shù)值,有些變量根據(jù)循環(huán)次數(shù)要不斷保存每次迭代計(jì)算結(jié)果,確保精準(zhǔn)的把子問題的最惡劣運(yùn)行工況刻畫出來(由于該部分變量及約束含義較為復(fù)雜,難以直接注釋清楚,因此采用專門文檔進(jìn)行詳述)。
2.2 對(duì)偶問題
因?yàn)樽訂栴}是max-min雙層優(yōu)化問題,難以通過求解器進(jìn)行直接求解,這個(gè)時(shí)候就需要通過對(duì)偶方法將優(yōu)化問題同向化,即將min部分通過強(qiáng)對(duì)偶轉(zhuǎn)化為max問題。
可以注意到一個(gè)細(xì)節(jié),在陳哲《計(jì)及需求側(cè)響應(yīng)日前—日內(nèi)兩階段魯棒備用優(yōu)化》中第一階段是存在狀態(tài)變量的,到日內(nèi)階段變量就去掉了狀態(tài)變量,因?yàn)閺?qiáng)對(duì)偶是有條件的,布爾型變量是不滿足強(qiáng)對(duì)偶條件的(有興趣可以證明)。
對(duì)偶問題轉(zhuǎn)換過程如下:
?引入松弛變量,得
?部分參考程序如下:
%對(duì)偶問題約束
cons2=[];
cons2=[cons2,lam1'*Q1+lam4'*Q4+lam5'*Q5+lam6'*Q6+lam7'*Q7<=Ar];
cons2=[cons2,lam1'*P1+lam2'*Q2+lam3'*Q3<=0];
cons2=[cons2,lam2<=0,lam3<=0,lam4<=0,lam5<=0,lam6<=0,lam7<=0];
%不確定變量約束
T1=[eye(24) eye(24)];
cons2=[cons2,T1*Z<=1];
cons2=[cons2,sum(Z)<=8];
2.3 線性化處理
在文章中,存在大M法進(jìn)行嚴(yán)格線性化過程,在實(shí)際編程過程中,對(duì)于該類簡單非線性可以直接通過matlab+cplex進(jìn)行求解,這里就涉及到y(tǒng)almip(‘clear’)的妙用了,親測,線性化后和原表達(dá)式通過程序得到的結(jié)果完全一樣。
2.4 編程小技巧
在編程過程中,盡量不要把所有代碼寫出來再運(yùn)行調(diào)試,尤其是對(duì)于復(fù)雜的代碼,兩階段魯棒優(yōu)化程序,可以通過將對(duì)偶問題求解清楚,調(diào)試沒問題之后再接入主程序中,就像搭積木一樣,每塊功能沒有問題之后再搭在一起,調(diào)試的難度就大大降低。
2.5 迭代問題
網(wǎng)上流傳很多迭代到2就一致的程序,大家擦亮眼睛,據(jù)我所示,這種不是模型和參數(shù)的問題,就是編程有問題,還是要好好理解各個(gè)變量在不同階段迭代關(guān)系。
還有一個(gè)很好的編程習(xí)慣,就是盡量每句話后都標(biāo)注一下,像這樣:
%%---------常量參數(shù)定義------------
T=24;%時(shí)間參數(shù)24小時(shí)
ng=3;%常規(guī)機(jī)組數(shù)量
n=6;%節(jié)點(diǎn)數(shù)量
nb=11;%支路數(shù)量
baseMVA=100;%基準(zhǔn)容量
%常數(shù)
Csrm=20;%C開頭為成本系數(shù) 目標(biāo)函數(shù)系數(shù) 備用向下
Csrp=20;%備用向上
Csidr=40;%idr
Ccur=20;%棄風(fēng)懲罰成本系數(shù)
linobj=zeros(1,312);%目標(biāo)函數(shù)系數(shù)矩陣臨時(shí)變量
caseName=case6ww;%節(jié)點(diǎn)系統(tǒng)
ig=[1,2,3];%常規(guī)機(jī)組安裝位置
iw=5;%風(fēng)機(jī)安裝位置
三 程序運(yùn)行效果
其他程序圖形不便展示,具體操作文檔目錄如下:???????
??文章來源:http://www.zghlxwxcb.cn/news/detail-721866.html
視頻講解
電網(wǎng)兩階段魯棒優(yōu)化調(diào)度matlab文章來源地址http://www.zghlxwxcb.cn/news/detail-721866.html
到了這里,關(guān)于電網(wǎng)兩階段魯棒優(yōu)化調(diào)度模型(含matlab程序)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!