【勘误】基于多目标粒子群算法的微电网优化调度【风光、储能、柴油、燃气、电网交互】

news2025/1/13 10:03:03

目录

1 主要内容

2 部分代码

3 程序结果

4 下载链接


主要内容

这是一篇代码勘误,该程序复现文献《基于多目标粒子群算法的微电网优化调度》,代码实现了多目标优化调度模型——考虑微电网系统运行成本和环境保护成本的并网模式下微电网多目标优化调度模型,同时采用改进的粒子群算法对优化模型进行求解,具体改进的点包括:1)改进了惯性因子;2)在PSO算法中引入变异操作进行改进粒子群算法,在普通粒子群算法的基础上引入简单变异算子,在粒子每次更新之后,以一定概率重新初始化粒子。简单来说,该程序实现了风光、储能、柴油、燃气、电网交互等主体参与的微网优化调度,采用改进多目标粒子群进行优化,原代码是包括传统粒子群和改进粒子群两部分,但是多目标粒子群在实现过程中存在较大的问题,下面就来做一个说明。(下载网址包括原代码(3.9元)和【原代码+勘误】(99元)两种方式代码,大家可以按需下载!)

  • 问题简述

运行主程序main_improve,得到如下的结果。

为了方便展示,将结果图采用subplot方式进行绘制。

为了方便展示,将结果图采用subplot方式进行绘制。

可以注意到,最后一个子图是关于各个设备出力情况,折线图有点乱,改成柱状图+折线图来看一下效果。

上面这个图就能发现问题——功率严重不平衡,正常设备出力(在图中即柱状图部分)应该和负荷(折现)保持一致,这也是电力系统最重要的属性,但是结果和实际相去甚远,可见程序代码存在问题。

  • 原因分析

多目标pareto解集定义如下:

即对于双目标模型而言,只要有一个目标值最小,另一个目标值再大也满足有效解的条件。回到程序上面,单目标算法对于约束处理的方式是采用罚函数形式,即在目标后面加一个较大的惩罚性的数值,当不满足约束条件时,罚函数起作用,在寻找最优解的过程中逐渐把不满足约束条件的解淘汰;多目标算法处理约束最好不采用罚函数的方式,如上面蓝字部分,不满足解集的也很有可能被作为有效解,虽然当前采用一个状态变量作为是否可行的标志,但这个方法仍有较大的偏差裕度和不准确性,程序的问题就出在这里。

%% 判断是否为可行解
if ele_sum>4500
    c=1;
else
    c=0;
end

该程序对于功率平衡可行的判断条件是小于4500,这个裕度太大了,导致该微网优化结果功率失衡。

result=C_grid+C_OM_F+f_DE*DE_sum+f_MT*MT_sum+f_SOC*SOC_sum_delt+f_ele*ele_sum;

其一目标包含有罚函数,该目标函数求解结果准确性低,导致成本数据计算不准确。对上述问题的勘误就需要修改约束条件编程方式,采用绝对约束方式进行,保证每一个解集均满足约束条件,这样才能保证最终结果的准确性。

部分代码

%程序初始化
clear;
clc;
close all;
%定义全局变量
global P_load; %电负荷
global WT;%风电
global PV;%光伏
global buy_price;
global sell_price;
%获取数据
data=xlsread('mopso_data');
P_load=data(:,1);
PV=data(:,2);
WT=data(:,3);
buy_price=data(:,4);
sell_price=data(:,5);
​
%蓄电池最大放电功率(正表示为电负荷供电,即放电)
BESSMax_dischar=30;
%蓄电池最大充电功率
BESSMax_char=-30;
%柴油机最大发电功率
DEMax=30;
%柴油机最小发电功率
DEMin=6;
%燃气轮机最大发电功率
MTMax=30;
%燃气轮机最小发电功率
MTMin=3;
%主网交互最大功率(正表示为电负荷供电)
GridMax=30;
%主网交互最小功率
GridMin=-30;
%% 调用mopso函数
mm=mopso; %调用mopso函数
nn=length(mm.swarm); %非支配解数目
​
%% 比较不同目标函数寻优对调度结果的影响
%% 第1种.将两个目标函数值归一化相加,取相加后最小的目标值的粒子,即寻找折衷解并画图
%将非支配解中的运行成本和环境保护成本分别赋值给yyy,xxx
% for i=1:nn
%    yyy(i)= mm.swarm(1,i).cost(1);
%    xxx(i)= mm.swarm(1,i).cost(2);
% end
% m1=max(yyy);
% m2=max(xxx);
% 
% for i=1:nn
%     object(i)= mm.swarm(1,i).cost(1)./m1+ mm.swarm(1,i).cost(2)./m2;
%     f1(i)=mm.swarm(1,i).cost(1)./m1;
%     f2(i)=mm.swarm(1,i).cost(2)./m2;
% end
% [m,p]=min(object); %得到有着最小目标值的微粒所在的行数P
% pg=mm.swarm(1,p).x; %pg为折衷解
% Title = sprintf('折衷解情况下');
%% 第2种寻找总成本最低时的解并画图
for i=1:nn
    object(i)= mm.swarm(1,i).cost(1)+ mm.swarm(1,i).cost(2);
end
[m,p]=min(object); %得到有着最小目标值的微粒所在的行数P
pg=mm.swarm(1,p).x; %pg为总成本最低时的解
Title = sprintf('总成本最低情况下');

程序结果

前沿面更连续平滑,运行成本更加真实准确,原来运行成本部分严重失真。

严格满足功率平衡条件。

4 下载链接

欢迎扫码关注公众号【电力程序】——>【发消息】——>【程序目录】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/961218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NCRE 二级Java语言程序设计01】全国计算机等级考试初识

目录 前言一、认识全国计算机等级考试1.官方的自我介绍2.省级和全国级的区别3.考试内容 二、NCRE正确入口三、官方重要资源分布1.大纲教材2.相关下载3.试题选登4.常见问题 总结 前言 📜 本专栏主要是分享自己备考全国计算机二级Java语言程序设计所学心得体会、所搜集…

SpringBoot自定义工具类—基于定时器完成文件清理功能

直接复制粘贴既可!! import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.File; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneOff…

【云原生进阶之PaaS中间件】第一章Redis-2.5缓存持久化

1 Redis持久化 1.1 Redis持久化分类 Redis 中的数据都是保存在内存中的,当Redis服务重启后,内存中的数据都会丢失,所以需要将内存中的数据保存到磁盘上,方便系统故障时,从磁盘上的备份数据恢复到内存中。 Redis 中的持…

PMP考试难度大吗?该如何备考?

PMP(Project Management Professional))认证考试是全球范围内最重要、最权威的项目管理行业认证之一。但是,很多人对PMP考试的难度心存疑虑。在这篇文章中,我们将讨论PMP考试的难度,并提供一些备考建议。 首先&#x…

python“魂牵”京东商品历史价格数据接口(含代码示例)

要通过京东的API获取商品详情历史价格数据,您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过京东开放平台API获取商品详情历史价格数据: 首先,确保您已注册成为京东开放平台的开发者…

一款windows的终端神奇,类似mac的iTem2

终于找到了一款windows的终端神奇。类似mac的iTem2 来,上神器 cmder cmder是一款windows的命令行工具,就是我们的linux的终端,用起来和linux的命令一样。所以我们今天要做的是安装并配置cmder ![在这里插入图片描述](https://img-blog.csdni…

前端需要学习哪些技术?

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的同学要注意,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候展现更大的优势。 缺人才,又薪资高,那么怎样才能…

赞奇科技参与华为云828 B2B企业节,云工作站入选精选产品解决方案

8月27日,由华为云携手上万家伙伴共同发起的第二届 828 B2B 企业节拉开帷幕,围绕五大系列活动,为万千中小企业带来精细化商机对接。 聚焦行业数字化所需最优产品,举办超1000场供需对接会,遍及20多个省100多个城市&…

企业架构LNMP学习笔记3

服务器基本环境配置: 1、安装虚拟机,centos7.9 操作系统; 2、网络配置; 3、机器名FQDN设置; 4、DNS解析设置,本地hosts设置; 5、配置yum源环境; 6、vim安装配置; …

windows笔记本远程连接如何打开任务管理器?

参考素材: https://jingyan.baidu.com/article/8275fc86a97f5207a03cf6cd.html https://www.anyviewer.cn/how-to/ctrl-alt-delete-remote-desktop-6540.html 网上查了很多方法,都说ctrlaltend可以解决这个问题。 但是笔记本键盘上没有end键。 继续查了一…

一米脸书营销软件

功能优势 JOIN ADVANTAGE HOME PAGE MARKETING 公共主页营销 可同时对多个账户公共主页评论,点赞等 可批量邀请多个好友对Facebook公共主页进行评论点赞等,也可批量登录小号对自己公共主页进行点赞。 GROUP MARKETING 小组营销 可批量针对不同账户进行…

Altium显示/隐藏白色网络

在Altium软件中,相同网络的单元如果没有连接,会在PCB中出现白色的线,如下图所示。 这些白色的细线用于提示我们还有哪些网络没有布线。 如果我们不想要出现这种线,可以进行如下设置 View > Connections > Hide All 如…

【Unity3D游戏魔坦之争】单例模式管理数据存储【二】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

API是什么?解密API背后的奥秘

API,全称Application Programming Interface,是一种用于不同应用程序间通信的接口,它允许不同的应用程序之间交换数据和功能。API可以理解为应用程序提供给其他应用程序或开发者的接口,通过这个接口,其他应用程序或开发…

连接未来,驱动创新|腾讯云 CODING DevOps 主题沙龙完美收官

点击链接了解详情 近日,由腾讯云 COIDNG 主办的“连接未来,驱动创新”主题沙龙在深圳圆满结束。活动现场,来自不同行业的研效专家汇聚腾讯滨海大厦,共同探讨了在不断变革的市场环境之下,组织研发效能提升的前沿策略与实…

如何做好营销邮件群发?怎么群发电子邮件?

外贸营销邮件群发技巧?邮件营销如何大批量的发送? 营销邮件群发成为了各个企业吸引客户、促进销售的重要手段之一。然而,要想在竞争激烈的市场中脱颖而出,做好营销邮件群发绝非易事。下面将从几个关键方面探讨如何做好营销邮件群发。 营销…

【事务】事务特性、隔离级别、传播属性、失效场景理解及场景模拟

文章目录 事务四大特性通过什么实现特性? 事务隔离级别为什么要设置隔离级别?如何设置隔离级别?事务并发问题模拟?读未提交1.脏读:2.不可重复读:3.幻读: 如何解决事务并发啊? 事务传…

LED显示屏功耗的计算方法

首先,关于户外LED显示屏的功率大小,LED显示屏功率有两种:峰值功率和平均功率。所谓峰值功率主要是指启动时的瞬时电压和电流值以及屏幕全白(显示白色)时的功率,而平均功率则是正常使用情况下的功率。 户外LED显示屏一般功率是多少? 根据产品…

华为Mate 60系列发售,北斗卫星通信技术进一步深入大众消费市场

近日,华为Mate 60系列手机在没有举办发布会的情况下在官方商城突然上架开售,人气火爆。 值得一提的是,华为Mate60 Pro支持卫星通话,无地面网络时,也能拨打和接听卫星电话,还可自由编辑卫星消息。华为 Mate6…

高忆管理:科创50指数逆势上涨 B股放量下挫

8月最后一个交易日,A股三大指数全天震荡调整,科创50指数逆势上涨,盘中涨超1%。到收盘,上证综指报3119.88点,跌0.55%;深证成指报10418.21点,跌0.61%;创业板指报2102.58点,…