人工鱼群算法解决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}

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

人工鱼群算法解决TSP问题_第1张图片

图1 人工鱼群算法流程图

三、重要参数分析

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

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

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

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

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

四、算法改进思路

4.1算法参数的改进

人工鱼群算法中的参数较多,其中有人工鱼群的个体数目N,拥挤度因子δ,视野和步长,前面两个参数通常可以采用数值实验的方法来确定它的大致范围.后两个参数直接影响人工鱼运行的轨迹,因此对算法的效果有着更直接的影响,对于这两个参数的选择研究得更多一些。

1)基于视野的改进
      由于视野对算法中各行为都有较大的影响,因此,它的变化对收敛性能的影响也是比较复杂的。当视野范围较小时,人工鱼群的觅食行为和随机游动比较突出;视野范围较大时,人工鱼的追尾行为和聚群行为将变得较突出。总体来看,视野越大,越容易使人工鱼发现全局极值并收敛。因此对人工鱼的视野进行适当的改进,是提高人工鱼群算法优化性能的一种方法。
       鱼群的觅食行为在解决离散型优化问题时有很重要的作用。在鱼群觅食的过程中,其视野范围是固定不变的。当人工鱼逐渐逼近最优解时,X仅仅有一个或两个变量不同于最优解,因此人工鱼在最优解附近以原始的视野进行觅食是盲目的,这种情况将增加算法的计算复杂性。另外,收敛速度的快慢和最后寻优结果的质量都依靠视野值。如果视野范围太大,收敛速度将很慢;另一方面,如果视野范围太小,人工鱼群算法可能导致陷入局部最优解。为了克服这些缺点,可选用如下的改进策略:在人工鱼群算法的初始阶段,每条人工鱼以一个大的视野寻找解,这样能扩大寻优的范围。随着算法的运行,鱼群的视野范围将适当的减小以加快收敛的速度。

2)基于步长的改进
    在人工鱼群算法中,人工鱼个体的三个行为:觅食、聚群和追尾都依赖于一定的可视域和步长范围。为了进一步提高人工鱼群算法的寻优能力,一方面可以通过改进视野范围来施行:另一方面,也可以通过改进步长范围对原有算法进行了改进。基本思路就是将人工鱼群算法的实际步长改为参数定义域内的随机数,以保证更好的全局搜索能力。

4.2觅食行为优化

正弦余弦算法 ( sine and cosine algoritm,SCA)是由Mirjalili教授提出的一种新型群体智能优化算法,依靠正弦函数和余弦函数具有周期性和波动性的特点保证鱼群个体具有“全局搜索” 和“局部开发”的特点,在保证算法在大范围内进行结果更新的全面性,同时在局部范围内能够有效的避免算法陷入局部最优的问题,其表达式如式(1 )

(1)

( 1) 式中,xt+1 i 表示当前种群中的个体 i 在使用更新 方式之后在第 t + 1 次循环更新后的位置,xti 和 xtk 分 别表示种群中的任意 2 个个体 i,k 在第 t 次循环更 新时的具体位置,r1,r2,r3 和 r4 为搜索方向、搜素距离、随机选择和正余弦切换的 4 个控制参数。其中r1 = a - a × t/ tmax ( tmax 为最大迭代次数,t 为迭代次数,a 为常数值) ,r2 ~ U[0,2π],r3 ∈ ( 0,+ ∞ ) ,r4 控 制这正弦余弦的更新切换且 r4 ~ U[0,1]正弦余弦 优化策略的嵌入。通过这样的处理方式一定程度上 能够弥补个体在位置更新时候出现的缺陷,通过正 弦机制或者余弦机制,能够使得个体鱼群个体与食 物源进行交流,促进位置信息的共享,使得鱼群个体向着位置更好的前进,促进个体向着最优解移动; 同 时,无论正弦还是余弦机制都能够进行相互的弥补,正弦算法减少个体陷入局部最优,余弦算法提高探 索能力,加快算法收敛。

五、系统方案设计

5.1 功能分析

此次课程设计旨在使用人工鱼群优化算法解决旅行商问题,求解最优化路线。此方案通过人工鱼群算法及其优化算法来求解最优化路线,交互界面可输入初始参数等。

5.2 总体方案设计

1)初始化设置,包括种群规模、每条人工鱼的初始位置、人工鱼的视野、步长、拥挤度因子、重复次数;

2) 计算初始鱼群各个体的适应值,取最优人工鱼状态及其值赋予给公告牌;

3)对每个个体进行评价,对其要执行的行为进行选择,包括觅食、聚群、追尾和随机行为;

4)执行人工鱼的行为,更新自己,生成新鱼群;

5)评价所有个体。若某个体优于公告牌,则将公告牌更新为该个体;

6)当公告牌上最优解达到满意误差界内或者达到迭代次数上限时算法结束,

否则转步骤3。

6图2 总体方案结构图

5.3 GUI界面设计

5.3.1登录界面设计

系统登录界面为人机交互界面的第一部分,用户需输入用户名和密码方可登录操作界面。

图3 人工鱼群算法登录界面

5.3.2系统界面设计

图4所示的GUI界面包括:参数设置版块、运行状态显示版块、路线图与迭代图版块以及开始与退出。参数设置版块可对人工鱼群算法的各种参数进行修改;运行状态显示版块可显示此次算法的运行时间、最短路径以及最短距离;路线图与迭代图版块可显示此次算法运行后的城市路线图与迭代曲线图。

图4 人工鱼群算法可视化界面

六、实现结果及分析

6.1初始化环境数据

  1. 步长:step = 0.2
  2. 视野:visual = 1
  3. 鱼群数目:fishCluster = 50
  4. 拥挤度因子:crowdFac = 0.3
  5. 最优解搜索次数:tryNumber = 100

6.2初始算法运行结果统计数据

表 2 10次独立实验的运行结果统计(距离:米)

第1次

第2次

第3次

第4次

第5次

AFSA

34830

34258

34607

34663

33976

第6次

第7次

第8次

第9次

第10次

AFSA

33465

34258

34513

34418

34642

表 3实验运行结果的统计(距离:米)

AFSA算法

Max

Min

Mean

Var

距离

34830

33465

34363

685942.5

6.3初始算法程序运行过程展示

图5 初始参数算法运行图

6.4关键参数重要性对比

人工鱼群算法中的参数较多,其中有人工鱼群的群规模N,拥挤度因子δ,视野和步长,前面两个参数通常可以采用数值实验的方法来确定它的大致范围.后两个参数直接影响人工鱼运行的轨迹,因此对算法的效果有着更直接的影响。在控制其他关键参数不变的情况下,更改视野与步长的数值,来观察最终的结果。实验测试结果如表4与表5。

1)通过固定人工鱼群的群规模N,拥挤度因子δ和步长step,改变视野visual的数值,通过重复实验观察视野对于整体算法的重要程度。

表 4 改变视野

群规模

尝试次数

拥挤度因子

步长

视野

距离

50

100

0.3

0.2

1

33872

2

33588

3

34210

4

34513

5

34250

6

34393

7

34385

实验结果表明,如果视野visual取值范围在[1,2]内中的时候,其visual =2左右的时候可以取到最优解,visual = 2 为本次所采用的人工鱼群算法的一个最优参考数值。

2)通过固定人工鱼群的群规模N,拥挤度因子δ和视野visual,改变步长step的数值,通过重复实验观察视野对于整体算法的重要程度。

表 5 改变步长

群规模

尝试次数

拥挤度因子

视野

步长

距离

50

100

0.3

1

0.2

33831

0.4

33791

0.6

34197

0.8

34334

1.0

34207

1.2

34071

1.4

34358

实验结果表明,步长step在0.4左右的时候表现出了较好的效果,在一定范围内,步长越大收敛速度越快,步长越小收敛速度越慢。但是,当步长过大超出范围后,收敛的速度会明显下降,甚至会使人工鱼在局部极值点来回震荡,从而降低速度和收敛精度。当设置较小的步长时,收敛速度会下降,而算法的收敛精度会提高。

6.5实验结论

通过对比初始值与修改参数后算法运行情况,我们发现当视野visual = 2,步长为0.4时可以取得一个较好的结果。同时,通过比较数据结果,我们得出以下结论:

1)通常,视野越大人工鱼在发现全局极值的能力和收敛的能力越突出。当视野范围较小时往往更加突出觅食行为和随机行为在算法中的作用,人工鱼在较小的视野范围有更强的搜索能力,而在一定程度上限制了聚群行为和追尾行为的作用;在视野较大时,算法更加突出了聚群行为和追尾行为的作用,一定程度上减少觅食行为和随机行为的发生。

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

你可能感兴趣的:(算法)