返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >蝴蝶优化算法及实现源码
  • 883
分享到

蝴蝶优化算法及实现源码

2024-04-02 19:04:59 883人浏览 泡泡鱼
摘要

目录算法简介香味具体算法参考文献群智能算法学习笔记笔记内容和仿真代码可能会不断改动如有不当之处,欢迎指正 算法简介 蝴蝶优化算法(butterfly optimization alG

群智能算法学习笔记
笔记内容和仿真代码可能会不断改动
如有不当之处,欢迎指正

算法简介

蝴蝶优化算法(butterfly optimization alGorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,蝴蝶接收/感知并分析空气中的气味,以确定食物来源/交配伙伴的潜在方向。

蝴蝶利用它们的嗅觉、视觉、味觉、触觉和听觉来寻找食物和伴侣,这些感觉也有助于它们从一个地方迁徙到另一个地方,逃离捕食者并在合适的地方产卵。在所有感觉中,嗅觉是最重要的,它帮助蝴蝶寻找食物(通常是花蜜)。蝴蝶的嗅觉感受器分散在蝴蝶的身体部位,如触角、腿、触须等。这些感受器实际上是蝴蝶体表的神经细胞,被称为化学感受器。它引导蝴蝶寻找最佳的交配对象,以延续强大的遗传基因。雄性蝴蝶能够通过信息素识别雌性蝴蝶,信息素是雌性蝴蝶发出的气味分泌物,会引起特定的反应。

通过观察,发现蝴蝶对这些来源的位置有非常准确的判断。此外,它们可以辨识出不同的香味,并感知它们的强度。蝴蝶会产生与其适应度相关的某种强度的香味,即当蝴蝶从一个位置移动到另一个位置时,它的适应度会相应地变化。当蝴蝶感觉到另一只蝴蝶在这个区域散发出更多的香味时,就会去靠近,这个阶段被称为全局搜索。另外一种情况,当蝴蝶不能感知大于它自己的香味时,它会随机移动,这个阶段称为局部搜索。

香味

  为了理解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中,香味被表示为刺激物的物理强度的函数,如下所示:

在这里插入图片描述

其中f为香味的大小,即其他蝴蝶感知到的香味强度,c 为感官模态,在[0,1]之间取值;I 为刺激强度;a 为幂指数,在[0,1]之间取值。在一个极端情况下,a=1,意味着一只特定蝴蝶发出的香气量被其他蝴蝶以同样的能力感知到,这相当于说香味是在理想化的环境中传播的,在这个区域的任何地方都可以感觉到一只散发着香味的蝴蝶。因此,可以很容易地达到单个(通常是全局的)最优值。另一方面,如果a=0,这意味着任何一只蝴蝶散发出的香味都不会被其他蝴蝶感觉到。所以,参数a控制算法的行为。另一个重要参数是c,它也是决定BOA算法收敛速度和性能的关键参数。理论上c∈[0,∞],但实际上是由待优化系统的特性决定的。A和c的取值对算法的收敛速度有重要影响。在最大化问题中,强度可以与目标函数成正比。

具体算法

为了用搜索算法演示上述讨论,将蝴蝶的上述特征理想化如下:

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时间、达到的最大迭代次数、没有改进的最大迭代次数、达到错误率的特定值或任何其他适当的标准。当迭代阶段结束时,算法输出具有最佳适应度的最优解。

参考文献

[1] Arora S, Singh S. Butterfly optimization algorithm: a novel approach for global optimization[J]. Soft Computing. 2019, 23(3): 715-734.

以上就是蝴蝶优化算法及实现源码的详细内容,更多关于蝴蝶优化算法的资料请关注编程网其它相关文章!

--结束END--

本文标题: 蝴蝶优化算法及实现源码

本文链接: https://lsjlt.com/news/138278.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 蝴蝶优化算法及实现源码
    目录算法简介香味具体算法参考文献群智能算法学习笔记笔记内容和仿真代码可能会不断改动如有不当之处,欢迎指正 算法简介 蝴蝶优化算法(butterfly optimization alg...
    99+
    2024-04-02
  • 互联网中蝴蝶优化算法是什么
    这篇文章主要为大家展示了“互联网中蝴蝶优化算法是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“互联网中蝴蝶优化算法是什么”这篇文章吧。算法简介蝴蝶优化算法(butterfly optimiz...
    99+
    2023-06-29
  • 怎么实现及优化快速排序算法
    本篇内容主要讲解“怎么实现及优化快速排序算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么实现及优化快速排序算法”吧!前言快速排序可以说是使用最广的排序算法...
    99+
    2024-04-02
  • python实现AES算法及AES-CFB8加解密源码
    目录Python实现AES算法生成轮密钥加密解密完整代码如下测试测试程序Python实现AES-CFB8加解密Python实现AES算法 密码学课程老师留的作业,我觉得用python...
    99+
    2024-04-02
  • java实现计算器模板及源码
    计算器实现了大部分基础功能:基本运算,菜单栏选项,并且拓展了普通型和科学兴选项等等,读者可以在此基础上进行修改和拓展。其他具体实现方法可以看源码,里面有详细的概述,代码框架清晰。 运...
    99+
    2024-04-02
  • Matlab实现黑洞优化算法的示例代码
    目录前言1.概述1.1黑洞算法1.2黑洞搜索优化算法1.3黑洞搜索算法的实现过程2.Matlab代码实现2.1主函数2.2目标函数2.3黑洞优化算法 3.结果展现前言 应...
    99+
    2024-04-02
  • LRU算法及Apache LRUMap源码实例解析
    目录1. 什么是LRU1.1 自定义实现LRU的要求1.2 Apache LRUMap示例1.2.1 pom依赖1.2.2 demo2. 源码解析2.1 设计2.2 数据结构2.3 ...
    99+
    2024-04-02
  • Python&Matlab实现灰狼优化算法的示例代码
    目录1 灰狼优化算法基本思想2 灰狼捕食猎物过程2.1 社会等级分层2.2 包围猎物2.3 狩猎2.4 攻击猎物2.5 寻找猎物3 实现步骤及程序框图3.1 步骤3.2 程序框图4 ...
    99+
    2024-04-02
  • 优化 PHP 算法实现的技巧
    优化 php 算法实现技巧包括:使用内置函数;减少不必要的循环;使用寻址符号 & 提高效率;优化数组访问,例如提前计算数组长度、使用 list() 函数分配多个元素、使用...
    99+
    2024-05-07
    算法 php 冒泡排序
  • 基于Go语言实现选择排序算法及优化
    目录选择排序图片演示普通算法优化算法小结选择排序 选择排序是一种简单的比较排序算法,它的算法思路是首先从数组中寻找最小(大)的元素,然后放到数组中的第一位,接下来继续从未排序的元素中...
    99+
    2022-12-09
    Go语言实现选择排序算法 Go语言选择排序 Go 选择排序
  • java LRU算法及Apache LRUMap源码实例分析
    本篇内容主要讲解“java LRU算法及Apache LRUMap源码实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java LRU算法及Apache LRUMap源...
    99+
    2023-06-21
  • 基于Matlab实现鲸鱼优化算法的示例代码
    目录1.鲸鱼优化算法建模1.1 包围猎物1.2 螺旋狩猎1.3 搜索猎物 1.4 算法流程图2.Matlab代码实现 2.1 结果2.2 代码...
    99+
    2024-04-02
  • 基于Matlab实现野狗优化算法的示例代码
    目录1.概述2.捕食过程的数学模型2.1 种群初始化2.2 群体攻击过程2.3 迫害攻击过程2.4 野狗的存活率3.Matlab代码实现3.1 代码3.2 结果1.概述 ...
    99+
    2024-04-02
  • 基于Matlab实现嗅觉优化算法的示例代码
    目录1.概述2.37 个 CEC 基准测试函数代码3.F1 Matlab代码仿真1.概述 嗅觉剂优化是一种新颖的优化算法,旨在模仿气味分子源尾随的药剂的智能行为。该概念分为三个阶段(...
    99+
    2024-04-02
  • Matlab如何实现黑洞优化算法
    这篇文章主要介绍“Matlab如何实现黑洞优化算法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Matlab如何实现黑洞优化算法”文章能帮助大家解决问题。1.概述1.1黑洞算法根据黑洞现象原理首次提...
    99+
    2023-07-02
  • Java实现常见排序算法的优化
    冒泡排序 冒泡排序的思想: 每次让当前的元素和它的下一个元素比较大小、如果前一个的元素大于后一个元素的话,交换两个元素。 这样的话经历一次扫描之后能确保数组的最后一个元素一定是数组中...
    99+
    2024-04-02
  • Python优化算法之遗传算法案例代码
    目录一、前言二、安装三、遗传算法3.1 自定义函数3.2 遗传算法进行整数规划3.3 遗传算法用于旅行商问题3.4 使用遗传算法进行曲线拟合一、前言 优化算法,尤其是启发式的仿生智能...
    99+
    2023-02-18
    Python遗传算法 Python优化算法
  • C++冒泡排序及其优化算法
    目录冒泡排序极其优化算法步骤全部程序冒泡排序代码优化思路冒泡排序优化核心代码冒泡排序极其优化 算法步骤 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元...
    99+
    2024-04-02
  • 优化算法库DEAP的粒子群优化算法(PSO)示例代码分析
    之前使用优化算法库DEAP做遗传算法(Genetic Optimization),最近在研究粒子群优化算法(PSO)发现DEAP也提供支持;对原代码做了分析,之后会尝试用于交易策略参数优化。首先关于粒子群优化算法(PSO),这个算法的介绍很...
    99+
    2023-06-02
  • matlab遗传算法求解车间调度问题分析及实现源码
    目录一、车间调度简介1 车间调度定义2 传统作业车间调度二、遗传算法简介1 遗传算法概述2 遗传算法的特点和应用3 遗传算法的基本流程及实现技术3.1 遗传算法的基本流程3.2 遗传...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作