基于蝙蝠算法实现电力系统经济调度(Matlab代码实现)

news2024/9/20 18:50:22

目录

摘要:

1.蝙蝠优化算法的基本原理:

2.蝙蝠优化算法的流程:

3.仿真实验分析:


摘要:

基于Matalb平台,构建基于蝙蝠活动行为的蝙蝠优化算法,对一个含有6个火电机组的电力系统进行优化调度,其中优化调度的目标函数为火电机组运行成本最小,其中约束条件有:功率平衡约束,火电机组最大最小出力约束,火电机组爬坡约束,网络潮流约束,等。结果表明,所提的蝙蝠优化算法可以很好的完成电力系统优化调度决策任务。程序注释详细,出图美观,适合初学者学习入门智能优化算法或电力系统经济调度。

1.蝙蝠优化算法的基本原理:

蝙蝠算法是模拟蝙蝠发出和接收自身发出的超声波来捕食猎物这一行为提出的一

种全局型群智能优化算法。在该算法中,每只蝙蝠在搜索空间中的位置代表一个解,对

于不同的适应度函数,每只蝙蝠都有自己的适应度值,算法比较每只蝙蝠的适应度值来

找出当前全局最优位置,然后调整蝙蝠种群的脉冲发射频率、强度,朝着当前最优位置

不断搜索,最终找到全局最优解。

(1)  种群中的所有蝙蝠都用回声定位系统来判断距离,并且它们能够区分猎物与障

碍物。

(2)  蝙蝠在位置Xi以速度Vi 飞行。以固定频率fmin,强度Ao来搜捕猎物,它们能够

根据与猎物的距离自发调节发出声波的波长或者频率,在接近猎物时自发调整脉冲发射

频率ri。

(3)  假设声波强度的最小值为Amin ,最大值为Ao 。 蝙蝠的捕食过程可描述为:蝙蝠种群随机分布在搜索空间中,每只蝙蝠的位置为Xi( 1, 2,3,..,N),蝙蝠能够在位置Xi发出频率为fi强度为Ao的超声波搜索猎物,确定目标后,蝙蝠以速度Vi 向猎物飞行。并根据猎物与自己的距离实时调整飞行速度、声波强度和脉冲发射频率,逐渐向猎物靠近,最终成功捕食猎物。根据蝙蝠捕食过程,算法的迭代次数为t,蝙蝠个体i 发出超声波的频率、速度和位置在第t 代的更新公式如下:

(2-1)

(2-2、2-3)

当蝙蝠种群逐渐向全局最优解靠近时,算法就采用局部搜索策略,局部位置更新

公式如下:

(2-4)

2.蝙蝠优化算法的流程:

3.仿真实验分析:

以下为部分运行结果,主要是分为电力系统稳态运行情况下的和电力系统暂稳态运行情况下的:

完整代码——个人主页:电气辅导帮 

部分代码:

clc; % 清除命令窗口中的任何工作或数据
clear; % 在使用前清除所有可变量的值
close all; % 关闭所有打开的图片
%% 导入机组参数与模型
doc_name = 'ED_result.doc';
plot_Fcost = 'FuelCostCurve.png';
plot_Iterr = 'ItterationsCurve.png';
plot_Ploss = 'PowerLossCurve.png';
bar_Ploss = 'PowerLossChart.png';
bar_Fcost = 'FuelCostBar.png';
hvdc_Losses = 'HVDC_loses.png';
transmission_modes = ["HVAC","HVDC"];
source = ["6thermal","4thermal","2wind"];
% 分配输入与输出的各种参数
[power_loss,F_cost,iterrations,sw_loss,cond_loss,tl_loss,F_cost_inst] = deal(zeros);
demand = [120 150 180 210 240 270 300 330 360 390 420]; % 定义各个节点的负荷需求
load_demand_values = numel(demand); % 使用numel函数对矩阵的元素进行计数
print = fopen(doc_name,'w+');
% 定义全球变量,可用于所有函数
global fuel_coefficients B power_demand Pg_limits transmission_type ...
    Cond_loss SW_loss TL_loss convergence_time start_timing DRi URi ...
    n f_cost beta tao time instability inst_const
% 有5列燃料成本系数的燃料系数矩阵(发电机燃料消耗矩阵)
fuel_coefficients = [0.00375 2.00 240  0 0;
    0.01750 1.75 200 0 0;
    0.06250 1.00 220 40 0.008;
    0.00834 3.25 200 30 0.009;
    0.02500 3.00 220 0 0;
    0.02500 3.00 190 0 0];
generator_limits = [50 200;20 80;15 50;10 35;10 30;12 40];% 定义发电机功率限制
% 发电机上下爬坡功率定义
DRi= [85 22 15 16 9 16];
URi= [65 12 12 8 6 8];
beta = 1.75;
tao = 2.85;
time = 10; % 发电机暂稳态时间定义
instability = false(); % 将第一次计算设定为没有不稳定因素
n = length(fuel_coefficients(:,1)); %返回fuel_coefficients变量的长度
%% 循坏开始
for type = 1:numel(transmission_modes)% 在每个模式中循环往复
    transmission_type = transmission_modes(type);
    fprintf(print,strcat('ECONOMIC DISPATCH FOR _', ... 
        ' USING NOVEL BAT OPTIMIZATION ALGORITHM \n'));
    %% Step 1:找到B矩阵
    loss_coef = [0.000218 0.000103 0.000009 -0.000010 0.000002 0.000027
        0.000103 0.000181 0.000004 -0.000015 0.000002 0.000030
        0.000009 0.000004 0.000417 -0.000131 -0.000153 -0.000107
        -0.000010 -0.000015 -0.000131 0.000221 0.000094 0.000050
        0.000002 0.000002 -0.000153 0.000094 0.000243 -0.000000
        0.000027 0.000030 -0.000107 0.000050 -0.000000 0.000358];

clc; % 清除命令窗口中的任何工作或数据
clear; % 在使用前清除所有可变量的值
close all; % 关闭所有打开的图片
%% 导入机组参数与模型
doc_name = 'ED_result.doc';
plot_Fcost = 'FuelCostCurve.png';
plot_Iterr = 'ItterationsCurve.png';
plot_Ploss = 'PowerLossCurve.png';
bar_Ploss = 'PowerLossChart.png';
bar_Fcost = 'FuelCostBar.png';
hvdc_Losses = 'HVDC_loses.png';
transmission_modes = ["HVAC","HVDC"];
source = ["6thermal","4thermal","2wind"];
% 分配输入与输出的各种参数
[power_loss,F_cost,iterrations,sw_loss,cond_loss,tl_loss,F_cost_inst] = deal(zeros);
demand = [120 150 180 210 240 270 300 330 360 390 420]; % 定义各个节点的负荷需求
load_demand_values = numel(demand); % 使用numel函数对矩阵的元素进行计数
print = fopen(doc_name,'w+');
% 定义全球变量,可用于所有函数
global fuel_coefficients B power_demand Pg_limits transmission_type ...
    Cond_loss SW_loss TL_loss convergence_time start_timing DRi URi ...
    n f_cost beta tao time instability inst_const
% 有5列燃料成本系数的燃料系数矩阵(发电机燃料消耗矩阵)
fuel_coefficients = [0.00375 2.00 240  0 0;
    0.01750 1.75 200 0 0;
    0.06250 1.00 220 40 0.008;
    0.00834 3.25 200 30 0.009;
    0.02500 3.00 220 0 0;
    0.02500 3.00 190 0 0];
generator_limits = [50 200;20 80;15 50;10 35;10 30;12 40];% 定义发电机功率限制
% 发电机上下爬坡功率定义
DRi= [85 22 15 16 9 16];
URi= [65 12 12 8 6 8];
beta = 1.75;
tao = 2.85;
time = 10; % 发电机暂稳态时间定义
instability = false(); % 将第一次计算设定为没有不稳定因素
n = length(fuel_coefficients(:,1)); %返回fuel_coefficients变量的长度
%% 循坏开始
for type = 1:numel(transmission_modes)% 在每个模式中循环往复
    transmission_type = transmission_modes(type);
    fprintf(print,strcat('ECONOMIC DISPATCH FOR _', ... 
        ' USING NOVEL BAT OPTIMIZATION ALGORITHM \n'));
    %% Step 1:找到B矩阵
    loss_coef = [0.000218 0.000103 0.000009 -0.000010 0.000002 0.000027
        0.000103 0.000181 0.000004 -0.000015 0.000002 0.000030
        0.000009 0.000004 0.000417 -0.000131 -0.000153 -0.000107
        -0.000010 -0.000015 -0.000131 0.000221 0.000094 0.000050
        0.000002 0.000002 -0.000153 0.000094 0.000243 -0.000000
        0.000027 0.000030 -0.000107 0.000050 -0.000000 0.000358];
 

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

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

相关文章

redis6.2(二)Redis的新数据类型、使用java语言操作Redis

redis的安装配置、基本数据类型可以参考: redis6.2(一)安装、配置、常用数据类型 5、Redis的新数据类型 (1) Bitmaps Redis提供了Bitmaps这个“数据类型”可以实现对位的操作: (1) Bitmaps本身不是一种数据类型&am…

Spring基础篇:MVC框架整合

MVC框架整合 MVC框架整合思想 搭建Web运行环境 在Project structor当中进行创建一个maven项目,使用maven-archetype-webapp这个模式来创建maven项目(使用这种模板创建项目的好处就是好多东西都给你搭建好了。),项目下Src>mai…

12月03日(第五天)

case 后面必须是常量或者字面量,swtich(表达式),表达式可以是short,int,byte,char或者字符串,每个case要注意break语句, switch case的使用,stream流操作对象是数组或集合,第一步获取源数据&…

mysql基础部分第一次复习(9-18章)

子查询 SELECT last_name,salary FROM employees WHERE salary > ( SELECT salary FROM employees WHERE last_name Abel );SELECT department_id, MIN(salary) FROM employees GROUP BY department_id HAVING MIN(salary) > (SELECT MIN(salary) FROM employees WHERE…

JavaScript -- 09. 内置对象的介绍

文章目录内置对象1 解构赋值1.1 保留默认值1.2 接受剩余的所有参数1.3 对函数执行结果解构1.4 交换两个变量的值1.5 二维数组结构2 对象的解构2.1 声明对象同时解构对象2.2 先声明再解构2.3 解构不存在的属性2.4 设置解构别名2.5 设置解构默认值3 对象的序列化3.1 对象的序列化…

【OpenCV-Python】教程:3-15 分水岭图像分割

OpenCV Python 分水岭图像分割 【目标】 学习使用分水岭方法进行基于标记的图像分割cv2.watershed() 【理论】 任何灰度图像都可以被视为地形表面,其中高强度表示山峰和丘陵,而低强度表示山谷,。你开始用不同颜色的水(标签&am…

耗时4个月,阿里架构师打造Java面试突击文档,10位朋友已拿offer

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个有章可循”说的意思只是说应对技术面试是可以提前准备。运筹帷幄之后,决胜千里之外!不打毫无准备的仗 …

数据结构与算法(六) 贪心算法

这篇文章来讲贪心算法(Greedy Algorithm),这是一种特殊的动态规划算法 1、本质 我们在之前的文章中讲过,动态规划可以解决一类具有最优子结构和重叠子问题特征的问题 贪心算法本质上是一种特殊的动态规划算法,因此在…

微前端:qiankun的五种通信方式

背景 今天盘点一下 qiankun 父子应用的通信方式都有哪些,我发现了 5 种。 1、localStorage/sessionStorage 2、通过路由参数共享 3、官方提供的 props 4、官方提供的 actions 5、使用vuex或redux管理状态,通过shared分享 接下来我们一个一个进行说明 …

S/4HANA(本地部署或云版)跟 SAP 家族系统以及非SAP系统的集成,到底什么是推荐的方式?

笔者的知识星球,有朋友提问: S4HANA(本地部署或云版)跟SAP家族系统以及非SAP系统的集成,sap的标准/推荐做法是通过BTP还是直接连接,或者是根据目标系统分别选择?有参考链接最好了。 首先 SAP S/4HANA 的技术栈&#xf…

java数组应用(栈和队列以及酒店模拟)

1.编写程序,使用一维数组,模拟栈数据结构 要求1.栈内可以存放任意数据2.栈内提供push方法模拟压栈3.栈内提供pop方法模拟出栈4.栈的大小默认为10 新建MyStack类 /*** author DeYou* date 2022/11/10 23:01*/ public class MyStack {Object[] element;int index;public MyStack…

blender Eevee渲染器

文章目录简介.采样.环境光遮蔽.辉光.景深.次表面散射.屏幕空间反射.间接光照明.阴影.体积.简介. 1 EV渲染器是实时渲染,类似于游戏引擎,效果差于Cycles 2 EV渲染器使用的设备是显卡 采样. 1 渲染和视图分别指渲染模式和视图模式的采样值,值越大&#…

Android Studio 中MotinLayout的简单使用

​ 一、什么是MotionLayout MotionLayout 是一种布局类型,可帮助您管理应用中的运动和微件动画。MotionLayout 是 ConstraintLayout 的子类,在其丰富的布局功能基础之上构建而成。 二、使用MotionLayout的准备 1.添加MotionLayout依赖项 要在项目中使用…

【菜鸡读论文】Face2Exp: Combating Data Biases for Facial Expression Recognition

【菜鸡读论文】Face2Exp: Combating Data Biases for Facial Expression Recognition 最近上海开始降温了,而且常常下雨,天气开始变得好冷啊!以前年轻的时候冬天经常穿的少,现在膝盖开始有点遭不住了,小伙伴们一定要保…

Go字符串拼接6种方式及其性能测试:strings.builder最快

Go字符串拼接常见的方式有加号、fmt.Sprintf、strings.Builder、bytes.Buffer、strings.join、切片。 package concat_stringimport ("bytes""fmt""strconv""strings""testing" )const numbers 100// func BenchmarkStri…

Kafka安装与配置

1、Java环境为前提 (1)上传jdk-8u261-linux-x64.rpm到服务器并安装: rpm -ivh jdk-8u261-linux-x64.rpm (2)配置环境变量: vim /etc/profile # 生效 source /etc/profile # 验证 java -version 2、Zook…

贝叶斯定理~~概率分布

还是搬来了基础自己学习用哦 ~~ 从最基础的概率论到各种概率分布全面梳理了基本的概率知识与概念,这些概念可能会帮助我们了解机器学习或开拓视野。这些概念是数据科学的核心,并经常出现在各种各样的话题上。重温基础知识总是有益的,这样我们…

适应性哈夫曼编码(Adaptive Huffman coding)

适应性哈夫曼编码适应性哈夫曼编码简介算法示例适应性哈夫曼编码 简介 适应性哈夫曼编码(Adaptive Huffman coding),又称动态哈夫曼编码(Dynamic Huffman coding),是基于哈夫曼编码的适自适应编码技术。它…

深度学习Day07

Recurrent Neural Network 智慧客服——Slot Filling 根据上 下文产生不同的output

Java搭建宝塔部署实战毕设项目WMS仓库管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的毕业设计项目WMS仓库管理系统源码。 技术架构 技术框架:SpringMVC Mybatis Ehcache bootstrap jquery mysql5.7运行环境:jdk8 nginx1.20 tomcat9 In…