1.算法描述
高載能企業(yè)執(zhí)行子站接收負荷調(diào)整指令后,需將有功功率鸠儿、無功功率調(diào)整總量合理分配給各用能設(shè)備/系統(tǒng)赢笨。研究高載能負荷響應(yīng)優(yōu)化控制模型腌闯,建立以高載能企業(yè)響應(yīng)效益最優(yōu)為目標著洼,以各用能設(shè)備/系統(tǒng)在不同時間尺度下有功樟遣、無功響應(yīng)容量為變量而叼,以各用能設(shè)備/系統(tǒng)在不同時間尺度下響應(yīng)潛力身笤、無功補償容量、用電重要等級葵陵、生產(chǎn)工藝環(huán)節(jié)協(xié)調(diào)配合液荸、有功功率及無功功率調(diào)整總量等為約束,提出尋優(yōu)求解方法脱篙。
對于鋁電解廠來說娇钱,風電引入到鋁電解廠,但是鋁電解廠有自備電廠绊困,正常情況下是自備電廠恒定地供給鋁電解廠文搂,鋁電解廠的功率主要可分為兩種設(shè)備,一個是主要設(shè)備鋁電解槽(占總功率的95%)秤朗,其余是輔助設(shè)備消耗的功率(約占總功率的5%)煤蹭。正常工作條件下,鋁電解槽和輔助系統(tǒng)24小時的功率如下面兩圖所示,基本上處于穩(wěn)定狀態(tài)硝皂,此時P鋁電解槽+P輔助= P自備電廠常挚。
現(xiàn)在如果把風電引入到鋁電解廠了,則原來的自備電廠供電的功率會發(fā)生變化稽物,同時鋁電解廠消耗的總功率也會發(fā)生變化⊙僬保現(xiàn)在:
P鋁電解槽+P輔助=P風電+P自備電廠
如果現(xiàn)在預(yù)先給定了引入鋁電解廠風電24小時的曲線,如下圖所示贝或,現(xiàn)在在這24小時期間吼过,如何調(diào)整自備電廠的發(fā)電、以及如何將自備電廠和風電的總功率分配給主要設(shè)備鋁電解槽和輔助系統(tǒng)咪奖。才能使在引入風電的情況下電解廠獲得的效益(賺的錢)最高那先,這時,最好使電解槽的功率得以調(diào)高赡艰,多增加鋁的產(chǎn)量售淡,會多帶來效益。假設(shè)風電的價格是0.2元/kWh慷垮,自備電廠的價格是0.3元/kWh揖闸,鋁的價格是13000元/噸。
一些約束條件可以設(shè)置如下:
主要設(shè)備電解槽電解槽的額定功率是700MW料身,調(diào)整時不能低于730MW汤纸,不能高于770MW;
輔助設(shè)備的額定功率是50MW芹血,調(diào)整時不能低于45 MW贮泞,不能高于55MW;
自備電廠的額定輸出功率為750MW幔烛,每次調(diào)整不能低于600MW啃擦,不能高于780MW。
根據(jù)上面這幅圖給出的風電出力曲線饿悬,經(jīng)過對鋁電解廠和發(fā)電廠負荷的調(diào)整令蛉,使得這24小時中盈利最大。并求出發(fā)電廠狡恬、每種負荷(鋁電解槽和輔助設(shè)備)24小時的調(diào)整曲線珠叔。
2.仿真效果預(yù)覽
matlab2022a仿真如下:
3.MATLAB核心程序
%輸入風電變換情況
Times = [0.25:0.25:24];
Pfd0 ?= [3*ones(1,20),5*ones(1,12),10*ones(1,20),12*ones(1,8),8*ones(1,24),4*ones(1,12)]*1e6;
figure;
plot(Times,Pfd0/1e6,'r','linewidth',2);
xlabel('Time(h)');
ylabel('MW');
axis([0,24,0,15]);
Timesdelay = 2*4;%2小時后參與調(diào)解
Pdc21 ?= [];
Pfl21 ?= [];
Pdzl21 = [];
Pdc22 ?= [];
Pfl22 ?= [];
Pdzl22 = [];
for t = 1:length(Times)
%定義初始值,初始值
Pdc ??= 40e6;%電廠調(diào)節(jié)功率
Pfl ??= 15e6;%輔助設(shè)備調(diào)節(jié)功率
Pdzl ?= 25e6;%電爐調(diào)節(jié)功率
Pfd ??= Pfd0(t);
%風電價格波動
Pricefd = BD(t);
%%
%下面開始使用遺傳優(yōu)化算法
%根據(jù)遺傳算法進行參數(shù)的擬合
MAXGEN = 80;
NIND ??= 200;
Nums ??= 2;
Chrom ?= crtbp(NIND,Nums*10);
%各個變量的約束條件,這幾個參數(shù)稍微改了下弟劲,否則加入眾多約束后祷安,收斂非常慢
A1 ????= 20e6;
B1 ????= 60e6;
A2 ????= 12e6;
B2 ????= 20e6;
A3 ????= 30e6;
B3 ????= 35e6;
Areas ?= [A2, A3;
B2, B3];
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
gen ???= 0;
for a=1:1:NIND
%計算對應(yīng)的目標值
Moneys ?= func_obj(Pdc,Pfl,Pdzl,Pfd,t,Pricefd);
Js(a,1) = Moneys;
end
Objv ?= (Js+eps);
gen ??= 0;
Pdc2 ?= [];
Pfl2 ?= [];
Pdzl2 = [];
%%
while gen < MAXGEN; ??
gen
t
flag=0;
while flag == 0
Pe0 = 0.8;
pe1 = 0.001;
FitnV=ranking(Objv); ???
Selch=select('sus',Chrom,FitnV); ???
Selch=recombin('xovsp', Selch,Pe0); ??
Selch=mut( Selch,pe1); ??
phen1=bs2rv(Selch,FieldD); ??
NS=0;
for aa=1:NIND
if phen1(a,1) + ?phen1(a,2) - Pfd <= B1 & phen1(a,1) + ?phen1(a,2) - Pfd >= A1
NS=NS+1;
end
end
if NS > NIND/2
flag = 1;
else
flag = 0;
end
end
Pdc ??= [];
Pfl ??= [];
Pdzl ?= [];
for a=1:1:NIND ?
Pfl(a) ??= phen1(a,1);
%滿足分配功率等式約束
Pdzl(a) ?= phen1(a,2);
Pdc(a) ??= phen1(a,1) + ?phen1(a,2) - Pfd;
%約束條件,重復(fù)約束條件
if Pdc(a) <= A1;Pdc(a)=A1;end;
if Pdc(a) >= B1;Pdc(a)=B1;end;
if Pfl(a) <= A2;Pfl(a)=A2;end;
if Pfl(a) >= B2;Pfl(a)=B2;end; ??
if Pdzl(a) <= A3;Pdzl(a)=A3;end;
if Pdzl(a) >= B3;Pdzl(a)=B3;end;
%計算對應(yīng)的目標值
Moneys ??= func_obj(Pdc(a),Pfl(a),Pdzl(a),Pfd,t,Pricefd);
JJ(a,1) ?= Moneys;
end
Objvsel ????= JJ ; ???
[Chrom,Objv]= reins(Chrom,Selch,1,1,Objv,Objvsel); ??
gen ????????= gen+1;
[VS,IS] ????= min(Objv);
Best(gen) ??= 1/min(Objv);
fit(gen) ???= min(Objv);
Pdc2(gen) ??= Pdc(IS);
Pfl2(gen) ??= Pfl(IS);
Pdzl2(gen) ?= Pdzl(IS);
end
if t == 1
figure;
plot(Best,'b','linewidth',2);
xlabel('迭代次數(shù)');
ylabel('優(yōu)化后的收益');
grid on
figure;
plot(fit,'b','linewidth',2);
xlabel('迭代次數(shù)');
ylabel('適應(yīng)度函數(shù)收斂情況');
grid on
end
Timesdelay
Pdc21 ?= [Pdc21,Pdc2(end)];
Pfl21 ?= [Pfl21,Pfl2(end)];
Pdzl21 = [Pdzl21,Pdzl2(end)]; ??
if t <= Timesdelay
Pdc22 ?= [Pdc22,mean(Pdc21(1:t))];
Pfl22 ?= [Pfl22,mean(Pfl21(1:t))];
Pdzl22 = [Pdzl22,mean(Pdzl21(1:t))];
else
Pdc22 ?= [Pdc22,mean(Pdc21(t-Timesdelay:t))];
Pfl22 ?= [Pfl22,mean(Pfl21(t-Timesdelay:t))];
Pdzl22 = [Pdzl22,mean(Pdzl21(t-Timesdelay:t))];
end
end
02_043m