人工鱼群算法解决TSP问题

一、问题详述

旅行商问题,是数学领域中著名问题之一,被证明具有NPC计算复杂性。该问题假设有一个旅行商人要拜访N个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。

二、人工鱼群算法原理描述

2.1人工鱼群算法原理

人工鱼群算法(artificial fish-swarm algorithm,AFSA)是一种基于鱼群的群智能优化算法,群智能指的使“无智能的主体通过合作表现出智能行为的特征”,是一种基于生物群体行为规律的计算技术,用来解决分布式问题。人工鱼群算法的基本思想是仿照鱼群在一片水域当中寻找最优解的觅食、聚群和追尾等行为,水域中的每一条鱼都对应其中的一个优化解,该水域即为被优化问题的解空间。通过分析人工鱼群的优化理念,可得其人工鱼群环境模型。假设水域中一条鱼现时状态是X,其可见范围为Visual(公式中用Zvisual表示),在某一时间点对应的视点位置为X k,如果该方位较此时状态更优,则可往该地点处向前一步,即抵达X next;若该方位无此时状态更优,则一直在可见视线内找寻其他较优地点。

2.2人工鱼群算法步骤

1)初始化设置。对鱼群中的各个参数进行初始设置,包括:该人工鱼群的群体规模、视野、最大迭代次数、每一条鱼的最大移动步长Step(公式中用Lstep)等参数。

2)此时迭代的次数是0,由N条鱼组成初始鱼群,每个鱼表示从初始位置到目标位置的一条路径。

3)对每一条人工鱼都进行行为模拟:觅食、追尾、聚群与随机移动行为,选取其中最优的一种行为来操作。

4)聚群行为:鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群。人工鱼X i X_iXi搜索其视野内的伙伴数目及中心位置,若Y c / n f < δ Y i Y_c/n_f< δY_iYc/nf<δYi,表明伙伴中心位置状态较优且不太拥挤,则X i X_iXi朝伙伴的中心位置移动一步,否则执行觅食行为;

5)追尾行为:指鱼向其视野区域内的最优方向移动的一种行为。人工鱼X i X_iXi搜索其视野内(d i j < v i s u a l d_{ij}<visualdij<visual)适应度最高的个体X j X_jXj,其适应度值为Y j Y_jYj,并探索人工鱼X j X_jXj视野内的伙伴数目n f n_fnf,若Y j / n f < δ Y i Y_j/n_f< δY_iYj/nf<δYi,表明X j X_jXj状态较优且不太拥挤,则X i X_iXi朝X j X_jXj位置移动一步,否则执行觅食行为;

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

图1 人工鱼群算法流程图

三、重要参数分析

1)鱼群规模:人工鱼群算法的实现是建立在大量的人工鱼基础之上,人工鱼的总数增多,促使收敛的速度和精度有明显提高,并减少陷入局部最优解的可能性。但是,人工鱼的数量过多会导致计算量剧增,算法运行时耗时过大。因此,在具体优化应用中,应适当地设置人工鱼的数目。

2)视野visual:人工鱼群的聚群、追尾、觅食、随机行为都是在视野内执行的,所以参数视野的设置对算法的效果有着很大影响。根据经验判断,当视野范围较小时往往更加突出觅食行为和随机行为在算法中的作用,人工鱼在较小的视野范围有更强的搜索能力,而在一定程度上限制了聚群行为和追尾行为的作用;在视野较大时,算法更加突出了聚群行为和追尾行为的作用,一定程度上减少觅食行为和随机行为的发生。通常,视野越大,人工鱼在发现全局极值的能力和收敛的能力越突出。

3)步长step:在一定范围内,步长越大收敛速度越快,步长越小收敛速度越慢。但是,当步长过大超出范围后,收敛的速度会明显下降,甚至会使人工鱼在局部极值点来回震荡,从而降低速度和收敛精度。当设置较小的步长时,收敛速度会下降,而算法的收敛精度会提高。

4)尝试次数try_number:经研究,人工鱼在执行觅食行为时,尝试次数对执行效果的影响是十分重要的,随着尝试次数增大,人工鱼觅食行为的能力越强,收敛的效率越高,但是尝试次数的增多会降低人工鱼避开局部极值的能力,从而不能收敛全局极值点。所以,较大的尝试次数,更为突出觅食行为,加快收敛速度,但容易陷入局部极值;较小的尝试次数,更为突出随机行为,降低收敛速度,避免陷入局部极值。在解决一些局部极值不是很突出的问题上,可以增加尝试次数提高收敛的效率。

5)拥挤度δ:在聚群行为和追尾行为中引入拥挤度算子δ是为了避免人工鱼过度聚集在局部极值点。

四、算法改进思路

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值