人工鱼群算法详解

人工鱼群算法 前言 人工鱼群算法最初是由李晓磊在他的博士毕业论文一种新型的智能优化方法-人工鱼群算法,所以我去看了这篇论文,这篇论文总共95面,我没有全部看完,看了第二章基本的人工鱼群算法,结合公众号文章干货 | 人工鱼群算法 超详细解析附JAVA代码的讲解来学习的。 一、基本思想 在一片水域中,鱼生存的数目最多的地方一般就是本水域中富含营养物质最多的地方,依据这一特点来模仿鱼群的觅食、聚群及追尾等行为,从而... 阅读详情
AI摘要

本文介绍了人工鱼群算法(AFSA)的基本概念、生态学基础、结构模型及算法描述。AFSA是一种模仿鱼群觅食、聚群和追尾行为的优化算法,适用于解决多种优化问题。文中详细解释了算法中的四种基本行为及其数学描述。

1、起源

  人工鱼群算法是李晓磊等人于2002年在动物群体智能行为研究的基础上提出的一种新型方盛优化算法,该算法根据水域中鱼生存数目最多的地方就是本水域中富含营养物质最多的地方这一特点来模拟鱼群的觅食行为而实现寻优。算法主要利用鱼的三大基本行为:觅食、聚群和追尾行为,采用自上而下的寻优模式从构造个体的底层行为开始,通过鱼群中各个体的局部寻优,达到全局最优值在群体中凸显出来的目的。

  该方法采用自下而上的寻优思路,首先设计单个个体的感知、行为机制,然后将一个或一群实体放置在环境中,让他们在环境的交互作用中解决问题。


2、生态学基础

  在一片水域中,鱼存在的数目最多的地方就是本水域富含营养物质最多的地方,依据这一特点来模仿鱼群的觅食、聚群、追尾等行为,从而实现全局最优,这就是鱼群算法的基本思想。鱼类活动中,觅食行为、群聚行为、追尾行为和随机行为与寻优命题的解决有较为密切的关系,如何利用简单有效的方式来构造和实现这些行为将是算法实现的主要为题。


3、人工鱼的结构模型

  人工鱼是真实鱼抽象化、虚拟化的一个实体,其中封装了自身数据和一系列行为,可以接受环境的刺激信息,做出相应的活动。其所在的环境由问题的解空间和其他人工鱼的状态,它在下一时刻的行为取决于自身的状态和环境的状态,并且它还通过自身的活动来影响环境,进而影响其他人工鱼的活动。

  人工鱼对外的感知是依靠视觉来实现的,人工鱼的模型中使用如下方法实现人工鱼的虚拟视觉:

XV=X+Visuanl∗Rand()

Xnext=X+XV−X||XV−X||∗Step∗Rand()

其中Rand()为随机函数,产生0到1之间的随机数,Step为步长。
人工鱼视觉的概念
人工鱼视觉的概念

3.1、人工鱼中封装的变量和函数

变量部分:人工鱼的总数N、人工鱼个体的状态X=(x1,x2,...,xn)(其中xi(i=1,2,...,n)为寻优的变量)、人工鱼移动的最大步长Step、人工鱼的视野Visual、尝试次数Try−number、拥挤度因子δ、人工鱼个体i,j之间的距离dij=|xi−xj|。
函数部分:人工鱼当前所在位置食物浓度表示为Y=f(x)(Y为目标函数值)、人工鱼各种行为函数(觅食行为Prey()、聚群行为Swarm()、追尾行为Follow()、随机行为Move()以及行为评价函数Evaluate())。

3.2、人工鱼的四种基本行为算法描述

3.2.1、觅食行为Prey()

  这是鱼趋向食物的一种活动,一般认为它是通过视觉或味觉来感知水中的食物量或食物浓度来选择行动的方向。设置人工鱼当前状态,并在其感知范围内随机选择另一个状态,如果得到的状态的目标函数大于当前的状态,则向新选择得到的状态靠近一步,反之,重新选取新状态,判断是否满足条件,选择次数达到一定数量后,如果仍然不满足条件,则随机移动一步。
算法描述:人工鱼Xi在其视野内随机选择一个状态Xj

Xj=Xi+Visuanl∗Rand()

分别计算Xi与Xj的目标函数值Yi与Yj,如果发现Yj比Yi好,则Xi向Xj的方向移动一部:
Xt+1i=Xti+Xj−Xti||Xj−Xti||∗Step∗Rand()

否则,Xi继续在其视野内选择状态Xj,判断是否满足前进条件,反复尝试Tray−number次后,仍没有满足前进条件,则执行随机行为。

3.2.2、聚群行为Swarm()

  大量或少量的鱼聚集成群,进行集体觅食和躲避敌害,这是它们在进化过程中形成的一种生存方式。人工鱼探索当前邻居内的伙伴数量,并计算伙伴的中心位置,然后把新得到的中心位置的目标函数与当前位置的目标函数相比较,如果中心位置的目标函数优于当前位置的目标函数并且不是很拥挤,则当前位置向中心位置移动一步,否则执行觅食行为。鱼聚群时会遵守两条规则:一是尽量向邻近伙伴的中心移动,二是避免过分拥挤。
算法描述:人工鱼Xi搜索当前视野内(dij<Vaisual)的伙伴数目nf和中心位置Xc,若Yc/nf>δYi,则表明伙伴中心位置状态较优且不太拥挤,则Xi朝伙伴的中心位置移动一步:

Xt+1i=Xti+Xc−Xti||Xc−Xti||∗Step∗Rand()

否则进行觅食行为。

3.2.3、追尾行为Follow()

  当某一条鱼或几条鱼发现食物时,它们附近的鱼会尾随而来,导致更远处的鱼也会尾随过来。人工鱼探索周围邻居鱼的最优位置,当最优位置的目标函数值大于当前位置的目标函数值并且不是很拥挤,则当前位置向最优邻居鱼移动一步,否则执行觅食行为。
算法描述:人工鱼Xi搜索当前视野内(dij<Vaisual)的伙伴中函数Yj最优伙伴Xj,如果Yj/nf>δYi,表明最优伙伴的周围不太拥挤,则Xi朝词伙伴移动一步:

Xt+1i=Xji+Xj−Xti||Xj−Xti||∗Step∗Rand()

否则执行觅食行为。

3.2.4、随机行为Move()

  它是觅食行为的一个缺省行为,指人工鱼在视野内随机移动。当发现食物时,会向食物逐渐增多的方向快速的移动。
算法描述人工鱼Xi随机移动一步,到达一个新的状态:

Xt+1i=Xti+Visuanl∗Rand()

4、人工鱼群算法描述

公告牌是记录最优人工鱼个体状态的地方。每条人工鱼在执行完一次迭代后将自身当前状态与公告牌中记录的状态进行比较,如果优于公告牌中的状态则用自身状态更新公告牌中的状态,否则公告牌的状态不变。当整个算法的迭代结束后,公告牌的值就是最优解。
行为评价是用来反映鱼自主行为的一种方式,在解决优化问题时选用两种方式评价:一种是选择最优行为执行;另一种是选择较优方向。对于解决极大值问题,可以使用试探法,即模拟执行群聚、追尾等行为,然后评价行动后的值选择最优的来执行,缺省的行为为觅食行为。
迭代终止条件:通常的方法是判断连续多次所得值得均方差小鱼允许的误差;或判断聚集于某个区域的人工鱼的数目达到某个比例;或连续多次所得的均值不超过已寻找的极值;或限制最大迭代次数。若满足终止条件,则输出公告牌的最优记录;否则继续迭代。
人工鱼群算法的步骤:

  1. 初始化设置,包括种群规模N、没条人工鱼的初始位置、人工鱼的视野Visual、步长step、拥挤度因子δ、重复次数Try−number;
  2. 计算初始鱼群各个体的适应值,取最优人工鱼状态及其值赋予给公告牌;
  3. 对每个个体进行评价,对其要执行的行为进行选择,包括觅食、聚群、追尾和随机行为;
  4. 执行人工鱼的行为,更新自己,生成新鱼群;
  5. 评价所有个体。若某个体优于公告牌,则将公告牌更新为该个体;
  6. 当公告牌上最优解达到满意误差界内或者达到迭代次数上限时算法结束,否则转步骤3。

5、人工鱼群算法的寻优原理

  人工鱼群算法在寻优的过程中,可能会集结在几个局部最优解的周围,使人工鱼跳出局部最优解,实现全局寻优的因素主要有:

  • 觅食行为中重复次数较少时,为人工鱼提供了随机移动的机会,从而可能跳出局部最优解;
  • 随机步长使得人工鱼在前往局部最优解的途中,有可能转向全局最优解;
  • 拥挤度因子 δ 限制了聚群的规模,使得人工鱼能够更广泛的寻优;
  • 聚群行为能够促使少出陷于局部最优解的人工鱼趋向全局最优解的人工鱼方向聚集,从而逃出局部最优解;
  • 追尾行为加快了人工鱼向更优状态游动。

6、参数设置与性能

6.1、收敛基础

  人工鱼群算法中,觅食行为奠定了算法收敛的基础;聚群行为增强了算法收敛的稳定性;追尾行为增强了算法收敛的快速性和全局性;其评价行为也对算法收敛的速度和稳定性提供了保障。

6.2、各种参数对收敛性的影响

  人工鱼群算法有5个基本参数:群规模N、人工鱼的视野Visual、步长step、拥挤度因子δ、重复次数Try−number。
1. 视野Visual:由于视野对算法中个行为都有较大影响,因此,它的变化对收敛性能影响也比较复杂。当视野范围较小时,人工鱼的觅食行为和随机行为比较突出;视野范围较大时,人工鱼的追尾行为和聚群行为将变得比较突出,相应的算法的复杂度也会有所上升。总的来说:视野越大,越容易使人工鱼发现全局最优解并收敛。
2. 步长step:对于固定步长,随着步长的增加,收敛的速度得到了一定的加速,但在超过一定的范围后,有使得收敛速度减缓,步长过大时会出现震荡现象而大大影响收敛速度。采用随机步长的方式在一定程度上防止了震荡现象的发生,并使得该参数的敏感度大大降低了,但最快的收敛速度还是最优固定步长的收敛速度,所以,对于特定的优化问题,我们可以考虑采用合适的固定步长或者变尺度方法来提高收敛速度。
3. 群规模N:人工鱼的数目越多,跳出局部最优解的能力越强,同时,收敛的速度也越快。当然,付出的代价就是算法每次迭代的计算量也越大,因此,在使用过程中,满足稳定收敛的前提下,应当尽可能的减少个图数目。
4. 尝试次数Try−number:尝试次数越多,人工鱼的觅食行为能力越强,收敛的效率也越高。在局部极值突出的情况下,应该适当的减少以增加人工鱼随机游动的概率,克服局部最优解。
5. 拥挤度因子δ:在求极大值问题中,δ=1/(αnmax),α∈(0,1];在求极小值问题中,δ=αnmax,α∈(0,1]。其中α为极值接近水平,nmax为期望在该邻域内聚集的最大人工鱼数目。拥挤度因子与nf相结合,通过人工鱼是否执行追尾和聚群行为对优化结果产生影响。以极大值为例(极小值的情况正好与极大值相反),δ越大,表明允许的拥挤程度越小,人工鱼摆脱局部最优解的能力越强;但是收敛速度会有所减缓,这主要因为人工鱼在逼近最优解的同时,会因避免过分拥挤而随机走开或者受其他人工鱼的排斥作用,不能精确逼近极值点。可见,虽然δ的引入避免了人工鱼过度拥挤而陷入局部最优解,但是另一方面,该参数会使得位于极值点附件的人工鱼之间存在相互排斥的影响,而难以想极值点精确逼近。所以,对于某些局部极值不是很严重的具体问题,可以忽略拥挤的因素,从而在简化算法的同时也加快算法的收敛速度和提高结果的精确程度。


对追尾行为的描述
对追尾行为的描述

上图中,人工鱼af0为人工鱼af1−5在各自视野内的最优人工鱼,其食物浓度为Yj,C1为以af0为圆心,以视野为半径的圆,即能探知af0的最远距离,人工鱼越靠近af0,状态越优。在极大值情况下:当δnf≤1时,所有人工鱼af1−5都执行追尾行为,向af0移动;当δnf>1时,若C2的食物浓度为Yj/δnf的等浓度食物圈,则C2与C1之间的人工鱼af1、af2、af3执行追尾行为,向af0移动,人工鱼af4、af5执行觅食行为。此时δnf越大,执行追尾行为的人工鱼越少,反之越多。


7、人工鱼群算法的特点

  1. 只需比较目标函数值,对目标函数的性质要求不高;
  2. 对初值的要求不高,随机产生或设置为固定值均可,鲁棒性强;
  3. 对参数设定的要求不高,容许范围大;
  4. 收敛速度较慢,但是具备并行处理能力;
  5. 具备较好的全局寻优能力,能快速跳出局部最优点;
  6. 对于一些精读要求不高的场合,可以用它快速得到一个可行解;
  7. 不需要问题的严格机理模型,甚至不需要问题的精确描述,这使得它的应用范围得以延伸。
人工鱼群算法:原理、案例与代码实现 人工鱼群算法(Artificial Fish - Swarm Algorithm,AFSA)是一种基于动物行为的群体智能优化算法。它是模仿鱼类的觅食、聚群、追尾等行为而构造的一种优化算法,具有良好的全局寻优能力和较快的收敛速度。 阅读详情

相关推荐

路径规划之启发式算法之八:人工鱼群算法(Artificial Fish Swarm Algorithm,AFSA)

在算法中,这表现为人工鱼在搜索空间中随机选择状态,如果新状态的目标函数值优于当前状态,则向新状态移动。(4)对参数设定容许范围大:人工鱼群算法中的参数如感知距离、步长、拥挤度因子等可以在较大的范围内进行调整,算法仍能保持较好的性能。(3)对目标函数和初值要求不高:人工鱼群算法对目标函数的连续性和可导性没有严格要求,同时初值的设定对算法的影响也较小。(1)全局搜索能力强:由于人工鱼群算法模拟了鱼类的随机游动和聚群行为,因此能够在较大的搜索空间中进行全局搜索。否则返回步骤3继续迭代。

搏博的专栏 2048

进化算法中的人工鱼群算法(Artificial Fish Swarm Algorithm)

请注意,此示例代码仅为了展示AFSA算法的基本思想和实现方式,具体的应用场景中需要根据问题的特点进行相应的调整和优化。请注意,此示例代码仅为了展示遗传算法的基本思想和实现方式,具体的应用场景中需要根据问题的特点进行相应的调整和优化。人工鱼群算法(Artificial Fish Swarm Algorithm,简称AFSA)是一种基于鱼群行为模拟的进化算法,它模拟了鱼群觅食和逃避掠食的行为,用于解决优化问题。以下是一个简单的示例代码,展示了如何使用人工鱼群算法(AFSA)来解决一个简单的函数优化问题。

牛肉胡辣汤 1512

《优化算法》人工鱼群算法学习 超详细解析 附JAVA和matlab示例

人工鱼群算法1 人工鱼群算法1.1 定义1.2 算法具体过程1.3 算法流程图1.4 算法伪代码2 参数解析2.1 视野visual2.2 步长step2.3 群规模N2.4 尝试次数Trynumber2.5 拥挤度因子δ2.6 小结3 四种基本行为3.1 觅食行为3.2 聚群行为3.3 追尾行为3.4 随机行为4 行为选择5 终止条件6 求解示例,java代码6.1 主函数测试类6.2 人工鱼类6.3 人工鱼群算法类7 二元函数优化实例 matlab代码实现7.1 人工鱼群算法需要用到的matlab函数7

帽帽的博客 1万+

人工鱼群算法(AFSA)入门与Python实现详解

群体智能算法是解决连续优化问题的一类重要方法,其中人工鱼群算法(AFSA)以其直观的觅食、聚群和追尾行为,成为初学者理解智能优化原理的绝佳入口。该算法通过公告板机制记录全局最优,并利用拥挤度因子平衡探索与开发,能在参数整定、图像阈值搜索等工程场景中快速获得可行解。本文基于Python实现完整的AFSA项目结构,覆盖核心代码、测试函数与调参经验,帮助读者从零搭建可运行的优化工具,并避开常见陷阱。

weixin_31309419的博客 139

人工鱼群算法超详细解析附带JAVA代码

人工鱼群算法超详细解析附带JAVA代码 01 前言 本着学习的心态,还是想把这个算法写一写,给大家科普一下的吧。 02 人工鱼群算法 2.1 定义 人工鱼群算法为山东大学副教授李晓磊2002年从鱼找寻食物的现象中表现的种种移动寻觅特点中得到启发而阐述的仿生学优化方案。在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地...

infinitor的博客 6296

人工鱼群求解TSP问题

人工鱼群算法(Artificial Fish-Swarm Algorithm, AFSA)是一种模拟自然界中鱼群觅食行为的启发式搜索算法。它由刘光远教授于2002年提出,具有群体智能、自组织、自适应等特点。人工鱼群算法可以应用于求解TSP(旅行商问题)等多种优化问题。

weixin_58438203的博客 960

【优化覆盖】人工鱼群算法求解无线传感器覆盖优化问题【含Matlab源码 2611期】

人工鱼群算法求解无线传感器覆盖优化问题 完整的代码,方可运行;可提供运行操作视频!适合小白!

Matlab912100926的博客 1088

【多目标优化求解】基于matlab人工鱼群求解多目标优化问题【含Matlab源码 442期】

1 觅食行为指鱼循着食物多的方向游动的一种行为,人工鱼X i X_iXi​在其视野内随机选择一个状态X j X_jXj​,分别计算它们的目标函数值进行比较,如果发现Y j Y_jYj​比Y i Y_iYi​优(Y j Y_jYj​和Y i Y_iYi​分别为X j X_jXj​和X i X_iXi​的适应度值),则Xi向Xj的方向移动一步;

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1447

Matlab人工鱼群算法源码解析:梯级水库调度优化实战

工程优化问题常面临高维、非线性与强约束的挑战,传统精确算法易陷入维数灾,而智能优化算法提供了一条高效路径。人工鱼群算法(AFSA)通过模拟鱼类觅食、聚群、追尾和随机行为,在解空间中实现全局探索与局部精修,具有参数少、对初值不敏感的优点,特别适合处理水库群联合调度等复杂约束优化场景。文章从算法仿生原理出发,结合Matlab源码,详细拆解了梯级水库调度模型中目标函数、约束处理、边界修正等关键技术,并给出了参数整定与算法对比思路。通过实际代码和工程案例,展示了从算法到应用的完整落地方法,为水资源调度、智能算法工程

weixin_32451529的博客 264

人工鱼群优化算法 Matlab 实现

通过学习和使用该算法,可以更好地理解群体智能算法的工作原理,同时为实际问题的求解提供了一种有效的方法。人工鱼群算法(Artificial fish swarm algorithm)是一种基于自然进化的优化算法,由于其简单、易实现的特点,在许多领域得到了广泛应用。% 找到适应度最好的邻居。

2301_79331387的博客 337

人工鱼群算法在多目标优化中的应用详解及实战

随机游动策略是人工鱼群算法中的一个基础行为,模拟的是鱼群在水中进行无目标随机运动的行为。通过随机游动,人工鱼可以在全局搜索空间中随机探索新的位置,避免算法早熟收敛于局部最优解。在实现上,随机游动可以通过在当前位置基础上加上一个随机向量来模拟,代码示例如下:""""""在这个函数中,是当前人工鱼的位置,step_size是随机游动的最大步长。随机游动的向量是通过生成一个介于 -1 和 1 之间的随机数向量来实现的,并乘以步长值以获得新的位置。

weixin_42351520的博客 916

MiroFish人工鱼群算法:优化器、仿真与参数调优实战

群体智能优化通过模拟生物群体协作,在不可导、非凸或离散空间中搜索近优解。人工鱼群算法将觅食、聚群、追尾和随机游走抽象为四种行为算子,并借助公告板记录全局最优;其核心原理是局部视野内的信息传递,使个体既向优质区域靠拢,又不易被单一吸引子锁死。技术价值体现在多峰优化、组合优化和约束问题中,常被用于路径规划、特征选择、PID参数整定与车间排程等场景。MiroFish 是一套以鱼群行为为原型的群体智能工具,既能作为参数寻优优化器,也能作为群体行为仿真沙盘;落地时需重点处理 Visual、Step、拥挤度因子与 tr

weixin_32296621的博客 231

投影寻踪模型MATLAB实现:遗传、粒子群与人工鱼群算法实战解析

高维数据分析中常面临信息冗余与分类困难的问题,投影寻踪作为一种数据驱动的降维技术,通过寻找最优投影方向将多维指标映射为一维综合值,从而保留类别差异与原始信息。然而其投影指标具有非线性、非凸、多峰特性,传统梯度方法难以求解,需借助遗传算法、粒子群算法等智能优化算法进行全局寻优。本文以MATLAB为工具,系统拆解投影寻踪模型的核心原理与代码架构,对比遗传算法、粒子群算法与人工鱼群算法在投影寻踪中的实现要点、参数调优策略及常见坑点,并展示在水质评价、工程优选等综合评价场景中的应用流程。通过算法解耦设计与模块化代码

weixin_31412781的博客 256

智能优化算法学习第四期:人工鱼群算法(AFSA)【附MATLAB代码】

人工鱼群算法(Artificial Fish Swarm Algorithm,简称AFSA)是李晓磊等人于2002年提出的一类基于动物行为的群体智能优化算法。该算法是通过模拟鱼类的觅食、聚群、追尾、随机等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用。

k16140309的博客 2334

人工鱼群算法在机器人路径规划中的MATLAB实现与调参指南

路径规划是机器人自主导航的核心,旨在众多可行路径中找到无碰撞且代价最优的路线。人工鱼群算法(AFSA)作为一种模拟鱼群觅食、聚群、追尾等行为的群体智能优化算法,无需梯度信息,种群天然并行,在栅格地图环境中尤其适用。该算法通过定义鱼的编码、适应度函数和行为状态机,能够有效权衡路径长度、碰撞代价与平滑度。相比A*、RRT等传统方法,AFSA实现直观,适合作为课程设计与算法对比的基准。在泊车、无人机巡检等离线静态场景中,它可快速生成可行路径。在MATLAB工程实现中,从种群初始化、四种行为函数到主循环与公告板,完

weixin_29239661的博客 141

Matlab人工鱼群算法实现路径规划与动态避障

路径规划是机器人导航、AGV调度和无人机航迹优化的核心问题,本质是在约束条件下搜索最优连续轨迹。传统方法如A*易陷局部最优,Dijkstra计算开销大,而遗传算法和粒子群算法存在参数敏感、早熟收敛等问题。人工鱼群算法(AFSA)作为一种无梯度、少参数、强鲁棒的智能优化方法,通过模拟觅食、聚群等行为,在路径解空间中高效探索全局最优。其天然适配非凸障碍环境与不规则约束,特别适合Matlab平台下的快速原型验证。本文聚焦AFSA在二维地图路径规划中的工程落地,涵盖障碍建模、适应度函数设计、向量化实现及动态可视化,

weixin_29973493的博客 89
上一篇: Windows Server AppFabric分布式缓存详解
下一篇: 网络操作系统发展历程
wp_csdn
博客等级 码龄12年 67粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值