文章目录

  • 候鸟算法
  • 候鸟算法过程简介
  • 具体实现
    • 原作者的实现
    • matlab版本

候鸟算法

候鸟算法,(Migrating Birds Optimization Algorithm,简写为MBO)是由Ekrem Duman于2012年在研究二次指派问题(QAP)时提出的,本文致力于简介候鸟算法的具体过程及matlab版本的代码实现,如需了解算法思想及理论、实现方法与结果还请参考作者原论文1

候鸟算法过程简介

作者在原文中对候鸟算法的描述如下:

其中n为鸟群中候鸟的数量,k为每只鸟每次探索的邻域数量,x为上一只鸟向下一只鸟传递的解的数量,m为每次更换领飞鸟之后鸟群迭代的次数,K为所有鸟总共需要探索邻域的次数。
在论文中,作者给出的参数建议为 n = 51, k = 3, x = 1, m = 10, K = x的三次方。

算法对应的中文解释如下2

具体实现

注:在此部分 鸟 和 解决方案 都是指鸟群中的基本单位,代表的含义相同。

原作者的实现

原作者使用java实现了MBO算法。作者原文使用了面对对象的编程。把算法分为BirdsAlgorithm、Go、MetaHeuristic、Population、Solution五个部分。其中Go为算法实现的界面。
BirdsAlgorithm为算法的主要部分,构造函数为读取文件,初始化鸟群,更新鸟群,替换领飞鸟,更新领飞鸟之后的其他鸟;值得一提的是鸟群的设计,其中编号为0的为领飞鸟,奇数为左侧,偶数为右侧。

//                   0
//              1       2
//          3               4
//      5                       6

MetaHeuristic为读取文件的部分。
Population为鸟群,主要为添加/移除 鸟/解决方案,清空鸟群,获取鸟群中cost最大/最小的鸟。
Solution为解决方案,也就是创建一只鸟,随机初始化排列顺序,计算解决方案的cost,探索邻域,创建邻域数组,获取cost最小(表现最好)的邻域,添加一个邻域解决方案,将邻域解决方案排序,复制,比较,获取工厂排列顺序等方法。

matlab版本

因为实验的需求,我把作者的java版本改写成了matlab代码。由于我水平的限制,所以我只能用面向过程的方法改写。具体流程与作者的一致,代码中有比较详细的解释3
在matlab中数组是从1开始的,所以鸟群只能编号为1是领飞鸟,偶数为左侧,除1之外的奇数为右侧。
对具体流程比较关心但不想看代码的也可以参考我的另一篇文章。


  1. Migrating Birds Optimization: A new metaheuristic approach and its performance on quadratic assignment problem ↩︎

  2. 陈林烽,齐学梅,陈俊文,黄琤,陈付龙.批量流水调度问题的量子候鸟协同优化算法[J].计算机应用,2019,39(101):3250-3256. ↩︎

  3. github代码 ↩︎

候鸟算法matlab实现相关推荐

  1. dst matlab,DSTcode DST跟踪算法MATLAB代码,复杂环境中仿多目标 实现的单 Other systems 其他 272万源代码下载- www.pudn.com...

    文件名称: DSTcode下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 82 KB 上传时间: 2017-03-17 下载次数: 0 提 供 者: Mar ...

  2. 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc

    图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...

  3. TDOA定位的Chan算法MATLAB源代码

    TDOA定位的Chan算法MATLAB源代码 . function [POS_ref,POS1,POS2,POS3,POS4] = TDOA_chan(R,Pbs,Q) %************** ...

  4. dijkstra算法matlab代码_头脑风暴优化(BSO)算法(附MATLAB代码)

    BSO讲解https://www.zhihu.com/video/1252605855767736320 B站搜索:随心390,同步观看视频 各位小伙伴可在闲鱼搜索 优化算法交流地,即可搜索到官方闲鱼 ...

  5. Algorithm之PrA:PrA之nLP非线性规划算法+Matlab 优化工具箱的GUI求解非线性规划

    Algorithm之PrA:PrA之nLP非线性规划算法+Matlab 优化工具箱的GUI求解非线性规划 目录 PrA之nLP非线性规划算法 操作图文教程 PrA之nLP非线性规划算法 (1).编写M ...

  6. matlab虚拟力,31无线传感网络布局优化的虚拟力导向粒子群算法MATLAB源代码

    无线传感网络布局优化的虚拟力导向粒子群算法MATLAB源代码 本源代码主要参考了下面的文献:王雪, 王晟, 马俊杰. 无线传感器网络布局的虚拟力导向微粒群优化策略[J]. 电子学报, 2007, 11 ...

  7. 亮度均匀性 matlab,求:亮度保持的夜景图像直方图均衡算法 matlab程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求:亮度保持的夜景图像直方图均衡算法 matlab程序 我是大四学生,最近在做一个论文,头疼死了,不知道这个论文的程序怎么写.这里是matlab论坛 我想 ...

  8. bartlett 算法 matlab,GWO(灰狼优化)算法MATLAB源码逐行中文注解(转载)

    以优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解. tic % 计时器 %% 清空环境变量 close all clear clc format compact %% ...

  9. 标准差分进化算法matlab程序实现(转载)

    标准差分进化算法matlab程序实现 自适应差分演化算法方面的Matlab和C++代码及论文 差分进化算法 DE-Differential Evolution matlab练习程序(差异演化DE) [ ...

  10. matlab控制算法C语言,PID算法Matlab仿真程序和C程序

    <PID算法Matlab仿真程序和C程序>由会员分享,可在线阅读,更多相关<PID算法Matlab仿真程序和C程序(6页珍藏版)>请在人人文库网上搜索. 1.增量式PID控制算 ...

最新文章

  1. 首场见习挑战赛倒计时3天!20000元奖学金瓜分就等你了!
  2. 计算机网络安全顾问啊,【网络安全咨询顾问工作内容|工作职责|网络安全咨询顾问做什么】-看准网...
  3. HttpRequest Java原生代码封装
  4. DotNetCore跨平台~配置文件与配置代码如何共存
  5. c语言双精度百分号,C语言输出百分号%的方法和示例
  6. svn php 与 apache 的关系 思维导图
  7. Linux程序接口实验:取进程标志及用户信息
  8. 推荐一首歌,个人感觉不错...
  9. linux erlang安装教程,linux(CentOS7)中安装erlang(20.3)以及rabbitmq(3.6.15)的步骤以及一些注意事项...
  10. [转载] python中numpy库的使用
  11. pythontkinter显示表格_详谈Python 窗体(tkinter)表格数据(Treeview)
  12. python调用Go代码
  13. java hql left join_求教hql的left join结合条件的写法
  14. ISO50001认证咨询,ISO50001能源管理体系认证企业初次审核需要准备的材料
  15. 【LGP5108】仰望半月的夜空
  16. 距离多普勒谱(RD谱)绘制方法及理解
  17. LVGL笔记11--lv_btn按钮
  18. jqgrid实现表头合并功能
  19. 轻松解决XMind文件配置错误(configuration area)
  20. Hadoop配置lzo压缩

热门文章

  1. IEEE投稿完整流程——以IEEE Transactions on Cybernetics为例
  2. C语言 输出斐波那契数列
  3. pdf文件转换成word文本文档去水印怎么弄
  4. Android用户注册界面设计
  5. PGSQL Key (id)=(1) already exists.
  6. bzoj:1922: [Sdoi2010]大陆争霸 (luogu 2446)
  7. 个人网站有赞云支付接口申请方法
  8. 身份证上传尺寸太大如何缩小?改照片尺寸的简单方法
  9. 淘宝/天猫上传图片到淘宝 API
  10. Oracle12C 基本操作和使用