智能优化算法:混合蛙跳算法

文章目录

  • 智能优化算法:混合蛙跳算法
    • 1.算法原理
    • 2.算法流程
    • 3.算法结果
    • 4.参考文献
    • 5.Matlab代码

摘要:混合蛙跳算法(SFLA)是Eusuff等人 [1] 于2003年提出的一种基于群体的亚启发式协同搜索群智能算法. 该算法是建立在群中个体具有的模因进化和利用模因实现全局信息交换基础上的.具有概念简单、参数少、计算速度快、全局寻优能力强、易于实现等特点。

1.算法原理

混合蛙跳优化算法是模仿青蛙觅食过程中的群体信息交互机制而建立的一类智能计算优化算法。 该优化算法结合了模因(Meme)演算法和粒子群优化算法各自的优点,具有概念简单、控制参数少、计算量小、全局寻优能力强、鲁棒性好、易于实现等特点。 为此,选取该优化算法来求取相机模型的参数初始值。 其基本原理可描述为:

假设 L=F1,F2,…,FNL={F_1 ,F_2 ,…,F_N }L=F1​,F2​,…,FN​为 NNN只青蛙组成的初始种群;其中,Fi=xi1,xi2,…,xiSF_i = {x_{i1} ,x_{i2} ,…,x_{iS} }Fi​=xi1​,xi2​,…,xiS​为所求问题的 SSS维解空间中的第 iii 只青蛙。 并且,将该种群内的青蛙个体按适应值降序排列。 接着把整个种群划分为mmm个模因组,第 1 只青蛙划入第 1 个模因组,第 2 只青蛙划入第 2 个模因组,第mmm只青蛙划入第mmm个模因组,第 m+1m +1m+1 只青蛙划入第m+1m +1m+1个模因组,依此类推,直至种群内所有青蛙分配完毕。

同时,把每一个模因组内具有最好适应值和最差适应值的青蛙分别标记为 FbF_bFb​ 和 FwF_wFw​ ,而该种群中具有最优适应值的青蛙标记为 FgF_gFg​ 。 然后,对模因组内的每一个青蛙执行局部位置更新操作,具体更新公
式为:
{D=r(Fb−Fw)(−Dmax≤D≤Dmax)Fw=Fw+D(1)\begin{cases} D = r(F_b-F_w) \\ \quad \quad \quad \quad \quad \quad \quad (-D_{max}\leq D \leq D_{max})\\ F_w =F_w +D \tag{1} \end{cases} ⎩⎪⎨⎪⎧​D=r(Fb​−Fw​)(−Dmax​≤D≤Dmax​)Fw​=Fw​+D​(1)
式中,rrr为0 ~1 之间的随机数;DDD为青蛙移动的距离;FwF_wFw​为青蛙位置;DmaxD_{max}Dmax​青蛙所允许移动的最大距离。

如果更新后得到的青蛙优于原来的青蛙,则可替代原模因组内的青蛙 FwF_wFw​ ;否则,用 FgF_gFg​ 代替 FbF_bFb​ ,执行局部位置更新操作:
{D=r(Fg−Fw)(−Dmax≤D≤Dmax)Fw=Fw+D(2)\begin{cases} D = r(F_g-F_w) \\ \quad \quad \quad \quad \quad \quad \quad (-D_{max}\leq D \leq D_{max})\\ F_w =F_w +D \tag{2} \end{cases} ⎩⎪⎨⎪⎧​D=r(Fg​−Fw​)(−Dmax​≤D≤Dmax​)Fw​=Fw​+D​(2)
如果式(2)操作仍然不能获得更好适应值的青蛙或移动过程中超过了青蛙所允许的最大移动距离,那么就随机生成一个新的青蛙直接替代原来的FwF_wFw​ 。 重复数次以上局部位置更新操作,并将所有模因组内的青蛙重新混合排序和划分模因组,再执行下一轮的数次局部位置更新操作,直到满足预先设定的收敛条件或者达到混合最大迭代次数为止。

2.算法流程

(1)初始化相关参数,在所求问题的定义域内随机产生 NNN 只青蛙,构成一个初始种群,并置模因组数为 mmm,模因组内的青蛙个数为 nnn,使其满足 N=m∗nN =m*nN=m∗n n;置混合最大迭代次数为 GGG。

(2)计算每只青蛙的适应值,并按照其适应值的大小降序排列、选出该种群中具有最优适应值的FgF_gFg​ 和划分模因组。

(3) 选出每个模因组的 FbF_bFb​ , 依据式 (3) 和式(4),执行局部位置更新操作,更新每个模因组的FwF_wFw​ 。

(4)判断混合迭代次数是否达到 GGG 或者是否符合预先设定的收敛条件,如果不满足,则返回步骤(2)继续执行;如果满足,则结束算法,输出 FgF_gFg​,即所求问题的解。

3.算法结果

4.参考文献

[1]陈科尹,邹湘军,关卓怀,王刚,彭红星,吴崇友.基于混合蛙跳优化的采摘机器人相机标定方法[J].农业机械学报,2019,50(01):23-34.

[2]崔文华,刘晓冰,王伟,王介生.混合蛙跳算法研究综述[J].控制与决策,2012,27(04):481-486+493.

5.Matlab代码

个人资料介绍

智能优化算法:混合蛙跳算法-附代码相关推荐

  1. 基于混合蛙跳算法优化SVM的滚动轴承故障诊断python实现

    1.混合蛙跳算法(SFLA)原理 混合蛙跳算法(SFLA)是一种受自然生物模仿启示而产生的基于群体的协同搜索方法,由局部搜索和全局信息交换两部分组成. 混合蛙跳算法中,每个青蛙的位置代表了一个可行解. ...

  2. 【车间调度】基于matlab混合蛙跳算法 (SFLA) 求解简单调度问题【含Matlab源码 2247期】

    ⛄一.车间调度简介 在传统的SFLA中,每一个青蛙的位置代表一个解,若干个青蛙组成的种群代表一个解的集合,种群被划分为不同的组,即模因组,对每个模因组执行搜索过程,当达到终止条件后,重新将模因组合并成 ...

  3. 【优化求解】基于混合蛙跳算法实现最优求解matlab源码

    1 简介 2 部分代码 clc;clear all; close all m=50; %种群分组数 n=35; %t每组青蛙包含的个数 Ne=25; %组内迭代数 smax = 100; %最大步长 ...

  4. 混合蛙跳算法实现步骤与例子

    算法背景 混合蛙跳算法的运行原理从仿生上来说可以这么认为: 在一个池塘,有若干块石头,青蛙可以落在石头上,每块石头上可以获取到的食物数量是不同的,在池塘中有很多只青蛙,也有很多块石头,青蛙间可以交流, ...

  5. 【BP回归预测】基于matlab随机蛙跳算法SFLA优化神经网络数据回归预测【含Matlab源码 2272期】

    ⛄一.蛙跳算法 1 改进的免疫蛙跳算法 免疫蛙跳算法具有混合蛙跳算法的全局优化与局部细致搜索优点, 可以优化连续问题和离散问题, 具有较强的鲁棒性;同时, 群体具有的免疫机制对群体进行控制和调节, 把 ...

  6. 【BP回归预测】随机蛙跳算法SFLA优化神经网络数据回归预测【含Matlab源码 2272期】

    ⛄一.蛙跳算法 1 改进的免疫蛙跳算法 免疫蛙跳算法具有混合蛙跳算法的全局优化与局部细致搜索优点, 可以优化连续问题和离散问题, 具有较强的鲁棒性;同时, 群体具有的免疫机制对群体进行控制和调节, 把 ...

  7. 进化算法——蛙跳算法Python代码

    进蛙跳算法Python代码 蛙跳算法原理 Python代码 参考文献 蛙跳算法原理 假设种群个数为 c h r o m n u m chromnum chromnum , 分组个数为 g r o u ...

  8. 【车间调度】基于改进蛙跳算法求解车间调度问题

    作业车间调度问题描述 作业车间调度问题(Job Shop Scheduling, JSP)是最经典的几个NP-hard问题之一.其应用领域极其广泛,涉及航母调度,机场飞机调度,港口码头货船调度,汽车加 ...

  9. 关于蛙跳算法的计算机文献,文化蛙跳算法性能分析研究.PDF

    文化蛙跳算法性能分析研究.PDF 第24卷摇 第11期 计 算机 技 术 与发 展 Vol.24摇 No.11 2014年11月 摇 摇 摇 摇 摇 摇 摇 摇 摇 摇 COMPUTERTECHNOL ...

  10. 基本蛙跳算法(Frog leaping algorithm,FLA)

    1.蛙跳算法原理 蛙跳算法是基于种群进化的元启发式算法之一,通过模拟自然界中青蛙觅食过程中种群所体现出的交流与合作行为,以实现对问题的求解.在一片湿地中,分布着一群青蛙,每只青蛙有自己的想法,每只青蛙 ...

最新文章

  1. Python - 关于方法参数和字典更新(dict.update())方法
  2. 六十八、快速幂算法、牛顿迭代法、累加数组+二分查找的变形
  3. 《leetcode》valid-parentheses
  4. Spring Data 系列(二) Spring+JPA入门(集成Hibernate)
  5. C#中的9个“黑魔法”与“骚操作”
  6. php 中c函数重载,php函数重载的替代方法--伪重载详解
  7. 如何生成1-1000的数字,并且顺序打乱
  8. Python地理数据处理库shapely支持函数总结
  9. marlin固件烧录教程_Marlin固件全中文解析
  10. 目标检测-2019年4篇目标检测算法最佳综述
  11. 【YbtOJ 线段树 - 2】公园遛狗
  12. c++录屏、FFmpeg录屏、录屏格式转换
  13. 如何设置福昕阅读器的文档背景颜色
  14. Prince and Princess UVA - 10635
  15. 数据库索引(B树,B+树,哈希)
  16. ZN-IRF03机器人RFID分拣实训系统
  17. theta悖论:4-8 Hz的EEG振荡既反映睡眠压力又体现认知控制
  18. 计算机中的英语六级作文万能模板,六级作文通用万能模板
  19. 如何让一个函数返回多个返回值
  20. 华为eNSP配置访问控制列表ACL

热门文章

  1. oracle10g rac导出ocr,Oracle RAC 迁移OCR(10g)
  2. (秒杀项目) 4.8 异步化扣减库存(核心)
  3. (秒杀项目) 4.2 用户登录和注册
  4. php获取自定义url,PHP自定义函数获取URL中一级域名的方法
  5. 对飞行前请求的响应未通过访问控制检查:它没有http ok状态。_HTTP 缓存
  6. 多线程java_敞开心扉,一起聊聊Java多线程
  7. python字典长度可变吗_为什么Python中字典的key必须是不可变的?
  8. mkdir 创建多级目录_Linux mkdir命令:创建目录(文件夹)
  9. Node.js:借助formidable文件上传
  10. Guava学习笔记(一):Guava新增集合类型-Multimap