全部博文(45)
分类:
2012-11-13 21:23:41
人工鱼群算法是李晓磊等人于2002年在动物群体智能行为研究的基础上提出的一种新型方盛优化算法,该算法根据水域中鱼生存数目最多的地方就是本水域中富含营养物质最多的地方这一特点来模拟鱼群的觅食行为而实现寻优。
人工鱼群算法主要利用鱼的三大基本行为:觅食、聚群和追尾行为,采用自上而下的寻优模式从构造个体的底层行为开始,通过鱼群中各个体的局部寻优,达到全局最优值在群体中凸显出来的目的。
(1) 觅食行为:这是鱼趋向食物的一种活动,一般认为它是通过视觉或味觉来感知水中的食物两或食物浓度来选择行动的方向。
(2) 聚群行为:大量或少量的鱼聚集成群,进行集体觅食和躲避敌害,这是它们在进化过程中形成的一种生存方式。
(3) 追尾行为:当某一条鱼或几条鱼发现食物时,它们附近的鱼会尾随而来,导致更远处的鱼也会尾随过来。
觅食行为主要认为是循着食物多的方向游动的一种行为,在寻优中则是向较优方向进行的迭代方式。聚群行为能够很好的跳出局部极值,并尽可能搜索到其它的极值,最终搜索到全局极值。追尾行为有助于快速的向某个极值方向前进,加快寻优的速度,并防止人工鱼在局部振荡而停滞不前。鱼群算法在对以上行为进行评价后,自动选择合适的行为,从而形成一种高效快速的寻优策略。
人工鱼群算法的行为描述:
觅食行为:设置人工鱼当前状态,并在其感知范围内随机选择另一个状态,如果得到的状态的目标函数大于当前的状态,则向新选择得到的状态靠近一步,反之,重新选取新状态,判断是否满足条件,选择次数达到一定数量后,如果仍然不满足条件,则随机移动一步。
聚群行为:人工鱼探索当前邻居内的伙伴数量,并计算伙伴的中心位置,然后把新得到的中心位置的目标函数与当前位置的目标函数相比较,如果中心位置的目标函数优于当前位置的目标函数并且不是很拥挤,则当前位置向中心位置移动一步,否则执行觅食行为。
追尾行为:人工鱼探索周围邻居鱼的最优位置,当最优位置的目标函数值大于当前位置的目标函数值并且不是很拥挤,则当前位置向最优邻居鱼移动一步,否则执行觅食。
根据所要解决的问题性质,对人工鱼当前所处的环境进行评价,从而选择一种行为。较常用的评估方法是:选择各行为中使得向最优方向前进最大的方向,也就是各行为中使得人工鱼的下一步状态最优的行为,如果没有能使下一个状态优于当前状态的行为,则采用随机行为。
人工鱼群算法步骤:
Step1:设定鱼群的参数,包括鱼群的规模m, 最大迭代次数gen,人工鱼的感知范围Visual,最大移动步长step,拥挤度因子d等;
Step2:在参数区间内随机生成m条人工鱼个体作为初始鱼群;
Step3:计算每条鱼的食物浓度函数(目标函数),把最优的值放入公告板中;
Step4:对于每条人工鱼执行以下操作
(1) 计算出追尾行为、聚群行为的值,采用行为选择策略,选择最优的行为作为鱼的移动方向,缺省行为是觅食行为。
(2) 计算出每条鱼的食物浓度函数(目标函数),其最优值与公告板中的值进行比较,最终公告板中始终保持最优的值。
Step5:判断是否满足结束条件,如果满足结束,否则转Step4。
最终公告板中的值就是最优值。