基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(PSO/SSA/tGSSA)的微电网优化调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

****🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️**座右铭:**行百里者,半于九十。

📋📋📋++本文目录如下:++🎁🎁🎁

目录

[💥1 概述](#💥1 概述)

[📚2 运行结果](#📚2 运行结果)

[2.1 PSO运行结果](#2.1 PSO运行结果)

[2.2 tGSSA运行结果](#2.2 tGSSA运行结果)

[2.3 SSA运行结果](#2.3 SSA运行结果)

[🎉3 参考文献](#🎉3 参考文献)

[🌈4 Matlab代码实现](#🌈4 Matlab代码实现)


💥1 概述

微电网是由多个不同能源资源和负载组成的小型电力系统,其优化调度是为了实现可靠、高效和经济的能源管理。智能算法如粒子群优化(PSO)、鲸鱼算法(SSA)、改进的淘沙骆驼模型算法(tGSSA)等可以用于微电网的优化调度问题。

这些智能算法通过模拟自然界的某些行为来求解复杂的优化问题。在微电网优化调度中,可以使用这些算法来定位微网中各个能源资源的最佳配置、优化能源的分配和负载的调度等问题。

PSO算法基于模拟鸟群觅食行为,通过不断搜索和迭代,寻找最优解。它可以用于微电网中的能源资源配置优化,例如太阳能、风能、蓄电池等的最佳布置和发电计划的优化。

SSA算法是基于鲸鱼觅食行为而提出的一种优化算法,可以用于微电网优化调度问题。它通过模拟鲸鱼的觅食过程,逐步调整鲸鱼的位置来逼近最佳解决方案。在微电网中,SSA可以用于优化微网中各个能源的发电和负载调度,以实现能源的高效利用和供需的平衡。

tGSSA算法是对GSSA算法的改进和优化,通过引入时间变换来提高搜索效率。在微电网优化调度中,tGSSA算法可以用于优化微网的能源配置和调度策略,以实现最佳的经济性和可靠性。

我们基于典型的日负荷参数和自然参数,使用改进的粒子群优化(PSO)算法对建立的数学模型进行求解。通过这个优化过程,我们可以制定出分时段的优化调度方案,并确定微电网在峰、谷、平三个阶段的出力。

此外,我们也比较了微电网采用常规调度策略和采用优化调度策略的综合效益。通过分析比较,我们能够量化地评估优化调度策略在经济性、可靠性和可持续性方面的改进效果。

同时,在原有的PSO算法基础上,我们还引入了鲸鱼算法(SSA)和改进的淘沙骆驼模型算法(tGSSA)进行对比研究。通过与PSO算法的比较,我们可以评估SSA和tGSSA算法在微电网优化调度问题上的性能和效果。

在验证过程中,我们对算法的正确性和优化调度方案的可行性进行了验证。通过对真实数据的处理和模拟实验,我们可以得出准确的结论,证明了优化调度方案的有效性和可行性。

总的来说,这项研究为微电网的优化调度提供了一个强大的解决方案。通过结合改进的PSO算法、SSA算法和tGSSA算法,并综合分析不同调度策略下微电源的综合效益,我们能够找到最佳的调度方案,以提升微电网的经济性、可靠性和可持续性。这一研究成果有助于推动微电网领域的发展,并为实际应用提供有力的支持。

综上,基于智能算法(如PSO、SSA和tGSSA)的微电网优化调度可以帮助实现微电网能源的高效利用、优化的能源分配和负载的合理调度,从而提高微电网的可靠性、经济性和可持续性。

📚 2 运行结果

2.1 PSO运行结果

2.2 tGSSA运行结果

2.3 SSA运行结果

部分代码:

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('费用/元')

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('费用/元')

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]姚景昆. 基于改进粒子群算法的微电网优化调度[D].辽宁工业大学,2016.

🌈4 Matlab代码实现

相关推荐
wanhengidc25 分钟前
短视频运营行业该如何选择服务器?
运维·服务器
古希腊掌管学习的神27 分钟前
[搜广推]王树森推荐系统笔记——曝光过滤 & Bloom Filter
算法·推荐算法
qystca28 分钟前
洛谷 P1706 全排列问题 C语言
算法
浊酒南街34 分钟前
决策树(理论知识1)
算法·决策树·机器学习
就爱学编程41 分钟前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
学术头条1 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
s_yellowfish1 小时前
Linux服务器pm2 运行chatgpt-on-wechat,搭建微信群ai机器人
linux·服务器·chatgpt
vvw&1 小时前
如何在 Ubuntu 22.04 上安装 Ansible 教程
linux·运维·服务器·ubuntu·开源·ansible·devops
我一定会有钱1 小时前
【linux】NFS实验
linux·服务器
王铁柱子哟-1 小时前
解决 正在下载VS Code 服务器... 问题
运维·服务器