基于蚁群算法的TSP问题研究

合集下载

基于改进蚁群算法的TSP问题研究

基于改进蚁群算法的TSP问题研究

An I pr v d AntCoo y Alo ih o h a ei ae m a o lm m oe l n g rt m f r t e Tr v l ng S ls n Pr b e
L G Z i o, E G Ja — u ,H n l AN h— ma T N i h a E i n i
经应 用到 交通过 程 、 通信 、 计算 机 、 电力 、 器人设 计 机 及控制 、 工 、 程应 用 等 领域 , 不 同 的建模 方 法 化 工 按
1 基本蚁群算法
D r o ¨ 在 19 年 提 出蚂 蚁 系 统 ( n Ss og 等 9 1 i A t y— t A ) 法 , 有 2个 主 要 步骤 , e S算 m, 其 即解 的构 建 和信 息 素 的更新 , 息 素本来 是蚂 蚁在 所经 过 的路 上释 信
放 的一种挥 发性 化学 物质 , 蚁通过 它来选 择路 径 , 蚂
其研 究 包 括 以下 问题 : 由 ( 行 商 问 题 、 路 旅 车辆 路
由 、 序排列 ) 分 配 ( 次分 配 、 顺 ; 二 图着 色 、 广义 分 配 、
在蚂 蚁系统 算法 中通过 信息 素来反 映边被 蚂蚁选 择
Ab t a t sr c :Du o i e l ci gt e n d o a in a d u i g te s mec ie af rp e o n v p r t n,t eAS a — e t t n ge tn h o el c t n sn h a rtr o h r mo ee a o ai s o i o h l g rt m s o lw o v r e c n a y—t oi h i fso c n eg n e a d e s o—sa n to tg ain,a d tn s t o e g o t e lc lo tmu n e d o c nv r e t h o a p i m.Th spa e i p r b ng p t e s l to s d o h it n e— ba e un to n wh c h v p r to —ph r mo e a e c n・ i r s u h ou in ba e n t e d sa c — s d f c in i ih t e e a oa in — e o n s c n b o ・

蚂蚁算法

蚂蚁算法

蚂蚁算法求解TSP问题指导教师:李正学系 别:应用数学系班 级:2003级06班姓 名:王源学 号:200312082蚂蚁算法求解TSP问题摘 要蚂蚁算法是通过蚂蚁觅食而发展出的一种新的启发算法,该算法已经成功的解决了诸如TSP问题。

本文简要学习探讨了蚂蚁算法和TSP问题的基本内容,尝试解决一个实例问题并给出C语言算法。

关键词蚂蚁算法;TSP问题。

1 蚂蚁算法与TSP问题1.1 蚂蚁算法蚂蚁算法(Ant Colony Algorithm) 是由意大利学者M.Dorigo ,V. Manierio ,A. Collorni等人于二十世纪九十年代提出的一种新型的模拟进化算法。

受到人们对自然界中真实蚁群集体行为研究成果的启发,考虑到蚁群搜索食物的过程与旅行商问题的相似性,利用蚁群算法求解旅行商问题(Traveling Salesman Problem,TSP ) 、指派问题(AssignmentProblem)和调度问题( Scheduling Problem) ,取得了一些比较满意的实验结果。

蚁群算法是一种适应性好、鲁棒性强,具有正反馈结构的并行算法。

这些初步研究已显示出蚁群算法在求解复杂优化问题(特别是离散优化问题)方面的一些优越性,证明它是一种很有发展前景的方法。

蚂蚁算法在各个领域的应用,说明该算法有着广泛的适应性,但由于该算法出现的较晚,对其研究还处于起步阶段,远不如遗传算法、人工神经网络和模拟退火算法那样成熟。

算法的很多特性,如算法的收敛性,参数的设定都来自于大量实验统计结果,目前对该算法理论研究有待进一步加强。

经过研究发现,蚂蚁在觅食的过程中通过一种称之为信息素(Pheromone)的物质相互传递信息。

更具体地,蚂蚁在运动过程中能够在其所经过的路径上留下信息素,而且在运动过程中能够感受到这种信息素的存在及其强度,并以此指导自己的运动方向。

蚂蚁倾向于朝着信息素浓度高的方向前进,因此,由大量蚂蚁组成的蚁群的行为便表现出一种信息的正反馈现象:某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大。

基于蚁群算法的TSP问题分析

基于蚁群算法的TSP问题分析
作者简介 曹思聪( 1 9 8 9 -) , 女, 辽宁沈阳人 , 沈 阳联勤保 障中心助理工程师.
通 迅 作 者
5 0
鞍 山师范学 院学 报
第 1 9卷 1 . 1源自路径 构 建 根 据基 本框 架 , m只人 工 蚂蚁最 初 被随机 地 分配 到任 意城 市. 当蚂蚁 k 处 于城 市 i 时, 使用 随机 比例 ( r a n d o m p r o p o r t i o n a 1 ) 规则 ( 公式 1 ) 来 选择要 去 往 的下一 座城 市 的概 率 .
有用结果.
关键词
旅行 商( T S P ) 问题 ; 蚁群优 化算法 ; 信 息素 T P 3 1 1 文献标识码 A 文章篇 号 1 0 0 8 — 2 4 4 1 ( 2 0 1 7 ) 0 2 — 0 0 4 9 — 0 5
中图分类号
1 9 9 1 年, 意大利学者 M a r c o D o r i g o 提出了蚁群优化算法 ( a n t c o l o n y o p t i m i z a t i o n , A C O ) . 其一经问世 ,
联 系在 一起 , 从 而形 成群 体智 慧 J . 基 于这 种思 想 的首个 蚁群 优 化 算法 —— 蚂 蚁 系 统 ( a n t s y s t e m, A S ) 的出 现 , 这 为人 们 解 决 相关 问题 提供 了一种全 新 的思 维模 式 . 它 提 出时 也正 是 以旅 行商 ( t r a v e l i n g s a l e s m a n p r o b l e m, T S P) 问题 为实 例应 用 的. 虽 然蚂 蚁 系统 的性 能并不 是 非常 良好 , 但 是 它为 后 续 一 系列 的蚁 群算 法 提供 了思 想 基础 , 在 启发 式算 法 中翻开 了新 的一 页 . 从蚁 群算 法上 看 , 目前 许多 A C O思 想还 处 在 萌芽 阶 段 ; 针 对 蚁群 算 法 的 讨论 与开 发 也越来 越受 到关 注 ; 一些 关 于 A C O的 科 学理 论 还 有 待 证 明 j . 总 而 言之 , 它 创 新 独 特 的思 想、 快速成 长 的历史 、 表 现 突 出的性 能 、 广 阔的发展 前景 都是 研究 它 的 目的所在 .

用蚁群算法解决TSP问题

用蚁群算法解决TSP问题

用蚁群算法解决TSP 问题一、引言蚁群算法是一种受自然界生物行为启发而产生的“自然”算法,产生于对蚂蚁行为的研究。

蚁群中的蚂蚁以“信息素”为媒介,间接异步的相互联系。

蚂蚁在行动中,会在他们经过的地方留下一些化学物质,称为“信息素”。

这些物质能被同一种群众后来的蚂蚁感受到,并作为一种信号影响后者的行动,具体表现在后到的蚂蚁选择有这些物质的路径的可能性比选择没有这些物质的路径的可能性大的多。

后者留下的信息素会对原有的信息素进行加强,并循环下去。

这样,经过蚂蚁多的路径,后到蚂蚁选择这条路径的可能性就越来越大。

由于在一定的时间内,越短的路径会被越多的蚂蚁访问,因而积累的信息素就越多,在下一个时间内被其他的蚂蚁选中的可能性也越大。

这个过程会持续到所有的蚂蚁都走到最短的那一条路径为止。

二、关键技术(1) 解的表达形式在应用蚁群优化算法时,只需要建立一个虚拟的始终点,相当于蚁群的巢穴和食物所在地,这样一个所经过城市的路径的排列就构成了一个解;(2) 信息素的记忆和更新在算法开始时,由于从来没有蚂蚁去寻找过路径,因此可以认为是没有任何先验信息,即每条路上的信息相等。

客观地将,信息素应该都为0,但是由于在蚁群算法中,信息素决定了蚂蚁选择这条路径的概率,因此可以认为初始信息素矩阵为:1/(*(1))0ij N N p -⎧=⎨⎩i j i j ≠=其中N 为城市数 当算法运行过程中,每次放出m 支蚂蚁,每只蚂蚁按照信息素选择路径,将其中路径最短的记录下来,对这条最短路进行信息素的加强;而对于其他路径,因为信息素的挥发,信息素浓度将会降低,更新后的信息素矩阵为: 11(1)//(1)/k ij k ij k ij p N p p ρρρ--⎧-+⎪=⎨-⎪⎩i j i j →→经过路径不经过路径其中N 为城市数,ρ为挥发系数 (3) 蚁群的规模在一般应用中,蚁群中蚂蚁的个数m 是固定数,不超过TSP 图的节点数。

三、算法实现步骤1 设定蚁群规模m ,计算次数n ,挥发系数ρ,初始化信息素矩阵,设定变量best =+∞记录全局最优解;步骤2 若n =0,推出并输出结果;否则n=n-1,分别放出m 只蚂蚁,按照信息素概率选择路径,并找出m 条路径中的当代最优路径cubest ; 步骤3 根据当代最有路径更新信息素;步骤4 如果cubest<best ,best=cubest ,执行步骤2;否则直接执行步骤2;四、结果及分析通过五个城市节点的TSP 问题的求解,其城市间的距离矩阵为:01015621008139158020156132005291550⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭蚁群算法找到的最优路径为A C B D E →→→→,总路程为43;通过试验结果发现,对于小规模的TSP问题,蚁群算法和禁忌搜索、模拟退火算法的计算结果相似,而且耗时很短,因此该算法是合理的。

蚁群算法(ACO)解决TSP问题

蚁群算法(ACO)解决TSP问题

蚁群算法(ACO)解决TSP问题⼀、蚁群算法1.基本原理蚁群算法(Ant Colony Optimization,ACO)是⼀种基于种群寻优的启发式搜索算法,有意⼤利学者M.Dorigo等⼈于1991年⾸先提出。

该算法受到⾃然界真实蚁群集体在觅⾷过程中⾏为的启发,利⽤真实蚁群通过个体间的信息传递、搜索从蚁⽳到⾷物间的最短路径等集体寻优特征,来解决⼀些离散系统优化中的困难问题。

经过观察发现,蚂蚁在寻找⾷物的过程中,会在它所经过的路径上留下⼀种被称为信息素的化学物质,信息素能够沉积在路径上,并且随着时间逐步挥发。

在蚂蚁的觅⾷过程中,同⼀蚁群中的其他蚂蚁能够感知到这种物质的存在及其强度,后续的蚂蚁会根据信息素浓度的⾼低来选择⾃⼰的⾏动⽅向,蚂蚁总会倾向于向信息素浓度⾼的⽅向⾏进,⽽蚂蚁在⾏进过程中留下的信息素⼜会对原有的信息素浓度予以加强,因此,经过蚂蚁越多的路径上的信息素浓度会越强,⽽后续的蚂蚁选择该路径的可能性就越⼤。

通常在单位时间内,越短的路径会被越多的蚂蚁所访问,该路径上的信息素强度也越来越强,因此,后续的蚂蚁选择该短路径的概率也就越⼤。

经过⼀段时间的搜索后,所有的蚂蚁都将选择这条最短的路径,也就是说,当蚁巢与⾷物之间存在多条路径时,整个蚁群能够通过搜索蚂蚁个体留下的信息素痕迹,寻找到蚁巢和⾷物之间的最短路径。

蚁群算法中,蚂蚁个体作为每⼀个优化问题的可⾏解。

⾸先随机⽣成初始种群,包括确定解的个数、信息素挥发系数、构造解的结构等。

然后构造蚁群算法所特有的信息素矩阵每只妈蚁执⾏蚂蚊移动算⼦后,对整个群体的蚂蚁做⼀评价,记录最优的蚂蚁。

之后算法根据信息素更新算⼦更新信息素矩阵,⾄此种群的⼀次选代过程完成。

整个蚂蚁群体执⾏⼀定次数的选代后退出循环、输出最优解。

2.术语介绍(1)蚂蚁个体。

每只蚂蚁称为⼀个单独的个体,在算法中作为⼀个问题的解。

(2)蚂蚁群体。

⼀定数量的蚂蚁个体组合在⼀起构成⼀个群体,蚂蚁是群体的基本单位。

2007年高考理科综合试题及参考答案(四川卷)

2007年高考理科综合试题及参考答案(四川卷)

两层信息素更新策略:
第1层:原有信息素的挥发 ij(t n) (1 ) ij (t ) 第2层:借鉴奖惩蚁群算法思想,在完成每次循环进行信息素挥发后,根据蚂蚁所建 立路径的长短,进行排序,只有前w只建立短路径的蚂蚁被挑选出来进行奖励,其 他 (m-w )只建立路径的蚂蚁进行惩罚。
min ij (0) max
Q ij (0) d ij 0
if i j else
本文算法改进——研究过程(2)
2:路径选择策略的改进
相关文献表明,自然蚂蚁无视觉能力,无法感知距离的远近,在节点选择 时,仅能依靠信息素浓度。为更好的模拟自然蚂蚁,本文改进算法在选择 下一个城市时不再考虑距离因素,仅考虑信息素浓度。同时为有效的提高 优化速度,降低局部最优解停滞的可能性,本文采用伪随机性选择策略,并在 搜索过程中动态地调整确定性选择的概率。即蚂蚁 在 t时刻有城市 i 到城 市 j 的转移概率由下式确定:
1.1蚁群算法概况、发展以及应用
蚁群算法(ant colony optimization, ACO),又 称蚂蚁算法,是一种用来在图中寻找优化路径的 机率型算法。它由Marco Dorigo于1992年在他的 博士论文中提出,其灵感来源于蚂蚁在寻找食物 过程中发现路径的行为。 该算法还被用于求解Job-Shop调度问题、二 次指派问题以及多维背包问题等,显示了其适用 于组合优化类问题求解的优越特征。
MATLAB仿真
MATLAB是由美国mathworks公司发布的主 要面对科学计算、可视化以及交互式程序设计的 高科技计算环境。它将数值分析、矩阵计算、科 学数据可视化以及非线性动态系统的建模和仿真 等诸多强大功能集成在一个易于使用的视窗环境 中,为科学研究、工程设计以及必须进行有效数 值计算的众多科学领域提供了一种全面的解决方 案,并在很大程度上摆脱了传统非交互式程序设 计语言(如C、Fortran)的编辑模式,代表了当 今国际科学计算软件的先进水平。

蚁群算法在TSP问题中的应用研究

蚁群算法在TSP问题中的应用研究

蚁群算法在TSP问题中的应用研究作者:刘援农来源:《硅谷》2011年第13期摘要:随着计算机技术的发展,各种算法技术也不断在更新,特别是在模仿社会性动物行为领域产生很多智能算法。

主要介绍蚁群算法,阐述其工作原理和特点及使用它求解TSP 问题的具体实现。

关键词:蚁群算法;TSP;群体智能中图分类号:TP273 文献标识码:A 文章编号:1671-7597(2011)0710108-01目前,在大力发展生物启发式计算研究的背景下,社会性动物如蚁群、蜂群、鸟群等的自组织行为引起了人们的广泛关注,许多学者对这种行为进行数学建模并用计算机对其进行仿真,这就产生了所谓的“群集智能”(swarm intelligence,简称SI)。

社会性动物的妙处在于:个体行为简单,但是集体协作工作能体现出一些复杂的智能行为,而在这些行为当中,又以蚁群在觅食过程中总能找到一条从蚁巢到食物源的最短路径最为引人注目。

受其启发,意大利学者M.Dorigo,V.Maniezzo和A.Colorni而于20世纪90年代初提出了一种新型的智能优化算法——蚁群算法。

该算法最初被用于求解著名的旅行商问题(Traveling Salesman Problem,简称TSP)并获得了较好的效果。

1 蚁群算法原理蚂蚁是群体动物,它们没有视觉但是可以通过集体配合劳动找到从巢穴到食物源的最短路径。

仿生学家经过大量研究后发现,蚂蚁在搜索食物时个体之间能通过在路径上留下的气味来进行信息传递,这种气味称作信息素(pheromone)。

在蚂蚁边运动边留下信息素,并且可以根据嗅到的信息素的浓度来进行前进路径的选择。

蚂蚁总是倾向于沿着信息素浓度高的方向来移动,而路径上的信息素会随着时间的推移而逐渐挥发。

信息素强弱指导蚂蚁行进,于是当一条路径上走过的蚂蚁越多,信息素浓度就会越强烈,后来的蚂蚁选择该路径的概率就越大。

这种群体行为构成了一种信息正反馈现象,蚂蚁就是通过这种反馈机制来进行信息交流,最终快速找到食物。

基于蚁群优化算法的TSP问题求解计算智能实验报告

基于蚁群优化算法的TSP问题求解计算智能实验报告

智能计算实验报告学院:班级:学号:姓名:成绩:日期:实验名称:基于蚁群优化算法的TSP问题求解题目要求:利用蚁群优化算法对给定的TSP问题进行求解,求出一条最短路径。

蚁群优化算法简介:蚁群算法是一中求解复杂优化问题的启发式算法,该方法通过模拟蚁群对“信息素”的控制和利用进行搜索食物的过程,达到求解最优结果的目的。

它具有智能搜索、全局优化、稳健性强、易于其它方法结合等优点,适应于解决组合优化问题,包括运输路径优化问题。

TSP数据文件格式分析:本次课程设计采用的TSP文件是att48.tsp ,文件是由48组城市坐标构成的,文件共分成三列,第一列为城市编号,第二列为城市横坐标,第三列为城市纵坐标。

数据结构如下所示:实验操作过程:1、TSP文件的读取:class chengshi {int no;double x;double y;chengshi(int no, double x, double y) {this.no = no;this.x = x;this.y = y;}private double getDistance(chengshi chengshi) {return sqrt(pow((x - chengshi.x), 2) + pow((y - chengshi.y), 2));}}try {//定义HashMap保存读取的坐标信息HashMap<Integer, chengshi> map = new HashMap<Integer,chengshi>();//读取文件BufferedReader reader = new BufferedReader(new (new )));for (String str = reader.readLine(); str != null; str = reader.readLine()) { //将读到的信息保存入HashMapif(str.matches("([0-9]+)(\\s*)([0-9]+)(.?)([0-9]*)(\\s*)([0-9]+)(.?)([0-9]*)")) {String[] data = str.split("(\\s+)");chengshi chengshi = new chengshi(Integer.parseInt(data[0]),Double.parseDouble(data[1]),Double.parseDouble(data[2]));map.put(chengshi.no, chengshi);}}//分配距离矩阵存储空间distance = new double[map.size() + 1][map.size() + 1];//分配距离倒数矩阵存储空间heuristic = new double[map.size() + 1][map.size() + 1];//分配信息素矩阵存储空间pheromone = new double[map.size() + 1][map.size() + 1];for (int i = 1; i < map.size() + 1; i++) {for (int j = 1; j < map.size() + 1; j++) {//计算城市间的距离,并存入距离矩阵distance[i][j] = map.get(i).getDistance(map.get(j));//计算距离倒数,并存入距离倒数矩阵heuristic[i][j] = 1 / distance[i][j];//初始化信息素矩阵pheromone[i][j] = 1;}}} catch (Exception exception) {System.out.println("初始化数据失败!");}}2、TSP作图处理:private void evaporatePheromone() {for (int i = 1; i < pheromone.length; i++)for (int j = 1; j < pheromone.length; j++) {pheromone[i][j] *= 1-rate;}}3、关键源代码(带简单的注释):蚂蚁类代码:class mayi {//已访问城市列表private boolean[] visited;//访问顺序表private int[] tour;//已访问城市的个数private int n;//总的距离private double total;mayi() {//给访问顺序表分配空间tour = new int[distance.length+1];//已存入城市数量为n,刚开始为0n = 0;//将起始城市1,放入访问结点顺序表第一项tour[++n] = 1;//给已访问城市结点分配空间visited = new boolean[distance.length];//第一个城市为出发城市,设置为已访问visited[tour[n]] = true;}private int choosechengshi() {//用来random的随机数double m = 0;//获得当前所在的城市号放入j,如果和j相邻的城市没有被访问,那么加入mfor (int i = 1, j = tour[n]; i < pheromone.length; i++) {if (!visited[i]) {m += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);}}//保存随机数double p = m * random();//寻找随机城市double k = 0;//保存城市int q = 0;for (int i = 1, j = tour[n]; k < p; i++) {if (!visited[i]) {k += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);q = i;}}return q;}城市选择代码:private int choosechengshi() {//用来random的随机数double m = 0;//获得当前所在的城市号放入j,如果和j相邻的城市没有被访问,那么加入mfor (int i = 1, j = tour[n]; i < pheromone.length; i++) {if (!visited[i]) {m += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);}}//保存随机数double p = m * random();//寻找随机城市double k = 0;//保存城市int q = 0;for (int i = 1, j = tour[n]; k < p; i++) {if (!visited[i]) {k += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);q = i;}}return q;}4、算法运行收敛图(即运行到第几步,求得的最优值是多少):run:本次为倒数第100次迭代,当前最优路径长度为41634.60本次为倒数第99次迭代,当前最优路径长度为41514.21本次为倒数第98次迭代,当前最优路径长度为38511.61本次为倒数第97次迭代,当前最优路径长度为38511.61本次为倒数第96次迭代,当前最优路径长度为38511.61本次为倒数第95次迭代,当前最优路径长度为38511.61本次为倒数第94次迭代,当前最优路径长度为37293.07、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、本次为倒数第6次迭代,当前最优路径长度为37293.07本次为倒数第5次迭代,当前最优路径长度为37293.07本次为倒数第4次迭代,当前最优路径长度为37293.07本次为倒数第3次迭代,当前最优路径长度为37293.07本次为倒数第2次迭代,当前最优路径长度为37293.07本次为倒数第1次迭代,当前最优路径长度为37293.07得到的最优的路径长度为: 37293.075、最终求得的最优解的TSP图像:最优路径如下:→1→9→38→31→44→18→7→28→37→19→6→30→43→27→17→36→46→33→15→12→11→23→14→25→13→20→47→21→39→32→48→5→29→2→26→4→35→45→10→42→24→34→41→16→22→3→40→8→1成功生成(总时间:3 秒)实验结果分析:本次通过JA V A语言实现蚁群优化算法,我们发现虽然我们找到了问题的最优解,但是最优解的收敛性并不乐观,并不能求得问题的精确解,并且随着参数的调节运行结果有随机性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京航空航天大学金城学院毕业设计(论文)开题报告
题目基于蚁群算法的TSP问题研究
系部XXXX系
专业XXXX
学生姓名XXXX学号XXXX
指导教师XXXX职称讲师
毕设地点XXXX
年月日
填写要求
1.开题报告只需填写“文献综述”、“研究或解决的问题和拟采用的方法”两部分内容,其他信息由系统自动生成,不需要手工填写。

2.为了与网上任务书兼容及最终打印格式一致,开题报告采用固定格式,如有不适请调整内容以适应表格大小并保持整体美观,切勿轻易改变格式。

3.任务书须用A4纸,小4号字,黑色宋体,行距1.5倍。

4.使用此开题报告模板填写完毕,可直接粘接复制相应的内容到毕业设计网络系统。

1.结合毕业设计(论文)课题任务情况,根据所查阅的文献资料,撰写1500~2000字左右的文献综述:
1.1蚁群算法的发展和应用
在计算机自动控制领域中,控制和优化始终是两个重要问题。

使用计算机进行控制和优化本质上都表现为对信息的某种处理。

随着问题规模的日益庞大,特性上的非线性及不确定性等使得难以建立精确的“数学模型”。

人们从生命科学和仿生学中受到启发,提出了许多智能优化方法,为解决复杂优化问题(NP-hard问题)提供了新途径。

蚁群算法(Ant Colony Algorithm,ACA)是Dorigo M等人于1991年提出的。

经观察发现,蚂蚁个体之间是通过一种称之为信息素的物质进行信息传递的。

在运动过程中,蚂蚁能够在它所经过的路径上留下该种信息素,而且能够感知信息素的浓度,并以此指导自己的运动方向。

蚁群的集体行为表现出一种信息正反馈现象:某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大。

蚂蚁个体之间就是通过这种信息的交流达到搜索食物的目的。

它充分利用了生物蚁群通过个体间简单的信息传递,搜索从蚁巢至食物间最短路径的集体寻优特征,以及该过程与旅行商问题求解之间的相似性。

同时,该算法还被用于求解二次指派问题以及多维背包问题等,显示了其适用于组合优化问题求解的优越特征。

蚁群算法应用于静态组合优化问题,其典型代表有旅行商问题(TSP)、二次分配问题(QAP)、车间调度问题、车辆路径问题等。

在动态优化问题中的应用主要集中在通讯网络方面。

这主要是由于网络优化问题的特殊性,如分布计算,随机动态性,以及异步的网络状态更新等。

例如将蚁群算法应用于QOS组播路由问题上,就得到了优于模拟退火(SA)和遗传算法(GA)的效果。

蚁群优化算法最初用于解决TSP 问题,经过多年的发展,已经陆续渗透到其他领域中,如图着色问题、大规模集成电路设计、通讯网络中的路由问题以及负载平衡问题、车辆调度问题等。

蚁群算法在若干领域获得成功的应用,其中最成功的是在组合优化问题中的应用。

1.2蚁群算法求解TSP问题
(1)TSP问题的描述
TSP问题的简单形象描述是:给定n个城市,有一个旅行商从某一城市出发,访问各城市一次且仅有一次后再回到原出发城市,要求找出一条最短的巡回路径。

(2)TSP问题的理论意义
该问题是作为所有组合优化问题的范例而存在的。

它已经成为并将继续成为测
试新算法的标准问题。

这是因为,TSP问题展示了组合优化的所有方面。

它从概念上来讲非常简单,但是其求解的难度是很大的。

如果针对TSP问题提出的某种算法能够取得比较好的实算效果,那么对其进行修改,就可以应用于其他类型的组合优化问题并取得良好的效果。

(3)蚁群算法求解TSP的算法流程
步骤1:nc=0(nc为迭代步数或搜索次数);每条边上的Tj(0)=c(常数),并且ΔTj=0;放置m个蚂蚁到n个城市上。

步骤2:将各蚂蚁的初始出发点置于当前解集TABUk(s)中;对每个蚂蚁k(k=1,⋯,m),按概率Pij(t)移至下一城市j;将城市j置于TABUk(s)中。

步骤3:经过n个时刻,蚂蚁k可走完所有的城市,完成一次循环。

计算每个蚂蚁走过的总路径长度Lk,更新找到的最短路径。

步骤4:更新每条边上的信息量Tij(t+n)
步骤5:对每一条边置ΔTij=0;nc=nc+1
步骤6:若nc<预定的迭代次数Ncmax,则转步骤2;否则,打印出最短路径,终止整个程序。

1.3蚁群算法优缺点
蚁群算法是一种分布式的本质并行算法,蚁群算法是一种正反馈算法,蚁群算法具有较强的鲁棒性,易于与其它方法结合。

但蚁群算法收敛速度慢、计算时间长,易于过早陷入局部最优,不利于解决连续问题。

1.4蚁群算法的展望
(1)目前大部分改进的蚁群算法都是针对于特定问题,普适性不强,同时蚁群算法模型也不能直接应用于实际优化问题。

虽然正反馈机制就是一个很好的普适性模型,但还远远不够。

因此,急需设计一种通用的蚁群算法普适性模型。

(2)现阶段的蚁群算法只是模拟了自然蚂蚁很少一部分社会性,例如信息素机制。

仍然有很大的空间去提出更加智能化的蚁群行为。

(3)蚁群算法目前还带有明显的经验性,很多结果只是建立在实验的基础之上,需要逐步奠定其理论基础。

因此,根据TSP问题的特点,建立蚁群算法的模型,可以较好的解决此类组合优化问题(NP问题)。

2.毕业设计任务要研究或解决的问题和拟采用的方法:
(1)毕业设计任务要研究或解决的问题
研究基于蚁群算法的TSP问题,要求
①阅读蚁群算法相关的论文和书籍,系统地了解蚁群算法相关知识和原理的目的。

②掌握旅行商问题的基本原理和常用解决方面。

③掌握MATLAB软件平台的应用和操作,学习蚁群算法模型在不同的NP问题中的模型建立。

④通过蚁群算法的仿真和分析,实现蚁群算法解决TSP。

(2)预期成果:
通过研究和分析各种蚁群算法模型,掌握蚁群算法的基本原理和实现步骤,并在MATLAB环境中进行仿真,分析蚁群算法中各关键参数对算法性能的影响。

针对旅行商问题,掌握经典算法的基本思想和解决方法,并应用性能优异的蚁群算法得出旅行商问题的最佳解。

(3)拟采用的研究方法
在蚁群算法解决TSP问题中,采用以下研究方法:
(1)研究蚁群算法的基本原理,通过仿真结果分析蚁群算法关键参数对算法的影响。

(2)通过理论分析和仿真实验,讨论蚁群算法的收敛性。

(3)分析旅行商问题的经典解决方法,并和蚁群算法解决旅行商问题的结果进行比较分析。

指导教师意见(对课题的深度、广度及工作量的意见和对毕业设计(论文)结果的预测):
毕设主要研究基于蚁群算法的TSP问题研究,即在MATLAB软件环境中进行仿真,应用蚁群算法实现TSP问题。

内容有理论研究意义,工作量较大。

按照课题任务书和开题报告的内容,能够实现基于蚁群算法的TSP问题综合研究。

指导教师签字:年月日
上级审查意见:
负责人签字:年月日。

相关文档
最新文档