⛄一、蝴蝶优化算法(MBO)简介

1 介绍
蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,蝴蝶接收/感知并分析空气中的气味,以确定食物来源/交配伙伴的潜在方向。
蝴蝶利用它们的嗅觉、视觉、味觉、触觉和听觉来寻找食物和伴侣,这些感觉也有助于它们从一个地方迁徙到另一个地方,逃离捕食者并在合适的地方产卵。在所有感觉中,嗅觉是最重要的,它帮助蝴蝶寻找食物(通常是花蜜)。蝴蝶的嗅觉感受器分散在蝴蝶的身体部位,如触角、腿、触须等。这些感受器实际上是蝴蝶体表的神经细胞,被称为化学感受器。它引导蝴蝶寻找最佳的交配对象,以延续强大的遗传基因。雄性蝴蝶能够通过信息素识别雌性蝴蝶,信息素是雌性蝴蝶发出的气味分泌物,会引起特定的反应。
通过观察,发现蝴蝶对这些来源的位置有非常准确的判断。此外,它们可以辨识出不同的香味,并感知它们的强度。蝴蝶会产生与其适应度相关的某种强度的香味,即当蝴蝶从一个位置移动到另一个位置时,它的适应度会相应地变化。当蝴蝶感觉到另一只蝴蝶在这个区域散发出更多的香味时,就会去靠近,这个阶段被称为全局搜索。另外一种情况,当蝴蝶不能感知大于它自己的香味时,它会随机移动,这个阶段称为局部搜索。

2 香味
为了理解BOA中的香味是如何计算的,首先需要理解,像气味、声音、光、温度等这样的模态是如何计算的。感知、处理这些模态需要知道三个重要的术语:感觉模态C、刺激强度I和幂指数a。在感觉模态中,感觉意味着测量能量的形式并以类似方式对其进行处理,而模态是指传感器使用的原始输入。不同的形态可以是气味,声音,光线,温度,在BOA中,模态是香味。I是物理刺激的大小。在BOA中,I与蝴蝶/解决方案的适应度相关。这意味着,当一只蝴蝶散发出更多的香味时,周围的其他蝴蝶可以感知到并被吸引。幂是强度增加的指数。参数a允许正则表达式、线性响应和响应压缩。响应扩展是当I增加时,香味(f)比I增长更快。响应压缩是当I增加时,f比I增长慢。线性响应是当I增加时,f成比例地增加。经实验证明,有时随着刺激的增强,昆虫对刺激变化的敏感性变得越来越低。因此在BOA中,为了估计I的大小,使用了响应压缩。
蝴蝶的自然现象基于两个重要问题:I的变化和f的表示。简单地说,蝴蝶的I与编码后的目标函数相关联。但是,f是相对的,即应该由其他蝴蝶来感知。史蒂文斯幂定律中,为了将气味与其他形式区别开来,使用了C。现在,当I较少的蝴蝶向I较多的蝴蝶移动时,f比I增加得更快。因此,我们应该允许f随幂指数参数a实现的吸收程度而变化。在BOA中,香味被表示为刺激物的物理强度的函数,如下所示:

3 具体算法
为了用搜索算法演示上述讨论,将蝴蝶的上述特征理想化如下:
(1)所有的蝴蝶都可以发出气味,这使蝴蝶间相互吸引。
(2)每只蝴蝶都会随机移动或朝最好的蝴蝶移动,散发出更多的芳香。
(3)蝴蝶的刺激强度受目标函数的景观影响或决定。
该算法分为三个阶段:(1)初始化阶段、(2)迭代阶段和(3)结束阶段。
  在BOA的每次运行中,首先执行初始化阶段,然后进行迭代搜索,最后在找到最优解时终止算法。BOA中使用的参数值也会被分配,设置这些值后,算法将继续创建初始蝴蝶种群以进行优化。由于在BOA的模拟过程中蝴蝶总数保持不变,分配了一个固定大小的内存来存储信息。蝴蝶的位置是在搜索空间中随机生成的,并计算和存储它们的香味和适应值。这样就完成了初始化阶段,算法开始了迭代阶段,该阶段使用创建的人工蝶形执行搜索。算法的第二阶段,即迭代阶段,由算法执行多次迭代。在每次迭代中,解空间中的所有蝶形都移到新位置,然后重新评估其适应性值。算法首先计算解空间中不同位置的所有蝴蝶的适应度值。那么这些蝴蝶就会利用式1在自己的位置产生香味。该算法有两个关键步骤,即全局搜索阶段和局部搜索阶段。在全局搜索阶段,蝴蝶向最合适的蝴蝶/解g∗迈出一步,该蝴蝶/解g可以用公式(2)来表示。

这里,g∗表示在当前迭代的所有解中找到的当前最佳解;fi表示第i只蝴蝶的香味,r是[0,1]中的随机数。局部搜索阶段可以表示为

其中,xjt和xkt是解空间中的第j个蝴蝶和第k个蝴蝶。
蝴蝶寻找食物、交配伙伴可以在局部和全局范围内发生。考虑到地理上的接近和各种其他因素,如雨、风等,在整个交配伙伴或蝴蝶的觅食活动中,寻找食物可能占很大比例。因此,在BOA中使用切换概率p来在普通全局搜索和密集局部搜索之间切换。
在未达到停止标准之前,一直进行迭代。迭代结束的标准可以有多个,如使用的最大CPU时间、达到的最大迭代次数、没有改进的最大迭代次数、达到错误率的特定值或任何其他适当的标准。当迭代阶段结束时,算法输出具有最佳适应度的最优解。

⛄二、部分源代码

%簇群形成:K-means聚类 划分12个区域
%簇头选择:每个区域最高适应度节点当选CH(%适应度主要计算簇头剩余能量、簇头到基站距离、节点到簇头的距离))
%数据传输:节点到BS单跳/多跳传输
%是否每轮选择簇头?(1)每r_CH轮重新分簇 (2)当有簇头死掉重新分簇
clear all;
close all;

global rmax
rmax=1500;
[Round_Alive_Num0,RoundCluster0,Remaining_En0,Round_Packet_Num0]=Improve_LEACH_MSBOA(1);
[Round_Alive_Num0_1,RoundCluster0_1,Remaining_En0_1,Round_Packet_Num0_1]=Improve_LEACH_MSBOA(2);
[Round_Alive_Num1,RoundCluster1,Remaining_En1,Round_Packet_Num1]=Improve_LEACH_MSBOA(2);
[Round_Alive_Num1_1,RoundCluster1_1,Remaining_En1_1,Round_Packet_Num1_1]=Improve_LEACH_BOA(1);

figure;
hold on
plot(Round_Alive_Num0,‘Color’,‘#167C80’,‘LineWidth’,1.5);
plot(Round_Alive_Num0_1,‘Color’,‘#4DBEEE’,‘LineWidth’,1.5);
plot(Round_Alive_Num1,‘Color’,‘#EDB120’,‘LineWidth’,1.5);
plot(Round_Alive_Num1_1,‘Color’,‘#7E2F8E’,‘LineWidth’,1.5);
title(‘每轮存活的节点数量’);
legend(‘MSBOA’, ‘F-MSBOA’,‘F-BOA’,‘BOA’)

figure;
hold on
plot(RoundCluster0,‘Color’,‘#167C80’,‘LineWidth’,1.5);
plot(RoundCluster0_1,‘Color’,‘#4DBEEE’,‘LineWidth’,1.5);
plot(RoundCluster1,‘Color’,‘#EDB120’,‘LineWidth’,1.5);
plot(RoundCluster1_1,‘Color’,‘#7E2F8E’,‘LineWidth’,1.5);
title(‘每轮选择簇头的数量’);
legend(‘MSBOA’, ‘F-MSBOA’,‘F-BOA’,‘BOA’)

figure;
hold on
plot(Remaining_En0,‘Color’,‘#167C80’,‘LineWidth’,1.5);
plot(Remaining_En0_1,‘Color’,‘#4DBEEE’,‘LineWidth’,1.5);
plot(Remaining_En1,‘Color’,‘#EDB120’,‘LineWidth’,1.5);
plot(Remaining_En1_1,‘Color’,‘#7E2F8E’,‘LineWidth’,1.5);
title(‘每轮的剩余能量’); %全部节点的剩余能量之和
legend(‘MSBOA’, ‘F-MSBOA’,‘F-BOA’,‘BOA’)

figure;%传输到基站的数据量
hold on
plot(Round_Packet_Num0,‘Color’,‘#167C80’,‘LineWidth’,1.5);
plot(Round_Packet_Num0_1,‘Color’,‘#4DBEEE’,‘LineWidth’,1.5);
plot(Round_Packet_Num1,‘Color’,‘#EDB120’,‘LineWidth’,1.5);
plot(Round_Packet_Num1_1,‘Color’,‘#7E2F8E’,‘LineWidth’,1.5);
title(‘每轮的数据量’);
legend(‘MSBOA’, ‘F-MSBOA’,‘F-BOA’,‘BOA’)

⛄三、运行结果




⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 宁杰琼,何庆.混合策略改进的蝴蝶优化算法[J].计算机应用研究,2021,38(06)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

【LEACH协议】基于matlab蝴蝶优化算法WSN安全分簇路由设计【含Matlab源码 2567期】相关推荐

  1. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  2. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  3. 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】

    一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  4. 【Matlab水果蔬菜识别】形态学水果蔬菜识别【含GUI源码 919期】

    一.代码运行视频(哔哩哔哩) [Matlab水果蔬菜识别]形态学水果蔬菜识别[含GUI源码 919期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅. ...

  5. 【Matlab青草识别】形态学马唐草+牛筋草识别【含GUI源码 908期】

    一.代码运行视频(哔哩哔哩) [Matlab青草识别]形态学马唐草+牛筋草识别[含GUI源码 908期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  6. 【Matlab限速标志识别】形态学限速标志识别【含GUI源码 1142期】

    一.代码运行视频(哔哩哔哩) [Matlab限速标志识别]形态学限速标志识别[含GUI源码 1142期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  7. 【微电网优化】基于matlab粒子群算法求解综合能源系统优化问题【含Matlab源码 1969期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[微电网优化]基于matlab粒子群算法求解综合能源系统优化问题[含Matlab源码 1969期] 点击上面蓝色字体,直接付费下载,即可. ...

  8. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  9. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

最新文章

  1. vue 判断同一数组内的值是否一直_前端代码+后端API,值得一学的Vue高仿音乐播放器实战项目
  2. 页面获取Spring Security登录用户
  3. python seaborn 热图 值对应颜色_基于行值的seaborn热图配色方案
  4. LeetCode 846. 一手顺子(map)
  5. oracle update并行,Oracle update 优化方式,tuning update!
  6. MongoDB 数据库管理(不定时更新)
  7. 14.段落排版--行间距(行高)
  8. 【转】一个小妙招能让你在服装上省下好多rmb
  9. 数字全息干涉重建算法研究
  10. html 微信扫码登录,前端使用微信扫码登录
  11. 如何进行企业设备管理?
  12. 计算机表格常用公式,十个办公常用的最基本的Excel函数
  13. 取消 “是否把IE8设置为默认浏览器提示 提示
  14. 【论文阅读笔记】GPT三部曲
  15. 再见2022,你好2023
  16. 企业流程篇--项目管理(七)
  17. c语言扑克牌同花顺比大小,为什么打扑克时“同花顺”最大
  18. c语言实验--九九乘法表,C语言程序设计实验四 参考答案.doc
  19. ABBYY简体中文版终身授权半价来袭,这个双十一简直了
  20. 嵌入式C++开发详解

热门文章

  1. 请放下你的无效社交#思维方式#
  2. 以区块链安全攻防技术为主要竞技内容的成规模比赛
  3. PageHelper查询分页
  4. 超详细 erlang服务器之微信公众号被动解析用户消息(明文模式安全模式)
  5. 事件循环-宏任务-微任务
  6. 停车场计费系统(HTML版)————JavaScript的应用
  7. java-net-php-python-jspm出版社的图文管理系统计算机毕业设计程序
  8. 公网ip和内网ip是什么?有什么区别?
  9. 陈天桥为什么寻求盛大网络私有化?
  10. [深入研究4G/5G/6G专题-39]: URLLC-10-《3GPP URLLC相关协议、规范、技术原理深度解读》-4-如何区分URLLC业务?网络切片的架构与技术详解