一、问题详述

旅行商问题,是数学领域中著名问题之一,被证明具有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)拥挤度δ:在聚群行为和追尾行为中引入拥挤度算子δ是为了避免人工鱼过度聚集在局部极值点。

四、算法改进思路

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

人工鱼群算法解决TSP问题相关推荐

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

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

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

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

  3. Matlab基于人工鱼群算法求解TSP问题

    一. 人工鱼的结构模型 人工鱼是真实鱼抽象化.虚拟化的一个实体,其中封装了自身数据和一系列行为,可以接受环境的刺激信息,做出相应的活动.其所在的环境由问题的解空间和其他人工鱼的状态,它在下一时刻的行为 ...

  4. 改进的人工鱼群算法求解TSP问题的研究(Matlab代码实现)

  5. 【AFSA TSP】基于matlab改进的人工鱼群算法求解旅行商问题【含Matlab源码 1479期】

    ⛄一. TSP简介 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须 ...

  6. 【AFSA TSP】基于matlab人工鱼群算法求解旅行商问题【含Matlab源码 422期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab人工鱼群算法求解旅行商问题[含Matlab源码 422期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  7. 人工蜂群算法求解TSP问题

    人工蜂群算法求解TSP问题 [标签] ABC TSP Matlab data:2018-10-19 author:怡宝2号 [总起]利用人工蜂群算法(Artificial Bee Colony Alg ...

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

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

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

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

  10. [机器学习]人工鱼群算法

    转载于http://blog.csdn.net/wp_csdn/article/details/54577567 1.起源   人工鱼群算法是李晓磊等人于2002年在动物群体智能行为研究的基础上提出的 ...

最新文章

  1. MysqL数据库密码的管理
  2. redis mysql主从同步_手撕Redis,主从同步
  3. python是基于哪个系统的_python能检测到它运行的是哪个操作系统?
  4. 洛谷P1119 灾后重建 图论 脑洞题
  5. 随机生成图像 与 图像的转维(reshape)
  6. android recovery模式及ROM制作
  7. 大数据复核_【BIM技术】三维扫描结合BIM技术在结构复核中的应用
  8. DataWorks 如何撑起阿里99%的数据开发?
  9. Oracle rowid和rownum的区别
  10. 计算机与生命科学专业排名,2019软科世界一流学科排名发布,54个专业TOP10牛校榜单全给你...
  11. 数学建模之Python-微分方程建模实例
  12. 读react.js小书 02
  13. 计算机桌面上的照片转pdf免费,电脑上怎样快速将图片转PDF
  14. 测试用例设计方法_正交实验法(游戏向)
  15. 关于quicktime
  16. 目前1KB文件夹快捷方式病毒扫清方法
  17. 了解BigBoss之如何添加BigBoss的Cydia源地址
  18. Programming-寻找发贴水王(C)
  19. VS2010扩展VAX的安装使用
  20. 2015Astar百度之星初赛 1005 序列变化

热门文章

  1. SAP FB60\FB70\MIRO 默认税码配置
  2. 图的存储结构-十字链表
  3. SVPWM算法理解(一)——基本原理
  4. 吴昊品游戏核心算法 Round 5 —— 五子棋(无禁手)后台的判胜负AI(bfs+queue容器)(HDOJ 2699)...
  5. 360os比android,手机系统比拼360OS、Flyme究竟哪个好?
  6. linux双机热备软件Rose,Linux Rose HA 双机热备软件原理
  7. #飘#公交车美女理论乱谈!
  8. macOS 下的数据库客户端工具
  9. java实现modbus rtu协议与 modscan等工具(2)
  10. java 录音解析文字_教你一键把录音转成文字,五种超实用方法随你挑!