目录
参考文章:
主要内容:
主程序:
不同算法运行结果
PSO运行结果:
tGSSA运行结果:
SSA运行结果:
联系方式:2645521500
基于改进粒子群算法的微电网优化调度——姚景昆
以某典型日负荷参数、自然参数为基础用改进的 PSO 算法对建立的数学模型进行求解,制定了分时段优化调度方案,并确定了微电网孤岛运行时在峰、谷、平三个阶段的出力,分析比较了微电网采用常规调度策略和采用优化调度策略的综合效益;分析当微电源并网运行时,微电源在不同阶段内的出力和不同调度策略下微电源的综合效益。最终验证了算法的正确性和优化调度方案的可行性。
同时,在原有算法的基础上加入了SSA、tGSSA算法进行了对比。
clc;
clear;
close all;
global costp Ppv Pwt
%% 算法参数
parameter;
nVar=4*24; % Number of Decision Variables
VarMin=[ones(1,24)*Pmt_min, ones(1,24)*Pfc_min, ones(1,24)*Px_min, ones(1,24)*Pb_min];
VarMax=[ones(1,24)*Pmt_max, ones(1,24)*Pfc_max, ones(1,24)*Px_max, ones(1,24)*Pb_max];
MaxIt=100; % Maximum Number of Iterations
nPop=500; % Population Size (Swarm Size)
%% 计算
[ bestPosition, fitValue ] = tGSSAFUN(@objective,nVar,VarMin,VarMax,MaxIt,nPop);
x=bestPosition;
Pmt = x(1:24); % 燃气轮机功率
Pfc = x(25:48); % 燃料电池功率
Px = x(49:72); % 可卸负荷
Pb = x(73:96); % 蓄电池功率
t=1:24;
%% 输出光伏出力预测
figure
plot(t,Ppv,'-')
title('光伏发电曲线');
xlabel('时间/小时')
ylabel('功率/kw')
%% 输出风力发电出力预测
figure
plot(t,Pwt,'-')
title('风力发电曲线');
xlabel('时间/小时')
ylabel('功率/kw')
%% 输出电平衡结果
figure
hold on
Pb_po=max(Pb,0);
Pb_ne=min(Pb,0);
positive=[Pmt', Pfc', Pb_po',Px',Ppv',Pwt'];
negative=[ Pb_ne'];
bar(positive,'stack');
bar(negative,'stack');
plot(t, Pl, 'ok-');
title('电平衡');
legend('Pmt燃机','Pfc燃电池','Pbdis电池放电','Px可去负荷','Ppv光伏发电','Pwt风电' ,'Pbch电池充电','Pl总负荷');
grid on
hold off
xlabel('时间/小时')
ylabel('功率/kw')
%% 输出各部分出力结果
figure
plot(t,Pmt,'ok-')
hold on
plot(t,Pfc,'-*')
hold on
plot(t,Px,'-')
hold on
plot(t,Pb,'-.')
legend('Pmt燃机出力','Pfc燃电池出力','Px可去负荷','Pb电池出力');
title('出力图');
xlabel('时间/小时')
ylabel('功率/kw')
%% 计算每小时运行费用
% 预分配
eta_mt = zeros(1,24);
eta_fc = zeros(1,24);
Pmth = zeros(1,24);
Umt = zeros(1,24);
Ufc = zeros(1,24);
%% 运行模型
for t=1:24
% 燃气轮机热功率
%下面这个是微型燃气轮机效率计算公式
eta_mt(t) = 0.0753*(Pmt(t)/65)^3 - 0.3095*(Pmt(t)/65)^2 + 0.4174*(Pmt(t)/65) + 0.1068;
Pmth(t) = ((Pmt(t)*(1-eta_mt(t)-eta_l))/eta_mt(t))*eta_h*Coph;
% 燃料电池功率
eta_fc(t) = -0.0023*Pfc(t) + 0.674;
end
%% 启停
for t=1:24
if Pmt(t)>0
Umt(t) = 1;
end
if Pfc(t)>0
Ufc(t) = 1;
end
end
for t=1:24
if t==1
Cst(t) = Cst_mt*max(0, Umt(t)-Uinit) + Cst_fc*max(0, Ufc(t)-Uinit);
else
Cst(t) = Cst_mt*max(0, Umt(t)-Umt(t-1)) + Cst_fc*max(0, Ufc(t)-Ufc(t-1));
end
end
%% 目标函数每小时运行费用
cost=[];
for t=1:24
cost(t)= Cch4*( (Pmt(t)/(L_gas*eta_mt(t))) + (Pfc(t)/(L_gas*eta_fc(t))) ) ... % 燃料成本
+ Cm_mt*Pmt(t) + Cm_fc*Pfc(t) + Cm_pv*Ppv(t)... % 维护成本
+ Cm_wt*Pwt(t) + Cst(t)+(Crb(t)+1.5)*Px(t)+Cm_Eb*Pb(t);
end
figure
plot(1:24,cost)
hold on
plot(1:24,costp)
title('每小时运行成本');
legend('本文调度方法','常规调度方法');
xlabel('时间/小时')
ylabel('费用/元')