基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(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. ### [🌈](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk0MDMzNzYwOA==&action=getalbum&album_id=2591810113208958977#wechat_redirect "🌈")****4 Matlab代码实现****

相关推荐
淋一遍下雨天9 分钟前
第七章总结:集合
运维·服务器·windows
Elendill18 分钟前
【算法笔记】并查集详解
笔记·python·算法
稳联技术22 分钟前
玻璃厂退火炉“温度智囊”:Profinet转ModbusRTU网关
运维·服务器·网络
BanyeBirth42 分钟前
C++高精度算法(加、减、乘)
开发语言·c++·算法
houliabc42 分钟前
C语言个人笔记
c语言·数据结构·笔记·算法
Allen Wurlitzer1 小时前
算法刷题记录——LeetCode篇(1.9) [第81~90题](持续更新)
算法·leetcode·职场和发展
@MrLiu1 小时前
# 深度学习中的优化算法详解
人工智能·深度学习·算法·优化器
小王努力学编程1 小时前
【Linux网络编程】UDP Echo Server的实现
linux·运维·服务器·网络·c++·学习·udp
想睡hhh1 小时前
Leetcode12 13——罗马数字与整数之间的转换
linux·运维·服务器
阳洞洞1 小时前
leetcode 377. Combination Sum IV
算法·leetcode·动态规划·完全背包问题