目錄
1?主要內(nèi)容
2?部分程序
3?部分結(jié)果
4 下載鏈接
1?主要內(nèi)容
該程序參考《光熱電站促進(jìn)風(fēng)電消納的電力系統(tǒng)優(yōu)化調(diào)度》光熱電站模型,主要做的是考慮N-k安全約束的含義風(fēng)電-光伏-光熱電站的電力系統(tǒng)優(yōu)化調(diào)度模型,從而體現(xiàn)光熱電站在調(diào)度靈活性以及經(jīng)濟(jì)性方面的優(yōu)勢。同時(shí)代碼還考慮了光熱電站對風(fēng)光消納的作用,對比了含義光熱電站和不含光熱電站下的棄風(fēng)棄光問題,同時(shí)還對比了考慮N-k約束下的調(diào)度策略區(qū)別。以14節(jié)點(diǎn)和118節(jié)點(diǎn)算例為例,對模型進(jìn)行了系統(tǒng)性的測試,復(fù)現(xiàn)效果良好,是學(xué)習(xí)N-k約束以及光熱電站調(diào)度的必備程序!程序采用matlab+cplex(mosek/gurobi)進(jìn)行求解,可以選擇已經(jīng)安裝的求解器進(jìn)行求解。
- 程序算例
程序?qū)τ?18節(jié)點(diǎn)系統(tǒng)采用了四個(gè)算例進(jìn)行對比,14節(jié)點(diǎn)系統(tǒng)有3種算例對比,并增加了棄風(fēng)量的對比程序。
- 程序模型
- 程序亮點(diǎn)
- 采用光熱電站模型,也是最近研究比較熱的一個(gè)方向。
- 采用轉(zhuǎn)移分布因子矩陣處理潮流問題,這也是很多文獻(xiàn)中都采用的方法。?
2?部分程序
clc; clear; close all; % 關(guān)閉所有已打開的繪圖窗口 %% 參數(shù)設(shè)定 NT = 24; % 時(shí)間范圍 CoeffReseve_load = 0.03; CoeffReserve_VRE = 0.05; yita_TES = 0.98; yita_PB = 0.415; % 文章里Table 2的數(shù)據(jù) Capacity_TES_CSP = 0; initial_TES_t0 = 0.5; initial_TES_t1 = 0.78; TES_initial = 0.5; beta_Load = 3*10e3; mpc = case14_1; % 載入數(shù)據(jù) matpower 數(shù)據(jù)格式 %% 有功負(fù)荷 24h所有節(jié)點(diǎn)總的 % mpc.load = [ % 2842.42 3020.2 3296.96 3444.44 3607.07 3891.91 4070.7 4295.95 4476.76 4661.61 4859.59 5077.77 ... % 4717.17 4519.19 4301.01 3995.95 3703.03 3806.06 4037.37 4063.63 3721.21 3245.45 3097.97 2827.27 % ]/6.3; ? mpc.load = [ 683.42 792.2 896.96 1044.44 1087.07 1121.91 1200.7 1235.95 1326.76 1461.61 1489.59 1577.77 ... 1417.17 1219.19 1101.01 1075.95 903.03 1186.06 1237.37 1463.63 1221.21 1005.45 827.97 807.27 ]/2; ? ? mpc.P_RE = [0.00 0.00 0.00 0.00 0.00 0.00 15.76 43.17 82.35 109.44 122.55 146.10 ...% PV 126.66 86.05 60.05 52.82 25.78 4.28 0.00 0.00 0.00 0.00 0.00 0.00 100.26 133.95 147.28 134.11 170.52 159.44 138.55 72.83 58.83 73.37 79.90 80.54 ... % Wind 91.96 101.68 121.49 122.93 133.11 162.44 130.95 133.25 151.26 139.33 120.60 90.33 ]*1; % 可再生能源 24小時(shí)數(shù)據(jù)(實(shí)際發(fā)電量) %% 電網(wǎng)相關(guān)名稱 baseMVA = mpc.baseMVA; bus = mpc.bus; gen = mpc.gen; branch = mpc.branch; gencost = mpc.gencost; RE = mpc.RE; CSP = mpc.CSP; P_RE = mpc.P_RE; ? N = length(bus(:,1)); % 網(wǎng)絡(luò)中所有節(jié)點(diǎn)數(shù) N_Br = length(branch(:,1));% 線路數(shù) N_Gen = length(gen(:,1)); % 火電發(fā)電機(jī)組數(shù) N_RE = length(RE(:,1)); % 可再生能源節(jié)點(diǎn)機(jī)組數(shù) N_CSP = length(CSP(:,1)); % CSP發(fā)電站數(shù) ? % 常規(guī)機(jī)組相關(guān)數(shù)據(jù)提取, 取數(shù)據(jù)矩陣中的列向量 和功率有功的項(xiàng),均需標(biāo)幺值化,以便運(yùn)算和求解 P_Gen_max = gen(:,9)/baseMVA; P_Gen_min = gen(:,10)/baseMVA; type_Gen = gen(:,22); P_Gen_up = gen(:,23) /baseMVA; P_Gen_down = gen(:,24) /baseMVA; T_Gen_min_on = gen(:,25); T_Gen_min_off = gen(:,26); c_ST_g = gen(:,28); c_G_g = gen(:,30); ? % CSP機(jī)組相關(guān)數(shù)據(jù)提取 P_CSP_max = CSP(:,9)/baseMVA; P_CSP_min = CSP(:,10)/baseMVA; P_CSP_up = CSP(:,23)/baseMVA; P_CSP_down = CSP(:,24)/baseMVA; T_CSP_min_on = CSP(:,25); T_CSP_min_off = CSP(:,26); c_CSP_g = CSP(:,30); ? PtCSP_fore = [ % 可用的太陽能熱功率向量 0.00 0.00 0.00 0.00 0.00 0.00 190.57 390.57 790.57 990.57 1390.57 1891.03 ... 2111.64 2200.92 2202.36 2118.26 1895.37 1408.35 0.00 0.00 0.00 0.00 0.00 0.00 ]/20; PtCSP_fore = PtCSP_fore/baseMVA; P_RE = P_RE/baseMVA; % 可再生能源PV WT機(jī)組出力 ? beta_Load = beta_Load*baseMVA^2; % $/MWh -> $/p.u. ? M_bus_G = zeros(N,N_Gen); % 發(fā)電機(jī)機(jī)組-索引矩陣 for row = 1:N if abs(find(mpc.gen(:,1) == row)) > 0 % 發(fā)電機(jī)節(jié)點(diǎn)號 與 行號對應(yīng) M_bus_G(row,find(mpc.gen(:,1) == row)) = 1; % M_bus_G相應(yīng)處置1 end end ? M_bus_RE = zeros(N,N_RE); % 可再生能源機(jī)組-索引矩陣 for row = 1:N if abs(find(mpc.RE(:,1) == row))>0 M_bus_RE(row,find(mpc.RE(:,1) == row)) = 1; end end ? M_bus_CSP = zeros(N,N_CSP); % CSP機(jī)組-索引矩陣 for row = 1:N if abs(find(mpc.CSP(:,1) == row))>0 M_bus_CSP(row,find(mpc.CSP(:,1) == row)) = 1; end end GSDF = makePTDF(mpc); % 發(fā)電轉(zhuǎn)移分布因子矩陣,表征節(jié)點(diǎn)注入功率在全網(wǎng)絡(luò)的分布 ? %% 負(fù)荷矩陣數(shù)據(jù),按照 算例數(shù)據(jù)mpc.bus(:,3) 中各節(jié)點(diǎn)負(fù)荷的比例分配 PD = bus(:,3)/baseMVA; P_factor = PD/sum(PD); P_sum = mpc.load/baseMVA; PD = P_factor*P_sum; ? %% 決策變量命名 PG_G = sdpvar(N_Gen,NT,'full'); PG_RE = sdpvar(N_RE,NT,'full'); % (風(fēng)光并網(wǎng)量) PG_CSP = sdpvar(N_CSP,NT,'full'); PC_Load = sdpvar(N,NT,'full'); onoff_gen = binvar(N_Gen,NT,'full'); onoff_CSP = binvar(N_CSP,NT,'full'); Branch = sdpvar(N_Br,NT,'full'); Cost_StartUp = sdpvar(N_Gen,NT-1,'full'); Pt_TES_charge = sdpvar(N_CSP,NT,'full'); Pt_TES_discharge= sdpvar(N_CSP,NT,'full'); Et_TES = sdpvar(N_CSP,NT,'full'); %% 約束條件列寫 Cons = []; for t = 1:NT if t >= 2 % type(1-水電, 2-火電機(jī)組) for i = 1:N_Gen % 火電機(jī)組-最小啟/停時(shí)間約束 式(8-9) if (type_Gen(i,1)==2) || (type_Gen(i,1)==5) for tao = t + 1:min(t+T_Gen_min_on(i,1)-1,NT) Cons = [Cons, onoff_gen(i,t)-onoff_gen(i,t-1) <= onoff_gen(i,tao)]; end for tao = t + 1:min(t+T_Gen_min_off(i,1)-1,NT) Cons = [Cons, onoff_gen(i,t-1)-onoff_gen(i,t) <= 1-onoff_gen(i,tao)]; end end end for i = 1:N_CSP for tao = t+1:min(t+T_CSP_min_on(i,1)-1,NT) Cons = [Cons, onoff_CSP(i,t)-onoff_CSP(i,t-1) <= onoff_CSP(i,tao)]; % CSP機(jī)組最小啟/停時(shí)間約束 end for tao = t+1:min(t+T_CSP_min_off(i,1)-1,NT) Cons = [Cons, onoff_CSP(i,t-1)-onoff_CSP(i,t) <= 1-onoff_CSP(i,tao)]; end end end if t >= 2 % 火電機(jī)組 爬坡約束 式(6-7) Cons = [Cons, PG_G(:,t) - PG_G(:,t-1) <= ... onoff_gen(:,t-1).* P_Gen_up*60 + ... (onoff_gen(:,t)-onoff_gen(:,t-1)) .* P_Gen_min + ... (1-onoff_gen(:,t)) .* P_Gen_max]; Cons = [Cons, -PG_G(:,t) + PG_G(:,t-1) <= ... onoff_gen(:,t) .* P_Gen_down*60 + ... (onoff_gen(:,t-1)-onoff_gen(:,t)) .* P_Gen_min + ... (1-onoff_gen(:,t-1)) .* P_Gen_max]; % CSP 機(jī)組 爬坡約束 式(6-7) Cons = [Cons, PG_CSP(:,t) - PG_CSP(:,t-1) <= ... onoff_CSP(:,t-1).* P_CSP_up*60 + ... % (onoff_CSP(:,t)-onoff_CSP(:,t-1)) .* P_CSP_min + ... (1-onoff_CSP(:,t)) .* P_CSP_max]; Cons = [Cons, -PG_CSP(:,t) + PG_CSP(:,t-1) <= onoff_CSP(:,t) .* P_CSP_down*60 + ... (onoff_CSP(:,t-1)-onoff_CSP(:,t)) .* P_CSP_min + ... (1-onoff_CSP(:,t-1)) .* P_CSP_max]; end end % 機(jī)組出力的上下邊界約束-式(3) % t(1-水電,2-火電, 5-燃?xì)獍l(fā)電機(jī)組 6-CSP) Ind_2_5 = union(find(type_Gen(:,1) == 2),find(type_Gen(:,1) == 5)); Cons = [Cons, onoff_gen(Ind_2_5,:) .* (P_Gen_min(Ind_2_5,1) * ones(1,NT)) ... <= PG_G(Ind_2_5,:) <= ... onoff_gen(Ind_2_5,:) .* (P_Gen_max(Ind_2_5,1) * ones(1,NT))]; Cons = [Cons, onoff_CSP.*(P_CSP_min*ones(1,NT)) <= PG_CSP <= onoff_CSP.*(P_CSP_max*ones(1,NT))]; % CSP機(jī)組出力-邊界約束 % Cons = [Cons, onoff_CSP == ones(1,24)]; % CSP機(jī)組 Cons = [Cons, sum(PG_G,1) + sum(PG_RE,1) + sum(PG_CSP,1) == sum(PD - PC_Load,1)]; % 式(2) Cons = [Cons, Branch == GSDF*(M_bus_G*PG_G + M_bus_RE*PG_RE + M_bus_CSP*PG_CSP - (PD-PC_Load))]; % % Cons = [Cons, -branch(:,6)*ones(1,NT) <= GSDF*(M_bus_G*PG_G+M_bus_RE*PG_RE+M_bus_CSP*PG_CSP-(PD- PC_Load)) <= branch(:,6)*ones(1,NT)]; % Cons = [Cons, -999*ones(N_Br,NT) <= GSDF*(M_bus_G*PG_G+M_bus_RE*PG_RE+M_bus_CSP*PG_CSP-(PD-PC_Load)) <= 999*ones(N_Br,NT)]; % 118系統(tǒng)有186條線路 Cons = [Cons, 0 <= PG_RE <= P_RE]; % 可再生出力 Cons = [Cons, [60;50;100;80;40]/baseMVA * ones(1,24) <= PG_G ]; Cons = [Cons, 0 <= PC_Load <= PD]; % 式(22) Cons = [Cons, sum(onoff_gen .* (P_Gen_max*ones(1,NT)) - PG_G,1) + ... sum(onoff_CSP .* (P_CSP_max*ones(1,NT)) - PG_CSP,1) >= ... sum(CoeffReseve_load*PD,1) + sum(CoeffReserve_VRE*PG_RE,1) ]; Cons = [Cons, Cost_StartUp >= (onoff_gen(:,2:NT) - onoff_gen(:,1:NT-1)) .* (c_ST_g*ones(1,NT-1))]; % 傳統(tǒng)機(jī)組啟動成本 Cons = [Cons, Cost_StartUp >= 0]; %%%%%% CSP電站運(yùn)轉(zhuǎn)內(nèi)部約束 %%%%%% E_TES_max = Capacity_TES_CSP * P_CSP_max; Cons = [Cons, PG_CSP/yita_PB + Pt_TES_charge - Pt_TES_discharge <= PtCSP_fore]; % CSP輸出電功率與TES充/放熱功率,預(yù)測光熱功率關(guān)系 Cons = [Cons, Et_TES(:,2:NT) == Et_TES(:,1:NT-1) + Pt_TES_charge(:,1:NT-1)*yita_TES - Pt_TES_discharge(:,1:NT-1)/yita_TES]; Cons = [Cons, Et_TES(:,1) == TES_initial * E_TES_max]; Cons = [Cons, Et_TES(:,1) == Et_TES(:,NT)]; Cons = [Cons, 0 <= Pt_TES_charge <= Capacity_TES_CSP*ones(N_CSP,NT)]; Cons = [Cons, 0 <= Pt_TES_discharge <= Capacity_TES_CSP*ones(N_CSP,NT)]; Cons = [Cons, 0 <= Et_TES <= E_TES_max * ones(1,NT)]; ? %% 目標(biāo)函數(shù) obj = sum(c_G_g'*PG_G) + sum(c_CSP_g'*PG_CSP) + sum(sum(Cost_StartUp) + beta_Load*sum(sum(PC_Load)) ); % 機(jī)組的邊際發(fā)電成本 + 啟動成本 + 負(fù)荷削減成本 % 運(yùn)行調(diào)度 ops = sdpsettings('solver','cplex'); % gurobi ans = optimize(Cons,obj,ops) %% 求解成功后取值 PG_G = value(PG_G) ; PG_RE = value(PG_RE) ; PG_CSP = value(PG_CSP) ; PC_Load = value(PC_Load) ; onoff_gen = value(onoff_gen) ; onoff_CSP = value(onoff_CSP) ; Branch = value(Branch) ; Cost_StartUp = value(Cost_StartUp); obj = value(obj); % 總成本 Pt_TES_charge = value(Pt_TES_charge); Pt_TES_discharge = value(Pt_TES_discharge); Et_TES = value(Et_TES); disp(['IEEE14 不考慮N-k的和無CSP的經(jīng)濟(jì)調(diào)度情況,運(yùn)行成本為 ', num2str(obj)]) %% 繪圖 % 已知的相關(guān)輸入數(shù)據(jù) figure subplot(3,1,1) plot(PtCSP_fore * baseMVA,'m-o'); title('CSP預(yù)測功率值') xlabel('時(shí)間(h)'); ylabel('功率(MW)'); subplot(3,1,2) plot(P_RE(1,:) * baseMVA,'m-o'); hold on plot(P_RE(2,:) * baseMVA,'b-s'); title('可再生能源預(yù)測出力值') xlabel('時(shí)間(h)'); ylabel('功率(MW)'); legend('光伏','風(fēng)電') subplot(3,1,3) plot(sum(PD) * baseMVA,'r-v'); title('24h負(fù)荷值') xlabel('時(shí)間(h)'); ylabel('功率(MW)'); ? % subplot(2,1,2) % bar(baseMVA*PG_RE',0.75,'stack'); hold on; % 各PV、Wind機(jī)組出力 % legend('PV','Wind') % title('電網(wǎng)中可再生能源機(jī)組出力') % xlabel('時(shí)間(h)'); % ylabel('功率(MW)'); % figure % surf(baseMVA*PC_Load); % title('負(fù)荷削減量') % xlabel('時(shí)間(h)'); %????ylabel('功率(MW)'); ? ?
3?部分結(jié)果
文章來源:http://www.zghlxwxcb.cn/news/detail-850103.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-850103.html
4 下載鏈接
到了這里,關(guān)于含風(fēng)電-光伏-光熱電站電力系統(tǒng)N-k安全優(yōu)化調(diào)度模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!