人工鱼群算法

基本思想

人工鱼群算法是一种基于模拟鱼群行为的优化算法,是由李晓磊等在2002年提出的一种新型的寻优算法。在一片水域中,鱼生存的数目最多的地方就是本水域中富含营养物质最多的地方,依据这一特点来模仿鱼群的觅食等行为,从而实现全局寻优,这就是鱼群算法的基本思想。

在鱼类的活动中,可以分为觅食行为、聚群行为、追尾行为和随机行为这四种行为,如何利用简单有效的方式来构造实现这些行为将是算法实施的主要问题。

  • 觅食行为主要就是循着食物多的方向游动的一种行为,在寻优中则是向较优方向进行的迭代方式

  • 在聚群行为中,借鉴的思想对每条人工鱼规定了这样两个规则
    1.尽量向邻近伙伴的中心移动
    2.避免过分拥挤,这样就能基本实现人工鱼的聚群能力;

  • 追尾行为就是一种向临近的最活跃者追逐的行为,在寻优算法中可以理解为是向附近的最优化伙伴前进的过程

  • 随机行为就是人工鱼在其视野内随机移动的行为,在寻优算法中这种行为有助于解跳出局部最优

算法原理

1.觅食行为

指鱼循着食物多的方向游动的一种行为,人工鱼Xi在其视野内随机选择一个状态Xj,分别计算它们的目标函数值进行比较,如果发现Yj比Yi优,则Xi向Xj方向移动一步,否则Xi继续选择Xj,判断是否满足前进条件,反复尝试trynumber次后,仍没有满足前进条件,则随机移动一步使Xi达到新的状态。

人工鱼的视觉描述

看看流程图

2.聚群行为

鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群 。人工鱼Xi搜索其视野内的伙伴数目nf及中心位置Xc,若Yc/nf<δYi(求极小值时使用小于号,在求极大值时则相反)表明伙伴中心位置状态较优且不太拥挤,则Xi朝伙伴的中心位置移动一步,否则执行觅食行为

3.追尾行为

指鱼向其视野区域内的最优方向移动的一种行为。人工鱼Xi搜索视野内最优的适应度最高的个体Xj,并搜索人工鱼Xj的视野内的伙伴数目nf,若Yj/nf<δYi,表明Xj的状态较优且不太拥挤,Xi朝着Xj一步,否则执行觅食行为

总的来说算法在运算过程中,会同时进行聚群和追尾行为。而觅食行为属于这两种行为中发现聚群对象或者追尾对象附近拥挤度过大时,人工鱼选择的行为方式,若在觅食过程中,未发现比自身适应度高的人工鱼,则按步长step随机移动。最后对聚群行为和追尾行为得到的适应度值进行比较,选择优秀的人工鱼作为下一代的个体。其总框架图如下:

拥挤度因子

拥挤度因子的取值

拥挤度因子的影响

以极大值为例(极小值的情况正好和极大值相反), δ δδ越大,表明允许的拥挤程度越小,人工鱼摆脱局部最优的能力越强;但是收敛的速度会有所减缓,这主要因为人工鱼在逼近极值的同时,会因避免过分拥挤而随机走开或者受其它人工鱼的排斥作用,不能精确逼近极值点。可见,δ δδ的引入避免了人工鱼过度拥挤而陷入局部极值,另一方面,该参数会使得位于极值点附近的人工鱼之间存在相互排斥的影响,而难以向极值点精确逼近,所以,对于某些局部极值不是很严重的具体问题,可以忽略拥挤的因素,从而在简化算法的同时也加快了算法的收敛速度和提高结果的精确程度。

python代码实现

def func(x):x1, x2 = xreturn 1 / x1 ** 2 + x1 ** 2 + 1 / x2 ** 2 + x2 ** 2from sko.AFSA import AFSAafsa = AFSA(func, n_dim=2, size_pop=50, max_iter=300,max_try_num=100, step=0.5, visual=0.3,q=1, delta=0.5)
best_x, best_y = afsa.run()
print(best_x, best_y)

[1.00274898 0.99989597] 4.000030188126589

人工鱼群算法python实现相关推荐

  1. 人工鱼群算法python代码_人工鱼群算法python_鱼群算法 - Brillou的个人空间 - OSCHINA - 中文开源技术交流社区......

    本算法是参照李晓磊博士的论文实现的,详细的算法原理可阅读<一种新型的智能优化方法_人工鱼群算法_李晓磊> 算法基于鱼群的生存行为:在一片水域中,鱼存在的数目最多的地方就是本水域中富含营养物 ...

  2. 人工鱼群算法python_蚁群算法、免疫优化算法、鱼群算法 Python 库

    github地址guofei9987/scikit-opt​github.com 安装 $pip install scikit-opt 蚁群算法(ACA, Ant Colony Algorithm) ...

  3. 人工鱼群算法python_人工鱼群算法简介及应用

    简介 定义 人工鱼群算法为山东大学副教授李晓磊2002年从鱼找寻食物的现象中表现的种种移动寻觅特点中得到启发而阐述的仿生学优化方案.在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生 ...

  4. 人工鱼群算法python_鱼群算法 - Brillou的个人空间 - OSCHINA - 中文开源技术交流社区...

    本算法是参照李晓磊博士的论文实现的,详细的算法原理可阅读<一种新型的智能优化方法_人工鱼群算法_李晓磊> 算法基于鱼群的生存行为:在一片水域中,鱼存在的数目最多的地方就是本水域中富含营养物 ...

  5. 【机器学习】基于人工鱼群算法的多元非线性函数寻优

    基于人工鱼群算法的多元非线性函数寻优

  6. 【机器学习】基于人工鱼群算法的非线性函数寻优

    本微信图文介绍了人工鱼群算法的基本原理并对一元非线性函数进行极值寻优.

  7. matlab球落点的数学建模,MATLAB数学建模:智能优化算法-人工鱼群算法

    MATLAB 数学建模: 人工鱼群算法 1. 基本原理 人工鱼群算法是一种受鱼群聚集规律而启发的优化算法. 在人工鱼群算法中, 我们假定鱼群的活动行为分为: 觅食行为, 群聚行为, 追随行为和随机行为 ...

  8. MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)

    前言: 本文大体的思路是先对人工鱼进行编码,然后采用人工鱼群算法求解TSP问题中的觅食.聚群.追尾和随机行为对人工鱼群进行更新. 但是亟需需要解决的问题是:对于CVRP问题,如何对人工鱼进行编码.如果 ...

  9. matlab实战系列之人工鱼群算法求解TSP问题原理解析(下篇源码解析)

    从算法的名字中可以看出该算法是群体智能优化算法中的一种,人工鱼群算法通过模拟鱼群的觅食.聚群.追尾.随机等行为在搜索域中进行寻优. 人工鱼群算法有三个比较重要的概念:视野范围.k-距离邻域.多条鱼的中 ...

  10. pm模型matlab算法,18基于遗传算法(粒子群算法、人工鱼群算法等)的投影寻踪模型MATLAB源代码...

    基于遗传算法(粒子群算法.人工鱼群算法等)的投影寻踪模型 MATLAB源代码 投影寻踪是一种处理多因素复杂问题的统计方法,其基本思路是将高维数据向低维空间进行投影,通过低维投影数据的散布结构来研究高维 ...

最新文章

  1. jQuery Deffered Callbacks
  2. 手写简版spring --6--应用上下文(BeanPostProcessor 和 BeanFactoryPostProcessor)
  3. js 对象和Json的转换,js及深度复制
  4. 浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系
  5. PHP数组——自定义排序
  6. python图像识别代码_用Python进行简单图像识别(验证码)
  7. java基础面试题之:super与this的区别
  8. LiteIDE调试工具delve
  9. apply家活跃成员小聚会
  10. 《结网》《人人都是产品经理》对比
  11. CrossPHP 1.5.5 发布了
  12. 学中式烹调10天笔记(正式)
  13. FLASH连连看算法分析及源代码
  14. 嵌入式Linux应用学习(一)------QT控制LED设备硬件
  15. 百度地图开发入门(6):3D建筑
  16. 关于cosine_similarity参数的问题
  17. C++ - sstream标准库(串流控制)
  18. 夜深模拟器安装的一些问题
  19. 陕师大计算机期末考试题,陕师大物理化学(上)历年期末考试题
  20. 我们国家进5年攻防比赛情况汇总

热门文章

  1. dnf mysql密码多少_CentOS7 使用 dnf 安装 mysql
  2. android:digits 代码设置,EditText中android:digits失效问题
  3. 学习资料:8大行业,30个大数据实践案例分享
  4. 安装并使用达梦数据库
  5. 软件测试项目复盘,如何开始复盘测试_测试_复盘大师官网
  6. python tushare
  7. ECharts3基础教程(一)简单上手篇
  8. WINCE系统的PDA开发 xp系统+VS2008
  9. dede后台验证码一直错误的处理方法
  10. vue项目-jQuery中Nicescroll滚动条插件的用法