基于蚁群算法的TSP问题研究
- 格式:pdf
- 大小:252.61 KB
- 文档页数:7
蚂蚁算法求解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 问题一、引言蚁群算法是一种受自然界生物行为启发而产生的“自然”算法,产生于对蚂蚁行为的研究。
蚁群中的蚂蚁以“信息素”为媒介,间接异步的相互联系。
蚂蚁在行动中,会在他们经过的地方留下一些化学物质,称为“信息素”。
这些物质能被同一种群众后来的蚂蚁感受到,并作为一种信号影响后者的行动,具体表现在后到的蚂蚁选择有这些物质的路径的可能性比选择没有这些物质的路径的可能性大的多。
后者留下的信息素会对原有的信息素进行加强,并循环下去。
这样,经过蚂蚁多的路径,后到蚂蚁选择这条路径的可能性就越来越大。
由于在一定的时间内,越短的路径会被越多的蚂蚁访问,因而积累的信息素就越多,在下一个时间内被其他的蚂蚁选中的可能性也越大。
这个过程会持续到所有的蚂蚁都走到最短的那一条路径为止。
二、关键技术(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问题⼀、蚁群算法1.基本原理蚁群算法(Ant Colony Optimization,ACO)是⼀种基于种群寻优的启发式搜索算法,有意⼤利学者M.Dorigo等⼈于1991年⾸先提出。
该算法受到⾃然界真实蚁群集体在觅⾷过程中⾏为的启发,利⽤真实蚁群通过个体间的信息传递、搜索从蚁⽳到⾷物间的最短路径等集体寻优特征,来解决⼀些离散系统优化中的困难问题。
经过观察发现,蚂蚁在寻找⾷物的过程中,会在它所经过的路径上留下⼀种被称为信息素的化学物质,信息素能够沉积在路径上,并且随着时间逐步挥发。
在蚂蚁的觅⾷过程中,同⼀蚁群中的其他蚂蚁能够感知到这种物质的存在及其强度,后续的蚂蚁会根据信息素浓度的⾼低来选择⾃⼰的⾏动⽅向,蚂蚁总会倾向于向信息素浓度⾼的⽅向⾏进,⽽蚂蚁在⾏进过程中留下的信息素⼜会对原有的信息素浓度予以加强,因此,经过蚂蚁越多的路径上的信息素浓度会越强,⽽后续的蚂蚁选择该路径的可能性就越⼤。
通常在单位时间内,越短的路径会被越多的蚂蚁所访问,该路径上的信息素强度也越来越强,因此,后续的蚂蚁选择该短路径的概率也就越⼤。
经过⼀段时间的搜索后,所有的蚂蚁都将选择这条最短的路径,也就是说,当蚁巢与⾷物之间存在多条路径时,整个蚁群能够通过搜索蚂蚁个体留下的信息素痕迹,寻找到蚁巢和⾷物之间的最短路径。
蚁群算法中,蚂蚁个体作为每⼀个优化问题的可⾏解。
⾸先随机⽣成初始种群,包括确定解的个数、信息素挥发系数、构造解的结构等。
然后构造蚁群算法所特有的信息素矩阵每只妈蚁执⾏蚂蚊移动算⼦后,对整个群体的蚂蚁做⼀评价,记录最优的蚂蚁。
之后算法根据信息素更新算⼦更新信息素矩阵,⾄此种群的⼀次选代过程完成。
整个蚂蚁群体执⾏⼀定次数的选代后退出循环、输出最优解。
2.术语介绍(1)蚂蚁个体。
每只蚂蚁称为⼀个单独的个体,在算法中作为⼀个问题的解。
(2)蚂蚁群体。
⼀定数量的蚂蚁个体组合在⼀起构成⼀个群体,蚂蚁是群体的基本单位。
蚁群算法在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文件是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语言实现蚁群优化算法,我们发现虽然我们找到了问题的最优解,但是最优解的收敛性并不乐观,并不能求得问题的精确解,并且随着参数的调节运行结果有随机性。
基于GPU加速的并行蚁群算法求解旅行商问题研究摘要:蚁群算法是求解旅行商问题的有效方法之一,但是随着蚁群规模和城市规模的增大,算法的运行速度将大大降低,本文利用GPU在CUDA7.0环境下,对蚁群算法进行化加速设计,实验结果表明,该方法取得了良好的加速效果,当蚁群规模增大时,加速倍大幅度提高。
数据显示,蚁群个体和城市规模越大,加速效果越好。
关键词:蚁群算法;GPU;CUDA中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2016)12-0206-02旅行商问题(Traveling Salesman Problem,简称TSP)是一个典型的组合优化问题。
城市管道铺设优化、物流业的车辆调度、制造业中的切割路径优化等现实生活中的优化问题都可以归结为TSP求解问题。
它解决从一个城市出发,经过若干个城市后又返回原城市的最优路径的求解问题。
蚂蚁在觅食路径上会释放一种特殊的分泌物―“信息素”,随着时间流逝,信息素会挥发,后面的蚂蚁根据路径上的信息素浓度,选择信息素多的路径去觅食,这样便形成了一个正反馈机制。
在整个寻径过程中,虽然单只蚂蚁的选择能力有限,但它们的行为具有非常高的自组织性,相互之间交换路径,最终寻找到最优路径。
受到蚁群系统信息共享机制的启发,意大利学者DorigoM于1992年首次系统提出了蚁群算法,并成功地将该方法应用到求解TSP问题中[1]。
该算法是启发式搜算算法的一种,采用了分布式并行计算机制,易于与其他方法结合,具有强的鲁棒性。
同时,相对于其他搜算法,对初始路线要求不高,在搜索过程中不需要人工调整。
研究表明,蚁群算法是解决TSP问题有效的算法之一,因此也成为近年来的研究热点。
近年来,基于GPU(图像处理器)的大规模通用并行计算,大大提高了计算机图形处理的效率[2]。
GPU的高速浮点运算能力、并行计算和可编程功能也为通用计算提供了良好的并行计算平台,同时也为蚁群算法的高速并行实现提供了可能。
蚁群算法java实现以及TSP问题蚁群算法求解1. 蚁群算法简介蚁群算法(Ant Clony Optimization,ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的可能性。
蚁群算法最早是由意大利学者Colorni A., Dorigo M. 等于1991年提出。
经过20多年的发展,蚁群算法在理论以及应用研究上已经得到巨大的进步。
蚁群算法是一种仿生学算法,是由自然界中蚂蚁觅食的行为而启发的。
在自然界中,蚂蚁觅食过程中,蚁群总能够按照寻找到一条从蚁巢和食物源的最优路径。
图(1)显示了这样一个觅食的过程。
图(1)蚂蚁觅食在图1(a)中,有一群蚂蚁,假如A是蚁巢,E是食物源(反之亦然)。
这群蚂蚁将沿着蚁巢和食物源之间的直线路径行驶。
假如在A和E之间突然出现了一个障碍物(图1(b)),那么,在B点(或D点)的蚂蚁将要做出决策,到底是向左行驶还是向右行驶?由于一开始路上没有前面蚂蚁留下的信息素(pheromone),蚂蚁朝着两个方向行进的概率是相等的。
但是当有蚂蚁走过时,它将会在它行进的路上释放出信息素,并且这种信息素会议一定的速率散发掉。
信息素是蚂蚁之间交流的工具之一。
它后面的蚂蚁通过路上信息素的浓度,做出决策,往左还是往右。
很明显,沿着短边的的路径上信息素将会越来越浓(图1(c)),从而吸引了越来越多的蚂蚁沿着这条路径行驶。
2. TSP问题描述蚁群算法最早用来求解TSP问题,并且表现出了很大的优越性,因为它分布式特性,鲁棒性强并且容易与其它算法结合,但是同时也存在这收敛速度慢,容易陷入局部最优(local optimal)等缺点。
TSP问题(Travel Salesperson Problem,即旅行商问题或者称为中国邮递员问题),是一种,是一种NP-hard问题,此类问题用一般的算法是很大得到最优解的,所以一般需要借助一些启发式算法求解,例如遗传算法(GA),蚁群算法(ACO),微粒群算法(PSO)等等。
基于蚁群算法的TSP问题研究TSP问题(Traveling Salesman Problem)是指给定n个城市和每对城市之间的距离,求解出访问每个城市恰好一次并回到起点的最短路径。
这个问题是一个经典的组合优化问题,同时也是NP完全问题。
在各个领域都有广泛的应用,例如物流规划、工程设计、生物信息学等领域。
蚁群算法是一种仿生算法,是指模拟蚂蚁搜索食物的行为,通过集体行为实现全局优化的算法。
蚁群算法的基本思想是将多个个体组成一个群体,通过信息交流和合作来完成任务,每个个体根据自身经验和与其他个体的交流,对整体所探索的领域进行逐步探索,最终找出最优解。
基于蚁群算法的TSP问题研究通过模拟蚂蚁在城市间寻找最短路径的过程来解决问题。
蚂蚁在寻找路径时会根据当前位置和距离信息来选择下一个城市,同时会在其路径上释放信息素,其他蚂蚁通过检测信息素来发现更优的路径,进而跟随该路径前进,最终形成一条整体最优解。
在基于蚁群算法的TSP问题研究中,主要需要考虑的问题包括信息素更新、路径选择策略、参数设置等问题。
其中,信息素更新可以是全局更新或局部更新,全局更新包括将所有路径上的信息素进行更新;局部更新则仅限于最优解路径。
路径选择策略可以考虑根据信息素浓度选择、根据距离选择等,不同的路径选择策略对结果的影响也不同。
参数设置可以根据实验数据进行调整,包括信息素浓度、信息素挥发率等。
基于蚁群算法的TSP问题研究已经有了很多成果,其优点包括收敛速度快、解决大规模问题能力强、容易实现等。
但是也存在着一些问题,例如容易陷入局部最优解、难以控制搜索精度等。
因此,在实际应用过程中需要结合具体问题进行调整和优化。
综上所述,基于蚁群算法的TSP问题研究是一个具有重要应用价值的领域,可以通过模拟蚂蚁搜索最短路径的行为来实现全局优化。
虽然该算法存在一些问题,但在实际应用中已经取得了广泛的成功,未来也有很多的研究优化方向。
基于蚁群算法的旅⾏商问题(TSP)实现基于蚁群算法的旅⾏商问题(TSP)实现⼀.问题分析旅⾏商问题,即TSP问题(Travelling Salesman Problem)⼜译为旅⾏推销员问题、货郎担问题,是数学领域中著名问题之⼀。
假设有⼀个旅⾏商⼈要拜访n个城市,他必须选择所要⾛的路径,路径的限制是每个城市只能拜访⼀次,⽽且最后要回到原来出发的城市。
路径的选择⽬标是要求得到的路径路程为所有路径之中的最⼩值。
旅⾏商问题是⼀个经典的NP难题,也是组合优化中研究最多的问题之⼀。
城市管道铺设优化、物流业的车辆调度、制造业中的切割路径优化等,现实⽣活中的优化问题都可以归结为TSP问题进⾏求解。
寻找⼀种有效的解决该问题的算法,具有重要的现实意义。
蚁群算法是⼀种求解TSP问题的优化算法。
⼆.算法选择蚁群算法(ant colony optimization, ACO),⼜称蚂蚁算法,是⼀种⽤来在图中寻找优化路径的机率型算法。
它由Marco Dorigo 于1992年在他的博⼠论⽂中提出,其灵感来源于蚂蚁在寻找⾷物过程中发现路径的⾏为。
蚁群算法的主要思想为:模拟蚂蚁觅⾷⾏为。
蚂蚁在运⾏过程中会释放⼀种特殊的分泌物-信息素来寻找路径。
信息素会随着时间消减,后⾯的蚂蚁选择信息素多的路径,这样便形成了⼀个正反馈机制。
在整个寻径过程中,虽然单只蚂蚁的选择能⼒有限,但它们的⾏为具有⾮常⾼的⾃组织性,相互之间交换路径,最终寻找到最优路径。
蚁群算法是⼀种模拟进化算法,初步的研究表明该算法具有许多优良的性质。
针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进⾏了⽐较,数值仿真结果表明,蚁群算法具有⼀种新的模拟进化优化⽅法的有效性和应⽤价值。
蚁群算法是⼀种求解组合最优化问题的新型通⽤启发式⽅法,该⽅法具有正反馈、分布式计算和富于建设性的贪婪启发式搜索的特点。
通过建⽴适当的数学模型,基于故障过电流的配电⽹故障定位变为⼀种⾮线性全局寻优问题。
基于蚁群算法的旅行商问题的研究作者:李辉来源:《无线互联科技》2015年第03期摘要:群居性昆虫行为的研究为计算机科学家提供了设计分布式控制和优化算法的有力方法。
对以蚁群算法为代表的群集智能的研究已经逐渐成为一个研究热点。
蚁群算法在实际的生活中有很大的用处,比如求解旅行商问题,文章介绍了一种求解复杂TSP的蚁群算法,阐述了该算法的基本原理及实现过程,并且在本文中尝试用编码的形式将基本蚁群算法应用到求解旅行商问题中去。
关键词:基本蚁群算法;信息素;旅行商问题1 意义和目标近年来,许多学者对蜜蜂、蚂蚁等一些昆虫的行为进行了大量的研究,特别是他们的集体行为,而这些动物一般都是群居昆虫。
每个昆虫的能力虽然十分有限,但昆虫群体的能力却远远超过所有个体能力的总和。
比如,蚂蚁群可以快速建立起巢穴与食物之间的最短路径。
令人惊奇的是,每只蚂蚁并不直接比较每条路径,而仅仅只是遵守信息素释放/跟随规则就能找到最佳路径。
蚂蚁群的这种能力很自然地引起了计算机科学家的兴趣。
旅行商问题的定义并不统一,一般广泛认为这样定义:假若有多个城市,而这多个城市的距离为已知条件,这个距离也可以理解为多个城市之间的开销,若要得到某一个旅行商走遍所有城市的一条回路,但必须满足所有城市之间的距离的和为最小,也可以是城市之间的开销达到最小值的这样的一条回路。
求解TSP问题的算法较多,但文章使用基本蚁群算法来解决旅行商问题。
2 国内外研究现状为了得到解决组合优化问题的某种计算机智能方法,Mnaeizzo、Cootmi、Dorigo在意大利的米兰理工学院,发现了蚂蚁系统,也就是本文中提到的蚁群算法,这是第一次提出的蚁群算法思想,是从蚂蚁寻找食物的过程中发现的。
人们由蚁群的集体行为得到了蚁群算法,可以说传统求解组合优化问题的算法可以称之为新型仿生算法,而蚁群算法就是其中一种。
从第一次提出蚁群算法以后,Dorigo等人又对蚁群算法做了不少改进,这些改进可以从以下模块来理解:首先,加强了蚁群算法的实际应用的背景;其次,又有新的算法模型的出现,是从原来蚁群算法的基础上做了较大的改进。
南京航空航天大学金城学院毕业设计(论文)开题报告
题目基于蚁群算法的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问题综合研究。
指导教师签字:年月日
上级审查意见:
负责人签字:年月日。