基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)

news2024/11/24 5:22:20
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


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


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

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 文献来源
🌈4 Matlab代码实现

💥1 概述

本文使用基于天牛须算法(BAS)改进的NSGA-Ⅱ算法对微电网多场景多目标优化调度问题进行求解。在多场景处理方面,采用拉丁超立方抽样(Latin hypercube sampling, LHS)生成大量风电、光伏的日前出力场景,然后使用K-means++聚类方法对大量风光场景进行快速削减与场景生成,得到几个典型的风光出力曲线作为本文的优化调度考虑场景。在微电网优化调度方面,首先构建需求响应负荷,然后以微网运行经济性、运行环保性、可再生能源消纳率为目标函数,已微电网交直流网络潮流等作为约束条件,构建三目标的多场景微电网优化调度问题,最后采用天牛须算法改进NSGA-Ⅱ算法进行优化调度,加快其收敛速度。代码运行结果表明,本文所提方法可以有效降低微电网运行成本、提升可再生能源消纳率。

交直流混合微电网概述:

一般的交直流混合微电网结构如图所示。交流母线接入风力发电机和交流负荷,同时与配电网连接。直流母线接入燃料电池、光伏发电板、锂电池和直流负荷。交流母线和直流母线之间通过双向AC/DC功率变换器连接,实现双向功率流动。在微网正常工作时,交流负荷与直流负荷首先依靠对应侧的分布式电源满足供电需求。当交流侧与直流侧出现功率不平衡的情况时,可通过连接交直流母线的双向AC/DC功率变换器实现功率互补。而位于直流侧的锂电池可以为整个交直流混合微网提供功率的峰谷调节。同时,微电网透过交流侧与配电网的连接,可以为两者提供实时的功率交互。因此,与传统交流微网或直流微网调度相比,交直流混合微网的优化调度除需要应对新能源发电不确定性外,还要综合考虑交直流源荷分区运行的特点,客观上构成了调度的多重不确定性。

天牛须搜索(Beetle Antennae Search-BAS),也叫甲壳虫须搜索,是2017年提出的一种高效的智能优化算法。类似于遗传算法、粒子群算法、模拟退火等智能优化算法,天牛须搜索不需要知道函数的具体形式,不需要梯度信息,就可以实现高效寻优。相比于粒子群算法,天牛须搜索只需要一个个体,即一只天牛,运算量大大降低。

仿生原理

天牛须搜索是受到天牛觅食原理启发而开发的算法。

天牛须搜索的生物原理:

当天牛觅食时,天牛并不知道实物在哪里,而是根据食物气味的强弱来觅食。天牛有两只长触角,如果左边触角收到的气味强度比右边大,那下一步天牛就往左飞,否则就往右飞。依据这一简单原理天牛就可以有效找到食物。

天牛须搜索对我们的启发:

食物的气味就相当于一个函数,这个函数在三维空间每个点值都不同,天牛两个须可以采集自身附近两点的气味值,天牛的目的是找到全局气味值最大的点。仿照天牛的行为,我们就可以高效的进行函数寻优。

NSGA-Ⅱ多目标算法:

NSGA-Ⅱ是最流行的多目标遗传算法之一,它降低了非劣排序遗传算法的复杂性,具有运行速度快,解集的收敛性好的优点,成为其他多目标优化算法性能的基准。

NSGA-Ⅱ算法是Srinivas和Deb于2000年在NSGA的基础上提出的,它比NSGA算法更加优越:它采用了快速非支配排序算法,计算复杂度比NSGA大大的降低;采用了拥挤度和拥挤度比较算子,代替了需要指定的共享半径shareQ,并在快速排序后的同级比较中作为胜出标准,使准Pareto域中的个体能扩展到整个Pareto域,并均匀分布,保持了种群的多样性;引入了精英策略,扩大了采样空间,防止最佳个体的丢失,提高了算法的运算速度和鲁棒性。

NSGA-Ⅱ就是在第一代非支配排序遗传算法的基础上改进而来,其改进主要是针对如上所述的三个方面:

①提出了快速非支配排序算法,一方面降低了计算的复杂度,另一方面它将父代种群跟子代种群进行合并,使得下一代的种群从双倍的空间中进行选取,从而保留了最为优秀的所有个体;

②引进精英策略,保证某些优良的种群个体在进化过程中不会被丢弃,从而提高了优化结果的精度;

③采用拥挤度和拥挤度比较算子,不但克服了NSGA中需要人为指定共享参数的缺陷,而且将其作为种群中个体间的比较标准,使得准Pareto域中的个体能均匀地扩展到整个Pareto域,保证了种群的多样性。

文献来源:

摘要:为了提高交直流混合微网经济效益,提出实时电价机制下的交直流混合微网优化运行方法。首先针对交直流混合微网的结构和电气特性建立其优化运行模型;其次针对微网中负荷构成建立了基于负荷分类的负荷水平对实时电价的响应模型。所提出的日前调度模型将交直流混合微网制定的网内实时电价作为控制变量,给出实时电价制定策略和交直流混合微网日前调度方案。对所建立的模型采用混沌粒子群算法求解。最后通过一个算例验证了所提出方法可以提高风光消纳率,增加交直流混合微网收益并且减小用户平均电费支出。

关键词:

交直流混合微网;优化运行;实时电价;需求侧响应;混沌粒子群算法;

📚2 运行结果

部分代码“

function load=DR3(pload,detapr)

%pload=ones(1,24);

price=[0.4042,0.4042,0.4042,0.4042,0.4042,0.4042,0.4042,0.8084,0.8084,1.3339,1.3339,1.3339,1.3339,1.3339,1.3339,0.8084,0.8084,1.3339,1.3339,1.3339,1.3339,0.8084,0.4042,0.4042];

%detapr=[-0.1.*ones(1,12) 0.1.*ones(1,12)];

pl1=0.6.*pload;%刚性负荷

pl2=0.2.*pload;%Ⅰ类

pl3=0.2.*pload;%Ⅱ类

[row,colz]=find(detapr>0);%电价上升时段

[row,colf]=find(detapr<0);%电价下降时段

num_colz=size(colz,2);%电价上升时段数量

num_colf=size(colf,2);%%电价下降时段数量

T=24;

a=0.08;%死区阈值

%Ⅰ类负荷

linj=0;lini=0;

for i=1:num_colf

linj=linj+abs(detapr(colf(i)));%公式(2)

end

for i=1:num_colz

lini=lini+abs(detapr(colz(i)));

end

for t=1:T

if ismember(t,colz)==1

fdetap=fhzy(detapr(t),a);

linp=0;

for kj=1:num_colf

linp=linp+fdetap*abs(detapr(colf(kj)))*pl2(t)/linj;

end

lam_pl2(t)=pl2(t)-linp;%公式(5)

elseif ismember(t,colf)==1

fdetap=fhzy(detapr(t),a);

linp=0;

for ki=1:num_colz

linp=linp+fdetap*abs(detapr(colz(ki)))*pl2(t)/lini;

end

lam_pl2(t)=pl2(t)+linp;%公式(6)

end

end

%Ⅱ类负荷

e0=-1;e1=0.8;e2=0.6;

Est=zeros(T,T);

for i=1:T

for j=1:T

if i==j

Est(i,j)=-1;

elseif i==j+1

Est(i,j)=0.8;

elseif i+1==j

Est(i,j)=0.6;

else

Est(i,j)=0;

end

end

end

for t=1:T

lam_pl3(t)=pl3(t)+pl3(t)*(Est(t,:)*(detapr./price)');%公式(10)

end

load=pl1+lam_pl2+lam_pl3;

🎉3 文献来源

部分理论来源于网络,如有侵权请联系删除。

[1]陈安伟,华浩瑞,李鹏等.实时电价机制下交直流混合微网优化运行方法[J].电力系统保护与控制,2017,45(07):13-20.

🌈4 Matlab代码实现

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

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

相关文章

论Shell编程规范与变量

目录 一&#xff1a;shell脚本 1.shell概述 2.linux中包含的常用shell 3.shell脚本概述 4.shell脚本应用场景 5.shell脚本的作用 6.用户的登录shell 二&#xff1a; 编写脚本 1.脚本的基本格式 2.shell脚本的执行 3. 交互式硬件设备 4.重定向操作 5.管道操作符号 “…

信号完整性分析基础知识之传输线和反射(一):阻抗变化引起反射

阻抗不连续引起的反射和失真可能会导致信号的误触发和误码&#xff0c;这是导致信号失真和质量下降的主要原因。 在某些情况下&#xff0c;这看起来像振铃。当信号电平下降时&#xff0c;下冲会影响噪声预算并导致误触发。或者&#xff0c;在下降信号上&#xff0c;峰值可能会上…

阅读笔记 First Order Motion Model for Image Animation

文章解决的是图片动画的问题。假设有源图片和驱动视频&#xff0c;并且其中的物体是同一类的&#xff0c;文章的方法让源图片中的物体按照驱动视频中物体的动作而动。 文章的方法只需要一个同类物体的视频集&#xff0c;不需要而外的标注。 方法 该方法基于self-supervised策…

Qt信号槽原理

Qt之信号槽原理 一.概述 所谓信号槽&#xff0c;实际就是观察者模式。当某个事件发生之后&#xff0c;比如&#xff0c;按钮检测到自己被点击了一下&#xff0c;它就会发出一个信号&#xff08;signal&#xff09;。这种发出是没有目的的&#xff0c;类似广播。如果有对象对这…

idea无效的目标版本和类文件具有错误的版本 61.0, 应为 52.0错误(测试有用,一次性解决问题)

SpringBoot己更新到3后&#xff0c;使用的JAVA版本最低要求JAVA17&#xff0c;如果低于这个版本就是报错&#xff1a; 问题一&#xff1a;类文件具有错误的版本 61.0, 应为 52.0。 解决就只有升级JAVA-sdk&#xff1a; 官方下载地址&#xff1a;JAVA20-17 官方推荐更好的sd…

MySQL 视图、函数和存储过程

MySQL 是一种流行的关系型数据库管理系统&#xff0c;其具有强大的功能和灵活性&#xff0c;使其成为了许多企业和个人喜爱的数据库选择。在 MySQL 中&#xff0c;视图、函数和存储过程是常见的数据库对象&#xff0c;它们都有助于提高数据的处理效率和可重用性。 一、视图 视…

UE5实现Runtime环境下绘制点功能

文章目录 1.实现目标2.实现过程2.1 C++实现2.2 蓝图调用3.参考资料1.实现目标 UE5在Runtime环境下基于PDI绘制点,GIF动态如下: 2.实现过程 UE常用的在运行时环境下绘制点方法主要有两种。一种是基于Mesh,即添加Sphere等StaticMesh来模拟显示绘制点;另一种是基于Primitive的…

用代码实现标签打印的三种方式

最近项目中要实现标签打印的功能&#xff0c;有几个条件 标签模板可以事先生成&#xff0c;用的是CodeSoft软件标签模板里面有二维码标签模板里面有一些变量&#xff0c;要求打印的时候自动填充产线电脑上没有安装CodeSoft&#xff0c;即便安装也不能使用&#xff0c;因为没有…

Java线程池及拒绝策略详解

前文提到线程的使用以及线程间通信方式&#xff0c;通常情况下我们通过new Thread或者new Runnable创建线程&#xff0c;这种情况下&#xff0c;需要开发者手动管理线程的创建和回收&#xff0c;线程对象没有复用&#xff0c;大量的线程对象创建与销毁会引起频繁GC&#xff0c;…

Unity入门(一)

Unity Unity是一套完善体系与编辑器的跨平台游戏开发工具&#xff0c;也可以称之为游戏引擎。游戏引擎是指一些编写好的可以重复利用的代码与开发游戏所用的各功能编辑器。 基于C#编程&#xff0c;易上手&#xff0c;高安全性独特的面向组件游戏开发思想让游戏开发更加简单易…

Maven 如何下载依赖包的源码包

使用Maven下载依赖包的时候&#xff0c; 默认是不会下载源码包的&#xff0c;但是有时候&#xff0c; 需要Debug代码&#xff0c;或是看看依赖项的源码的写法&#xff0c; 就需要下载源码包了。 这里以 Apache 的 commons-text 为例&#xff0c; 在Maven中添加如下依赖配置&am…

pwlink用作USB转TTL,进入HC-05的AT模式

不说废话的文章概括&#xff1a; 直接连接PWLINK与HC-05&#xff0c;无法进入AT模式&#xff0c;因为蓝牙模块的VCC只能接5V&#xff0c;不能接3.3V&#xff0c;而且PWLINK有两个VDD引脚&#xff0c;且两个VDD引脚初始默认输出电压都是3.3V&#xff0c;所以需要将3.3V改为5V的…

【JavaEE】网络通信中的一些基本概念及协议分层

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 互联网是怎么来的&#xff1f;很多先进技术&#xff0c;都是先军用&#xff0c;用了之后太香了才逐渐民用~~ 互联网也是如此&#xff0c;互联网之前&#xff0c;可以通过有线/无线&#xf…

单链表——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容终于是我们心心念念的单链表啦&#xff0c;这一块呢&#xff0c;是一个很重要的部分&#xff0c;也是一个对目前的我来说&#xff0c;比较困难的部分&#xff0c;下面&#xff0c;就让我们进入单链表的世界吧 之…

【unity项目实战】3DRPG游戏开发04——导航、人物移动和鼠标指针图片替换

AI导航烘培 还不清楚怎么用的可以看我另一篇文章 零基础带你从小白到超神29——导航系统 将地形调成静态导航的 选中地形,设置为可行区域 点击烘培 可爬坡改为30度,就会发现坑就变为不可行区域了 选择所有的树,为不可行区域,点击烘培 给主角人物添加导航组件

Kafka3.0.0版本——生产者数据可靠性

目录 一、ACK应答原理1.1、应答级别1.1.1、acks 01.1.2、acks 11.1.3、acks -1&#xff08;all&#xff09; 1.2、问题思考 二、数据可靠性2.1、数据可靠性分析2.2、 数据完全可靠条件2.3、ACK应答级别可靠性总结 三、数据可靠性代码示例 一、ACK应答原理 1.1、应答级别 1…

一日一题:第十二题---模拟散列表(三种方法!!)

​作者&#xff1a;小妮无语 专栏&#xff1a;一日一题 &#x1f6b6;‍♀️✌️道阻且长&#xff0c;不要放弃✌️&#x1f3c3;‍♀️ 今天来给大家介绍的是简单的Hash表的应用 目录 关于哈希的知识点 题目描述&#xff08;模拟散列表&#xff09; 代码 1&#xff08;拉链…

基于GPT-4的神仙插件Bito,亲测好用

基于GPT-4的神仙插件&#xff0c;无需魔法,目前免费 一、Bito 简介 最近发现一个可以有效提升coding效率的插件神器&#xff0c;截止当前(20230425)已有65k的下载量了&#xff01; 类似与Cursor一样&#xff0c;可以使用AI辅助写代码&#xff0c;但是又解决Cursor没有语法提…

力扣刷题day35|416分割等和子集

416. 分割等和子集 力扣题目链接 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割…

keil设置程序起始地址及生成bin文件的方法

一.keil设置程序起始地址 1.1FLASH APP 的起始地址设置 随便打开一个之前的实例工程&#xff0c;点击 Options for Target→Target 选项卡 默认的条件下&#xff0c;图中 IROM1 的起始地址&#xff08;Start&#xff09;一般为 0X08000000&#xff0c;大小&#xff08;Size&a…