(Matlab实现)蚂蚁狮子优化算法在电力系统中的应用

news2025/1/13 15:54:33

目录

1 知识一网打尽

2 蚂蚁狮子优化算法在电力系统经济调度中的应用 

 3 运行结果

4 Matlab代码实现

1 知识一网打尽

这里总结一位博主的电力系统经济调度目录

蚂蚁狮子优化算法(完整Matlab代码实现)

多目标蚂蚁狮子优化算法(Matlab代码实现)

粒子群算法求解电力系统环境经济调度+微电网调度(风、光、电动车、柴油机、主网)(Python代码实现)

改进的多目标差分进化算法在电力系统环境经济调度中的应用(Python代码实现)【电气期刊论文复现】

多目标灰太狼算法求解环境经济调度问题(IEEE30)(Matlab实现)

改进粒子群算法求解电力系统经济调度问题(Matlab实现)

多元宇宙算法求解电力系统多目标优化问题(Matlab实现)【电气期刊论文复现】

2 蚂蚁狮子优化算法在电力系统经济调度中的应用 

蚁狮或所谓的涂鸦虫是蚁蛉科家族的成员,属于神经翅目(网翅昆虫)。蚁狮的生命有两个关键阶段:幼虫和成虫。成年期仅持续 3-5 周,用于繁殖。另一方面,生命周期的延长阶段,即幼虫阶段,大部分用于猎杀他们最喜欢的猎物,即蚂蚁。蚁狮幼虫的狩猎行为独特而迷人。如图1所示,是蚂蚁狮子和它的狩猎机制。
                      

它们沿着圆形路径移动,并用它们巨大的下颚扔出沙子,在沙质土壤中形成小的(1-3 英寸长)漏斗形坑,如图2所示,以诱捕蚂蚁。

                    

他们躲在坑底下,等待蚂蚁或小昆虫被困。漏斗形坑的边缘非常锋利,小昆虫无法逃脱,很容易掉到陷阱底部,如图3所示。蚁狮还不断将沙子扔向陷阱的外缘,以阻止猎物的任何逃跑尝试。

                                 

最后,昆虫滑入坑底,被拉到土壤下并被蚁狮吃掉。猎物的残骸被扔到坑外。之后,蚁狮为后续的目标猎物修改坑。蚁狮的饥饿程度越高,它们挖的陷阱就越大。通过这种方式,蚁狮已经进化和调整,以提高它们的生存前景。

详细的数学模型见第一部分的知识一网打尽。

部分代码: 


clc;
clear;
close all;
warning off;

%% 基于MOALO求解具有阀点效应的环境经济调度问题
% 数有 5 列数据分别为燃料成本系数a,b,c和发电机组上下限约束。
% 1.a ($/MW^2) 2. b $/MW 3. c ($) 4.机组下限(MW) 5.机组上限(MW)
%行数表示发电机台数(n)
data=[0.007	7	240	100	500
0.0095	10	200	50	200
0.009	8.5	220	80	300
0.009	11	200	50	150
0.008	10.5	220	50	200
0.0075	12	120	50	120];

%% 网损系数
B=1e-4*[0.14	0.17	0.15	0.19	0.26	0.22
0.17	0.6	0.13	0.16	0.15	0.2
0.15	0.13	0.65	0.17	0.24	0.19
0.19	0.16	0.17	0.71	0.3	0.25
0.26	0.15	0.24	0.3	0.69	0.32
0.22	0.2	0.19	0.25	0.32	0.85
];
%% 负荷需求(MW)
Pd=700;

%% 目标函数
ObjectiveFunction=@eldnba;   %调用目标函数
dim=length(data(:,1));
lb=0;
ub=1;
obj_no=1;

if size(ub,2)==1
    ub=ones(1,dim)*ub;
    lb=ones(1,dim)*lb;
end

%% 初始化蚁狮优化算法参数
max_iter=100;
N=100;
ArchiveMaxSize=100;

Archive_X=zeros(100,dim);
Archive_F=ones(100,obj_no)*inf;

Archive_member_no=0;

r=(ub-lb)/2;
V_max=(ub(1)-lb(1))/10;

Elite_fitness=inf*ones(1,obj_no);
Elite_position=zeros(dim,1);

Ant_Position=initialization(N,dim,ub,lb);
fitness=zeros(N,2);

V=initialization(N,dim,ub,lb);
iter=0;

position_history=zeros(N,max_iter,dim);

for iter=1:max_iter
    
    for i=1:N %首先计算所有的目标值
        Particles_F(i,:)=ObjectiveFunction(Ant_Position(:,i)');
        if dominates(Particles_F(i,:),Elite_fitness)
            Elite_fitness=Particles_F(i,:);
            Elite_position=Ant_Position(:,i);
        end
    end
    
    [Archive_X, Archive_F, Archive_member_no]=UpdateArchive(Archive_X, Archive_F, Ant_Position, Particles_F, Archive_member_no);
    
    if Archive_member_no>ArchiveMaxSize
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
        [Archive_X, Archive_F, Archive_mem_ranks, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks, ArchiveMaxSize);
    else
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
    end
    
    Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);

    index=RouletteWheelSelection(1./(Archive_mem_ranks+1e-20));
    if index==-1
        index=1;
    end
    Elite_fitness=Archive_F(index,:);
    Elite_position=Archive_X(index,:)';
    
    Random_antlion_fitness=Archive_F(1,:);
    Random_antlion_position=Archive_X(1,:)';
    
    for i=1:N
        
        index=0;
        neighbours_no=0;
        
        RA=Random_walk_around_antlion(dim,max_iter,lb,ub, Random_antlion_position',iter);
        
        [RE]=Random_walk_around_antlion(dim,max_iter,lb,ub, Elite_position',iter);
        
        Ant_Position(:,i)=(RE(iter,:)'+RA(iter,:)')/2;
        
        
        
        Flag4ub=Ant_Position(:,i)>ub';
        Flag4lb=Ant_Position(:,i)<lb';
        Ant_Position(:,i)=(Ant_Position(:,i).*(~(Flag4ub+Flag4lb)))+ub'.*Flag4ub+lb'.*Flag4lb;
       
    end
    display(['在迭代时 ', num2str(iter), ', ', num2str(Archive_member_no), ' 非支配解决方案为']);
 K(iter)=Elite_fitness;
 end
[F P Pl]=eldnba(Elite_position)
plot(K)
grid
title('迭代次数与最佳函数值');
xlabel('迭代次数')
ylabel('函数值')  


clc;
clear;
close all;
warning off;

%% 基于MOALO求解具有阀点效应的环境经济调度问题
% 数有 5 列数据分别为燃料成本系数a,b,c和发电机组上下限约束。
% 1.a ($/MW^2) 2. b $/MW 3. c ($) 4.机组下限(MW) 5.机组上限(MW)
%行数表示发电机台数(n)
data=[0.007    7    240    100    500
0.0095    10    200    50    200
0.009    8.5    220    80    300
0.009    11    200    50    150
0.008    10.5    220    50    200
0.0075    12    120    50    120];

%% 网损系数
B=1e-4*[0.14    0.17    0.15    0.19    0.26    0.22
0.17    0.6    0.13    0.16    0.15    0.2
0.15    0.13    0.65    0.17    0.24    0.19
0.19    0.16    0.17    0.71    0.3    0.25
0.26    0.15    0.24    0.3    0.69    0.32
0.22    0.2    0.19    0.25    0.32    0.85
];
%% 负荷需求(MW)
Pd=700;

%% 目标函数
ObjectiveFunction=@eldnba;   %调用目标函数
dim=length(data(:,1));
lb=0;
ub=1;
obj_no=1;

if size(ub,2)==1
    ub=ones(1,dim)*ub;
    lb=ones(1,dim)*lb;
end

%% 初始化蚁狮优化算法参数
max_iter=100;
N=100;
ArchiveMaxSize=100;

Archive_X=zeros(100,dim);
Archive_F=ones(100,obj_no)*inf;

Archive_member_no=0;

r=(ub-lb)/2;
V_max=(ub(1)-lb(1))/10;

Elite_fitness=inf*ones(1,obj_no);
Elite_position=zeros(dim,1);

Ant_Position=initialization(N,dim,ub,lb);
fitness=zeros(N,2);

V=initialization(N,dim,ub,lb);
iter=0;

position_history=zeros(N,max_iter,dim);

for iter=1:max_iter
    
    for i=1:N %首先计算所有的目标值
        Particles_F(i,:)=ObjectiveFunction(Ant_Position(:,i)');
        if dominates(Particles_F(i,:),Elite_fitness)
            Elite_fitness=Particles_F(i,:);
            Elite_position=Ant_Position(:,i);
        end
    end
    
    [Archive_X, Archive_F, Archive_member_no]=UpdateArchive(Archive_X, Archive_F, Ant_Position, Particles_F, Archive_member_no);
    
    if Archive_member_no>ArchiveMaxSize
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
        [Archive_X, Archive_F, Archive_mem_ranks, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks, ArchiveMaxSize);
    else
        Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
    end
    
    Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);

    index=RouletteWheelSelection(1./(Archive_mem_ranks+1e-20));
    if index==-1
        index=1;
    end
    Elite_fitness=Archive_F(index,:);
    Elite_position=Archive_X(index,:)';
    
    Random_antlion_fitness=Archive_F(1,:);
    Random_antlion_position=Archive_X(1,:)';
    
    for i=1:N
        
        index=0;
        neighbours_no=0;
        
        RA=Random_walk_around_antlion(dim,max_iter,lb,ub, Random_antlion_position',iter);
        
        [RE]=Random_walk_around_antlion(dim,max_iter,lb,ub, Elite_position',iter);
        
        Ant_Position(:,i)=(RE(iter,:)'+RA(iter,:)')/2;
        
        
        
        Flag4ub=Ant_Position(:,i)>ub';
        Flag4lb=Ant_Position(:,i)<lb';
        Ant_Position(:,i)=(Ant_Position(:,i).*(~(Flag4ub+Flag4lb)))+ub'.*Flag4ub+lb'.*Flag4lb;
       
    end
    display(['在迭代时 ', num2str(iter), ', ', num2str(Archive_member_no), ' 非支配解决方案为']);
 K(iter)=Elite_fitness;
 end
[F P Pl]=eldnba(Elite_position)
plot(K)
grid
title('迭代次数与最佳函数值');
xlabel('迭代次数')
ylabel('函数值')  

 完整代码:评论区回复关键字

 3 运行结果

4 Matlab代码实现

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

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

相关文章

拒绝灵感焦虑,藏在UI设计师书签里的宝藏网站!

都在说UI设计“越来越吃香”&#xff0c;导致其他门类的设计师一心想转行。 上次和入行8年的UI大佬聊天&#xff0c;她告诉小摹3条UI设计师必备能力&#xff1a; 审美能力和眼界&#xff1a;一个界面好不好看最后都是UI来定&#xff0c;为了不背锅&#xff0c;UI一定要有国际流…

dolphinscheduler2.0.5性能手动测试

目录&#x1f42c;官方配置文件说明&#x1f42c;测试并发量&#x1f420;线程数量设置100&#x1f420;线程数量设置200&#x1f420;线程数量设置500&#x1f42c;测试结论&#x1f42c;官方配置文件说明 官方说明 master.exec.threads&#xff1a; master工作线程数量,用于…

【2013】408联考数据结构真题整理

2013年 1 题目 解析 原始&#xff1a;升序 升序 变 升序 尾插法 改编&#xff1a;升序 升序 变 降序 头插法 2 题目 答案&#xff1a;C 解析 3 题目 答案&#xff1a;B 解析 二叉排序树&#xff0c;或者是空树&#xff0c;或者是满足以下性质的二叉树&#xff1a; …

基于PHP+MySQL音乐网站的设计与实现

随着时代的发展,音乐已经逐渐成为了人们生活中必不可少的一种调剂品,人们对音乐的追求也越来越强烈,为此我通过PHP和MYSQL开发了本音乐网站 本音乐网站是一个综合性的音乐分享网站,它主要实现了娱乐新闻,上榜歌手,音乐试听,音乐下载,下载排行,音乐库,在线留言等基本的音乐共享功…

Matplotlib绘制折线图、散点图、柱状图、直方图、饼图代码

一、折线图 以折线的上升或下降来表示统计数量的增减变化的统计图 特点&#xff1a;能够显示数据的变化趋势&#xff0c;反映事物的变化情况(变化)函数&#xff1a;plt.plot(x, y) import matplotlib.pyplot as plt import randomfrom pylab import mpl mpl.rcParams["f…

day31 文件上传js验证mimeuser.ini语言特性

前言 #知识点&#xff1a; 1、文件上传-前端验证 2、文件上传-黑白名单 3、文件上传-user.ini妙用 4、文件上传-PHP语言特性 #详细点&#xff1a; 1、检测层面&#xff1a;前端&#xff0c;后端等 2、检测内容&#xff1a;文件头&#xff0c;完整性&#xff0c;二次渲染…

基于MATLABsimulink的《电路原理》课程仿真实验平台开发

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1选题背景及意义 1 1.2设计内容 1 1.3设计思想 2 第二章 MATLAB简介 3 2.1 MATLAB程序设计 3 2.2 Simulink仿真 4 2.2.1 Simulink 启动 4 2.2.2 Simulink 模块库及模块操作 4 2.2.3 仿真参数设置 6 2.3图形用户界面&#xff08;GUI&…

基于STM32的温控风扇

本设计是基于STM32的温控风扇&#xff0c;主要实现以下功能&#xff1a; 温度控制风速&#xff0c;四个挡位&#xff0c;停止、低速、中速、高速 按键可切换模式&#xff0c;可手动切换挡位&#xff0c;四个挡位&#xff0c;停止、低速、中速、高速 按键设置温度值&#xff0c…

网络刷卡器开发,刷新移动物联新生活

在物联网应用需求和身份校验普及的影响下&#xff0c;沐渥自主研发生产了一款基于网络协议传输的读卡设备——网络刷卡器&#xff0c;这是一款体积小巧&#xff0c;方便携带&#xff0c;即插即用&#xff0c;无需安装驱动&#xff0c;采用USB通讯&#xff0c;即刻响应对接客户的…

Linux系统漏洞本地提权

目录 一、实验项目名称 二、实验目的 三、实验内容 四、实验环境 五、实验步骤 六、实验结果 七、实验总结 一、实验项目名称 Linux系统漏洞本地提权及跳板设置实验 二、实验目的 1.msf工具的使用&#xff1b; 2.“脏牛”漏洞CVE-2016-5195漏洞利用方法。 三、实验…

MCE | 铁死亡——调节性细胞死亡

多细胞生物中&#xff0c;调节性细胞死亡过程 (RCD) 是细胞维持组织形态和功能必不可少的稳态机制。此前研究较多的调节性细胞死亡包括三大类&#xff1a;细胞凋亡、自噬和坏死。 “铁死亡”这一概念最早在 2012 年由 Dr. Brent R Stockwell 提出&#xff0c;它是一种铁离子依赖…

ORM概念

ORM概念 ORM是Object Relational Mapping 对象关系映射。简单来说&#xff0c;就是把数据库表和实体类及实体类的属性对应起来&#xff0c;让开发者操作实体类就实现操作数据库表。 ORM(Object Relation Mapping)对象关系映射 思想&#xff1a;将关系数据库中表中的记录映射为对…

百货集团数字化转型方案

一、案例简述 后疫情时代对零售业&#xff0c;特别是百货和购物中心造成了巨大冲击&#xff0c;驱使实体零售业拥抱数字化转型。从总体上看&#xff0c;实体零售企业对于数字化转型的必要性已有充分的认知及一定的实践操作&#xff0c;但数字化仍处于起步阶段&#xff0c;线上…

”消费全返“是割韭菜,非也,广告电商引领全新“全返”模式

谈及消费全返&#xff0c;大家可能会避而不谈&#xff0c;因为有“云联惠”这个实实在在的案例发生&#xff0c;各大企业都怕进局子&#xff0c;现在都不弄消费全返了。说到“云联惠”&#xff0c;为什么它能在短时间内火得这么快&#xff0c;因为他们以“全返”为阙头&#xf…

驱动开发2

P 19 驱动设计的思想&#xff1a;面向对象/分层/分离 用结构体来表示某个对象 分离思想 将某个有很多类似操作的写在一起&#xff0c;这样我们根据参数就可以替换不同的步骤了 1、上下分层 将设计硬件的比如 初始化gpio、设置GPIO写成board.c 同用的就写在drv.c里面 2、左右分…

python数据分析与可视化

//注&#xff1a;绿色为正确答案&#xff0c;红色为错误答案&#xff0c;粉色为本人做错之后&#xff0c;系统给出的答案&#xff0c;可能有些题本人未标记&#xff0c;但是是可以区分的&#xff0c;题目中存在重复题目&#xff0c;下面有三张图的代码建议交代码块&#xff0c;…

中小企业知识管理难题怎么做?天翎与群晖携手给出最优解

编者按&#xff1a;在知识经济越来越重要的今天&#xff0c;做好知识管理对企业来说至关重要&#xff0c;但是中小企业的知识管理之路&#xff0c;比起大企业更加困难&#xff0c;该如何应对呢&#xff1f;本文分析了现代中小企业面临的知识管理困境&#xff0c;并进一步提出天…

Spring:AOP通知获取数据(13)

AOP通知获取数据AOP通知获取参数非环绕通知获取参数方式环绕通知获取参数方式AOP通知获取返回值环绕通知获取返回值返回后通知获取返回值AOP通知获取数据的案例AOP通知获取参数 非环绕通知获取参数方式 在方法上添加JoinPoint,通过JoinPoint来获取参数&#xff0c; 这里只使用…

[附源码]Python计算机毕业设计出版社样书申请管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

源自双11混部实战,Koordinator 如何保障应用服务质量?

作者&#xff1a;张佐玮、韩柔刚 Koordinator 团队 在洪峰流量下&#xff0c;如何确保应用的服务质量不受影响的同时&#xff0c;最大限度提升资源利用率&#xff0c;是考验混部技术成熟度的关键。本文将展开介绍Koordinator在资源隔离&#xff0c;单机QoS保障&#xff0c;以及…