基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(PSO/SSA/tGSSA)的微电网优化调度(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
2.1 PSO运行结果
2.2 tGSSA运行结果
2.3 SSA运行结果
🎉3 参考文献
🌈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:24if Pmt(t)>0Umt(t) = 1;endif Pfc(t)>0Ufc(t) = 1;end
endfor t=1:24 if t==1Cst(t) = Cst_mt*max(0, Umt(t)-Uinit) + Cst_fc*max(0, Ufc(t)-Uinit);elseCst(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:24cost(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代码实现
相关文章:

基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(PSO/SSA/tGSSA)的微电网优化调度(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

数据分析篇-数据认知分析
一简介 数据认知分析,实际是对数据的整体结构和分布特征进行分析,是对整个数据外在的认识,也是数据分析的第一步。对于数据认知的分析,一般会考虑分散性、位置特性、变量的相关性等,一般会考虑平均数、方差、极差、峰…...

【力扣-每日一题】714. 买卖股票的最佳时机含手续费
class Solution { public:int maxProfit(vector<int>& prices, int fee) {//[i][0]-不持有 [i][1]-持有int mprices.size();vector<vector<int>> dp(m,vector<int>(2));dp[0][0]0; //初始状态dp[0][1]-prices[0];for(int i1;i<m;i){dp[i]…...

【代码实践】HAT代码Window平台下运行实践记录
HAT是CVPR2023上的自然图像超分辨率重建论文《activating More Pixels in Image Super-Resolution Transformer》所提出的模型。本文旨在记录在Window系统下运行该官方代码(https://github.com/XPixelGroup/HAT)的过程,中间会遇到一些问题&am…...
机器学习-Pytorch基础
Numpy和Pytorch可以相互转换,前者CPU上,后者GPU上,都是对矩阵进行运算,Pytorch的基本单位是张量。torch 可以初始化全为0、全为1、符合正态分布的矩阵确定性初始化 torch.tensor()torch.arrange()torch.linspace()torch.logspace…...

金九银十,刷完这个笔记,17K不能再少了....
大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…...

精确到区县级街道乡镇行政边界geojson格式矢量数据的获取拼接实现Echarts数据可视化大屏地理坐标信息地图的解决方案
在Echarts制作地理信息坐标地图时,最麻烦的就是街道乡镇级别的行政geojson的获取, 文件大小 788M 文件格式 .json格式,由于是大文件数据,无法直接使用记事本或者IDE编辑器打开,推荐Dadroit Viewer(国外…...
【Python 千题 —— 基础篇】多行输出
题目描述 下面是一道关于输入输出的基础题。⭐⭐⭐ 题目描述 编写一个Python程序,将字符串 Hello World! 存储在变量 str1 中,将字符串 Hello Python! 存储在变量 str2 中,然后使用 print 语句分别将它们在不同行打印出来。 输入描述 无…...

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...
Py之pygraphviz:pygraphviz的简介、安装、使用方法之详细攻略
Py之pygraphviz:pygraphviz的简介、安装、使用方法之详细攻略 目录 pygraphviz的简介 pygraphviz的安装 Graphviz:可视化工具Graphviz的简介、安装、使用方法、经典案例之详细攻略 pygraphviz的使用方法 1、基础用法 2、进阶案例 Algorithm&#…...
acwing算法基础之基础算法--前缀和算法
目录 1 知识点2 模板 1 知识点 前缀后下标尽量从1开始,当然不从1开始也是ok的。 a 1 , a 2 , a 3 , . . . , a n a_1,a_2,a_3,...,a_n a1,a2,a3,...,an S 1 , S 2 , S 3 , . . . S n S_1,S_2,S_3,...S_n S1,S2,S3,...Sn S i S_i Si࿱…...

华为云云耀云服务器L实例评测|Ubuntu 22.04部署edusoho-ct企培版教程 | 支持华为云视频点播对接CDN加速
华为云云耀云服务器L实例评测|Ubuntu 22.04部署edusoho企培版教程 1、选择购买 华为云耀云服务器L实例 简单上云第一步 2、选择你要安装的操作系统,例如 Ubuntu 22.04 server 64bit 3、然后支付订单就行了 4、华为云云耀云服务器L实例创建好之后&#x…...

土木硕设计院在职转码上岸
一、个人介绍 双非土木硕,98年,目前在北京,职位为前端开发工程师,设计院在职期间自学转码上岸🌿 二、背景 本人于19年开始土木研究生生涯,研二期间去地产实习近半年(碧桂园和世茂,这两家的地产…...
js查询月份开始和结束日期
js查询月份开始和结束日期 月份开始和结束 月份开始和结束 整体不是很复杂,使用new Date()方法自带获取最后一天的时间 new Date(a,b,c),传递参数 参数a:是要获取的年份 参数b:是要获取的月份 参数c:是要获取的日期 传递日期为…...
mybatis开发部分核心代码
pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 ht…...
Springboot中查看gradle工程使用了哪些仓库
在springboot项目开发中,由于初始化配置文件(init.gradle)可能存在多个目录中(不只一份),可能导致多次重复引入仓库。也有可能配置文件放置位置错误,导致gradle编译时找不到相应的仓库。如果能在编译时查看gradle到底引用了哪些库,…...

c#中的接口
使用IEnumerable统一迭代变量类型 class Program {static void Main(string[] args){int[] nums1 new int[] { 1, 2, 3, 4, 5 };ArrayList nums2 new ArrayList { 1, 2, 3, 4, 5 };Console.WriteLine(Sum(nums1));Console.WriteLine(Sum(nums2));Console.WriteLine(Avg(nums…...
老卫带你学---leetcode刷题(76. 最小覆盖子串)
76. 最小覆盖子串 问题: 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必…...
Maven-DskipTests和-Dmaven.test.skip=true的区别
DskipTeststrue和-Dmaven.test.skiptrue的区别 1、 -DskipTeststrue 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下,如: mvn clean package -DskipTeststrue2、 -Dmaven.test.skiptrue 完全忽略测试代码的…...
conda中cuda、cuda-toolkit、cuda-nvcc、cuda-runtime的区别
conda中cuda、cuda-toolkit、cuda-nvcc、cuda-runtime的区别 cuda cuda-toolkit cuda-runtime cuda-toolkit 包含 cuda-nvcc CUDA cuda nvidia/label/cuda-11.8.0/linux-64::cuda-11.8.0-0 cuda-cccl nvidia/label/cuda-11.8.0/linux-64::cuda-cccl-11.8.89-0 cuda-comma…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...