蚁群算法中参数_设置的研究_以TSP问题为例

合集下载

TSP问题中的蚁群优化算法研究的开题报告

TSP问题中的蚁群优化算法研究的开题报告

TSP问题中的蚁群优化算法研究的开题报告题目:TSP问题中的蚁群优化算法研究一、研究背景TSP问题(Traveling Salesman Problem)是指一个旅行商在规定的城市之间旅行,每个城市只能访问一次,最终回到起点。

该问题由于其优化复杂度高,难以在实际中求得最优解,因此一直是运筹学与计算机科学领域的研究热点。

蚁群算法是一种基于群体智能的优化算法,通过模拟蚂蚁在自然界中的行为,尝试寻找TSP问题的最优解。

该算法因其简单易实现、无需全局信息等优点,已经成为TSP问题研究的重要方法之一。

二、研究内容本研究将针对TSP问题,探究蚁群优化算法在该问题上的应用和性能。

具体研究内容包括以下几点:1. 对TSP问题的基本定义及优化模型进行研究,分析不同算法在求解TSP问题时的应用特点及性能要求。

2. 详细介绍蚁群算法的基本原理、模拟过程及相关参数设置方法,并对该算法在TSP 问题求解中的效果进行分析。

3. 研究蚁群算法中不同因素对性能的影响,并通过实验得出最优参数组合。

4. 将蚁群算法与其他算法进行对比,分析其优劣及适用范围。

5. 对蚁群算法在实际TSP问题中的应用及扩展进行探讨。

三、研究意义随着信息技术的发展和应用场景的增加,TSP问题已经在很多领域中得到了广泛的应用。

本研究探究蚁群优化算法在该问题上的有效性及优劣,对于解决实际应用中的TSP问题具有重要意义。

同时,本研究也为蚁群算法的应用提供了一个具体的实例,可为该算法在其他问题上的研究提供借鉴。

四、研究方法本研究采用文献资料调研、数学建模、算法实现、性能分析等多种方法进行研究。

其中,蚁群算法的实现过程将采用Python语言进行编程。

五、进度计划研究时间:2021年10月-2022年6月1. 前期文献调研和问题分析(2021年10月-2021年11月)2. 确定研究方法和设计模型(2021年11月-2021年12月)3. 蚁群算法的实现和性能分析(2022年1月-2022年3月)4. 研究结果总结和论文撰写(2022年4月-2022年6月)以上是本研究的开题报告,谢谢阅读。

蚁群算法实现TSP

蚁群算法实现TSP

蚁群算法实现TSP蚁群算法(Ant Colony Optimization, ACO)是一种模拟蚂蚁觅食行为的算法,常被用来解决旅行商问题(Traveling Salesman Problem, TSP)。

旅行商问题是一个经典的组合优化问题,目标是找到一条最短的路径,使得旅行商能够访问所有城市并返回起始城市。

蚁群算法的基本思想是模拟蚂蚁寻找食物的行为,每只蚂蚁在过程中释放信息素,并根据信息素浓度和距离选择下一个城市。

信息素的释放和更新规则是蚁群算法的核心。

蚁群算法的实现步骤如下:1.初始化蚁群:随机放置一定数量的蚂蚁在不同城市。

2.计算路径长度:根据蚂蚁的选择规则,计算每只蚂蚁的路径长度。

3.更新信息素:根据路径长度,更新城市之间的信息素浓度。

4.更新蚂蚁的选择规则:根据信息素浓度和距离,更新蚂蚁的选择规则。

5.重复步骤2-4,直到达到指定的迭代次数或找到最优解。

在蚂蚁的选择规则中,信息素浓度和距离是两个重要的因素。

信息素浓度越高,蚂蚁越有可能选择该路径;距离越短,蚂蚁越倾向于选择该路径。

为了平衡这两个因素,通常使用一个参数来调节它们的权重。

在更新信息素时,一般采用全局信息素更新和局部信息素更新两种方式。

全局信息素更新是将所有蚂蚁路径上的信息素浓度进行更新,以加强优质路径的信息素浓度。

局部信息素更新是只更新最优路径上的信息素浓度,以加强当前最优路径的信息素浓度。

蚁群算法的优点是能够找到近似最优解,并且具有较好的鲁棒性和适应性。

然而,蚁群算法也存在一些问题,例如易陷入局部最优解、收敛速度较慢等。

针对TSP问题,蚁群算法的实现可以按照上述步骤进行。

具体来说,可以通过以下几个方面的设计来优化算法的性能:1.蚂蚁的选择规则:可以采用轮盘赌选择法,即根据信息素浓度和距离计算每个城市被选择的概率,然后根据概率选择下一个城市。

2.信息素更新:可以采用全局信息素更新和局部信息素更新相结合的方式,以平衡全局和局部的效果。

蚁群算法在解决TSP问题中的应用

蚁群算法在解决TSP问题中的应用
径 的过 程 如 图 1所 示 。
蚁 群 算法 之所 以在 多个 领域 获得 广泛 应
2 . 2 . I 对算法进行初 始化 对所 有 城 市的坐 标进 行 获取 ,以此 为依 据 ,对距 离矩阵 Di s t ma t r i x进行计 算,同时对 随机发生器状态进行初始 化,并 以随机的形式
其 它 算 法 结合 使 用 。 但 是 在 应 用 实 践 中 发 现 ,
虽然蚁群 算法 的优点较多,其也或多或少地存 在一定 的不足 ,如搜索时间较长 ,规模越 大时
间 越 长 ; 容 易 出现 停 滞 现 象 等 等 。
1 . 2 T S P 问 题
从 n个城市 中选 出初 始的 出发城市,并将该城 优 的遍 历顺序、最优的遍历结果 以及总体运行 时 间输 出,便可完成对 T S P问题 的求解 。 市设定为 :
图1 :蚁群寻找最短路径的演 示图
蚁的数 目 = AK+ 1 。
S t e p 5 :蚂蚁个体按照 A n t — Q S y s t e ms算法 提出的状态转移概率,选择下个城市 j 并前进 。
S t e p 6 : 对 允 许 矩 阵 进 行 更 新 , 使 其 变 为
【 关键词 】蚁群 算法 T S P问题 最优解
a l l o w( A K, j ) - O ,即将蚂蚁所选 城市标号在该矩 阵中对应位置 的值 重新 设定为 0 。
S t e p 7 : 如 果 蚂 蚁 为 遍 历 集 合 C 中 的所
1蚁群算 法与T S P 问题简介
1 . 1蚁群算法
蚁群算法是一种 随机 的、概率搜索算法 , 它是 目前求解 复杂组合优化 问题较为有 效的手
S t e p 4 ,若 是遍 历所有 元素,则可执 行 S t e p 8 。

蚁群优化算法在解决TSP问题中的应用

蚁群优化算法在解决TSP问题中的应用

还有页眉没有添加,页眉上写章标题,把我给你标注的问题改完就可以打印了摘要根据蚂蚁生态学提出的蚁群算法是一种新颖的用于求解复杂组合优化问题的模拟进化算法,具有典型的群体智能特征,表现出较强的学习能力和适应能力。

本文阐述了该算法的基本原理、算法模型和在TSP( Traveling Salesman Problem,旅行商)问题中的具体应用过程,并对算法进行了总结和展望。

关键词:蚁群算法,旅行商问题,外激素目录摘要Ⅰ目录II第一章引言 (1)第二章蚁群算法的基本原理和模型 (2)2.1 蚁群算法的基本原理 (2)2.2 蚁群算法的模型 (3)第三章基于蚁群算法的TSP求解 (5)3.1 TSP问题的描述 (5)3.2 基于蚁群算法的TSP求解 (5)3.3 蚁群算法的局限性 (6)第四章蚁群算法的改进 (8)4.1 优选参数m (8)4.2 参数 的调整 (8)4.3 信息素的更新 (8)4.4 信息素链表L 和禁忌链表TL 的构建 (9)第五章改进的算法基本流程 (10)第六章结论 (11)参考文献 (12)第一章引言研究群居性昆虫行为的科学家发现,昆虫在群落一级上的合作基本上是自组织的,在许多场合中尽管这些合作可能很简单,但它们却可以解决许多复杂的问题。

蚁群算法就是利用群集智能解决组合优化问题的典型例子。

蚁群算法(Ant Colony Algorithm, ACA)是由意大利学者M.Dorigo,V.Mzniezzo,A.Colorni 等人在20世纪90年代初首先提出来的。

它是继模拟退火算法、遗传算法、禁忌搜索算法、人工神经网络算法等元启发式搜索算法以后的又一种应用于组合优化问题的启发式搜索算法。

蚁群算法不仅能够智能搜索、全局优化,而且具有稳健性A、鲁棒性B、正反馈、分布式计算、易与其它算法结合等特点。

利用正反馈原理,可以加快进化过程;分布式计算使该算法易于并行实现,个体之间不断进行信息交流和传递,有利于找到较好的解,不容易陷入局部最优;该算法易与多种启发式算法结合,可改善算法的性能;由于鲁棒性强,故在基本蚁群算法模型的基础上进行修改,便可用于其它问题。

蚁群算法原理及在TSP中的应用(附程序)

蚁群算法原理及在TSP中的应用(附程序)

蚁群算法原理及在TSP 中的应用1 蚁群算法(ACA )原理1.1 基本蚁群算法的数学模型以求解平面上一个n 阶旅行商问题(Traveling Salesman Problem ,TSP)为例来说明蚁群算法ACA (Ant Colony Algorithm )的基本原理。

对于其他问题,可以对此模型稍作修改便可应用。

TSP 问题就是给定一组城市,求一条遍历所有城市的最短回路问题。

设()i b t 表示t 时刻位于元素i 的蚂蚁数目,()ij t τ为t 时刻路径(,)i j 上的信息量,n 表示TSP 规模,m 为蚁群的总数目,则1()ni i m b t ==∑;{(),}ij i i t c c C τΓ=⊂是t 时刻集合C 中元素(城市)两两连接ij t 上残留信息量的集合。

在初始时刻各条路径上信息量相等,并设 (0)ij const τ=,基本蚁群算法的寻优是通过有向图(,,)g C L =Γ实现的。

蚂蚁(1,2,...,)k k m =在运动过程中,根据各条路径上的信息量决定其转移方向。

这里用禁忌表(1,2,...,)k tabu k m =来记录蚂蚁k 当前所走过的城市,集合随着k tabu 进化过程作动态调整。

在搜索过程中,蚂蚁根据各条路径上的信息量及路径的启发信息来计算状态转移概率。

()kij p t 表示在t 时刻蚂蚁k 由元素(城市)i 转移到元素(城市)j 的状态转移概率。

()*()()*()()0k ij ij k kij ij ij s allowed t t j allowed t t p t αβαβτητη⊂⎧⎡⎤⎡⎤⎣⎦⎣⎦⎪∈⎪⎡⎤⎡⎤=⎨⎣⎦⎣⎦⎪⎪⎩∑若否则(1)式中,{}k k allowed C tabuk =-表示蚂蚁k 下一步允许选择的城市;α为信息启发式因子,表示轨迹的相对重要性,反映了蚂蚁在运动过程中所积累的信息在蚂蚁运动时所起作用,其值越大,则该蚂蚁越倾向于选择其他蚂蚁经过的路径,蚂蚁之间协作性越强;β为期望启发式因子,表示能见度的相对重要性,反映了蚂蚁在运动过程中启发信息在蚂蚁选择路径中的重视程度,其值越大,则该状态转移概率越接近于贪心规则;()ij t η为启发函数,其表达式如下:1()ij ijt d η=(2)式中,ij d 表示相邻两个城市之间的距离。

基于蚁群优化算法的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语言实现蚁群优化算法,我们发现虽然我们找到了问题的最优解,但是最优解的收敛性并不乐观,并不能求得问题的精确解,并且随着参数的调节运行结果有随机性。

蚁群算法解决TSP问题的并行化研究与实现

蚁群算法解决TSP问题的并行化研究与实现

Pa a l lRe e r h a d I p e e a i n o t Co o g r t r le s a c n m l m nt to fAn l ny Al o ihm
t oቤተ መጻሕፍቲ ባይዱv o lm fTS o S le Pr b e o P
ZHAN G u LI Yu, J n, U LU n Fe g-la g in
缩 短 , 行效率显 著提 高。 由此 可见 , 执 改进后 的并行蚁 群算法 是可行有 效的 。 关键词 : 蚁群算法 ;S TP问题 ; 多核 ; pn p并行 优化 Oe M ;
中图分 类号 : P 9 T 3 文献标识 码 : A 文章 编号 :6 3 6 9 ( 0 1 0 — 0 2 0 17— 2 X 2 1)5 07 - 3
a l g mo n ft a e a u t me, i e apaa ll p mi a o g rt m t r o i g v rl e t z t n a o i o i i l h a l -c r n io me . p y n et c n lg fp r l l p mi a i n mu t o e e v r n nt Ap l i g t h o o y o a al t z t i h e e o i o a o tOp n p i r v st epa t f tr t n a d c ci s in n n a tc l n g rt m , e a s i atc n u st e mo t ft b u e M mp o e r o e a o n y l a s me ti o o y a o i h i i c g n l h b c u e t s p r o s me s me h h o i .

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

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

蚁群算法及其在TSP问题中的应用研究摘要:tsp问题是一类典型的np完全问题,蚁群算法是求解该问题的方法之一。

该文在研究蚁群算法的基本优化原理的基础上,建立了求解tsp 问题的数学模型,设计了一个求解tsp问题的蚁群算法程序,并通过仿真实验验证了算法的有效性,分析了蚂蚁规模、周游次数等因素对蚁群算法搜索结果所产生的影响。

关键词:tsp;蚁群算法;np完全问题中图分类号:tp301 文献标识码:a 文章编号:1009-3044(2013)13-3117-03旅行商问题(traveling salesman problem,简称tsp)是一个具有广泛应用背景和重要理论价值的组合优化问题,它已被证明属于np难题[1]。

目前对于求解该类问题的研究主要有两个方向:一是传统的数学规划方法,这种算法可以得到全局最优解,但复杂性往往难以接受,因而不适应于大规模复杂问题的求解。

二是近年来发展起来的各种仿生进化算法如遗传算法、蚁群算法等,此类算法能够在多项式时间内找到全局最优解或近似全局最优解[2]。

蚁群算法(ant colony algorithm,简称aca)是受自然界中蚂蚁集体寻食过程的启发而提出来的一种新的智能优化算法,它具有高度的本质并行性、正反馈选择、分布式计算、鲁棒性等优点,蚁群算法最早成功地应用于解决tsp问题。

本文在研究蚁群算法的基本优化原理的基础上,编写了一个基于vc的求解tsp问题的蚁群算法程序,并且通过多次实验测试,验证了算法的有效性,分析了蚂蚁规模、周游次数等因素对蚁群算法的搜索结果和效率所产生的影响。

1 tsp问题建模2 基于蚁群算法的tsp问题求解2.2蚁群算法的基本原理蚁群算法是一种源于自然生物界的新型仿生优化算法,它于20世纪90年代初由意大利学者m.dorigo,v.maniezzo首次提出[3],蚁群算法的特点是模拟自然界中蚂蚁寻食的群体行为。

研究表明,蚂蚁会在走过的路上留下信息素,信息素会随时间的推移逐渐挥发消失,蚂蚁就是通过信息素进行信息交流。

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

第29卷第7期2004年7月武汉大学学报#信息科学版GeomaticsandInformationScienceofWuhanUniversityVol.29No.7July2004

收稿日期:2004203226。项目来源:国家自然科学基金资助项目(40271094)。

文章编号:167128860(2004)0720597205文献标识码:A蚁群算法中参数A、B、Q设置的研究)))以TSP问题为例

叶志伟1 郑肇葆1(1 武汉大学遥感信息工程学院,武汉市珞喻路129号,430079)摘 要:以TSP问题为例,对蚁群算法中参数A、B、Q的作用作了理论上的研究,同时对最优的参数配置问题作了分析。在保证获得解的前提下,为了提高计算速度,对基本蚁群算法中的选择路线策略进行了调整。通过实例计算表明,这种调整是切实可行的,有较好的实用价值。关键词:蚁群算法;旅行商问题;参数配置中图法分类号:TP751;P231.5

自1991年Dorigo、Maniezzo和Colorni等首先提出蚁群算法以来,很多研究人员对该算法进行了研究,并成功地解决了许多组合优化问题,如TSP(travelingsalesmanproblem)、QAP(quadraticassignmentproblem)、JSP(job2shopschedulingproblem)等。TSP问题是一类经典的组合优化问题,即在给定城市个数和各城市之间距离的条件下,找到一条遍历所有城市且每个城市只能访问一次的总路程最短的路线。蚁群算法在TSP问题应用中取得了良好的效果,但也存在一些不足:¹如果参数A、B、Q设置不当,导致求解速度很慢且所得解的质量特别差;º基本蚁群算法计算量大,求解所需的时间较长;»基本蚁群算法中理论上要求所有的蚂蚁选择同一路线,该线路即为所求的最优线路;但在实际计算中,在给定一定循环次数的条件下很难实现这种情况。另一方面,在其他的实际应用中,如图像处理中寻求最优模板问题,并不要求所有的蚂蚁都能找到最优模板,而只需要一只找到即可。如果要求所有的蚂蚁都找到最优模板,反而影响了计算效率。1 蚁群算法1.1 蚁群行为仿真的基本思想蚁群算法是一种受自然界生物的行为启发而产生的/自然0算法,它是从真实蚁群觅食行为的研究中产生的。生物学研究表明,当蚂蚁在食源和巢穴之间往返时,它们会在经过的线路上敷设一种被称为信息素的化学物质。蚂蚁可以嗅到这种信息素并且选择信息素浓度最大的线路。经过一条线路的蚂蚁越多,这条线路上的信息素浓度也越大,更多的蚂蚁就会选择这条线路。蚂蚁的这种/正反馈0行为能帮助它们很快找到最短觅食线路。蚁群算法就是受这种行为启发,以人工蚂蚁模拟真实蚂蚁行为的分布式算法见文献[1]。1.2 蚁群算法的模型及在TSP问题中的实现基本蚁群算法在TSP问题中的实现过程如下。假设将m只蚂蚁放入到n个随机选择的城市中,每只蚂蚁根据一定的概率选择下一个它还没有访问过的城市。蚂蚁选择下一个目标城市的主要依据有以下两点:¹Sij(t)为t时刻连接城

市i和j的路径上的信息的浓度。初始时刻,各条路径上信息量相等,在试验中设Sij(0)=C(C

为常数)。ºGij为由城市i转移到城市j的可见度,亦称启发信息,该启发信息是由所要解决的问题给出的,由一定的算法实现。在TSP问题中,一般取Gij=1/dij,dij表示城市i、j间的距离。t时刻位于城市i的蚂蚁k选择城市j为目标城市的概率为:pkij(t)=[Sij(t)]A#[Gij]B/EjIallowed[Sij(t)]A#[Gij]B, jIallowed0, 其他(1) 蚂蚁k选中某个城市的可能性是问题本身所提供的启发信息与蚂蚁目前所在城市到目标城市路径上残留信息量的函数。为了避免对同一个城市的重复访问,每一只蚂蚁都保存一个列表Tabu(k),用于记录到目前为止蚂蚁已经访问过的城市集合。Tabu(k)随着蚂蚁寻优过程作动态调整。为了避免残留信息素过多引起残留信息淹没启发信息,在每一只蚂蚁走完一步或者完成对所有n个城市的访问后(也即一个循环结束后),对残留信息进行更新处理。这种更新模仿人类记忆的特点,在新信息素不断存入大脑的同时,存贮在大脑中的旧信息素随着时间的推移逐渐淡化,甚至忘记。这样,得到(t+n)时刻在ij路径上的信息素浓度为:Sij(t+n)=QSij(t)+$Sij(t+n)(2)式中,Q表示信息素的保留率,则1-Q表示信息素的挥发率。为了防止信息的无限累积,Q的取值范围限定在0~1;$Sij表示蚂蚁k在时间段t

到(t+n)的过程中,在i到j的路径上留下的残留信息浓度。根据信息素更新策略的不同,有3种不同的蚁群算法模型。1)ant2quantity模型

$Skij(t,t+1)=Q1/dij,如果蚂蚁k经过ij0,如果蚂蚁k不经过ij(3)式中,Q1是常量,信息素的增量与ij之间的距离

有关。2)ant2density模型

$Skij(t,t+1)=Q2,如果蚂蚁k经过ij0,(4)式中,Q2是常量,则信息素增加一个固定值,与ij之间的距离无关。3)ant2cycle模型

$Skij(t,t+1)=Q3/Lk,如果蚂蚁k在巡回

0,如果蚂蚁k在巡回中不经过ij(5)式中,Q3是常量;Lk表示第k只蚂蚁的循环路线,即如果蚂蚁经过ij,则信息素增量为一个常量除以蚂蚁k的巡回路线长。这里,信息素增量只与

蚂蚁的巡回路线和Q3有关系,而和具体的dij无

关。前两种模型利用的是局部信息,蚂蚁在完成一步(从一个城市到达另外一个城市)后更新所有路径上的信息素,而最后一种模型利用的是整体信息,蚂蚁在一个循环(对所有n个城市的访问)以后,更新所有路径上的信息素。因此,在求解TSP问题时,ant2cycle模型性能比前面两种模型好。蚁群算法中A、B、Q等参数对算法性能有很大的影响。A值的大小表明留在每个结点上的信息量受重视的程度,A值越大,蚂蚁选择以前经过的路线的可能性越大,但过大会使搜索过早陷于局部最小解;B的大小表明启发式信息受重视的程度,B值越大,蚂蚁选择离它近的城市的可能性也越大;Q表示信息素的保留率,如果它的值取得不恰当,得到的结果会很差。根据以上分析,研究参数A、B、Q的最佳配置,对发挥蚁群算法在实际问题中的作用有很重要的意义。

2 蚁群算法模型参数对TSP问题影响的试验分析研究

2.1 蚂蚁算法的具体过程图1是ant2density模型和ant2quantity模型的具体过程。而ant2cycle模型的流程图比较简单,根据式(6)和文字说明很容易画出,或参考文献[4],这里就不再给出。

图1 蚂蚁算法用于TSP的流程图Fig.1 ProcedureofAntAlgorithmonTSP

2.2 试验说明本文用1000次循环作为试验终止条件(这

598武汉大学学报#信息科学版2004年里一次循环是指每只蚂蚁完成一次遍历回到出发的城市)。试验中采用改变一个参数、其他参数不变的策略来探索参数的设置对算法效率的影响;蚂蚁的总数目总是设置为城市的总数目,即初始时刻每个城市放置一只蚂蚁。缺省参数设置为A=1,B=1,Q=0.7,Q=100,在得到每条备选路线概率的情况下,蚂蚁运用随机选择的方法确定下一步要达到的城市。每组数据试验10次取平均作比较,试验中所用的TSP问题数据来源于oliver30城市问题。2.3 试验分析A、B的取值越大,计算量也越大,计算时间就越长,所以,在能获得满意解的情况下,建议A、B取相对较小的值。现将试验结果说明如下:表中平均值表示将10次运行中每次得到的最短线路长的平均值;最优解表示10次运行中得到的10条最短线路中的最小值;最差解表示10次运行中每次得到的最短线路中的最大值;优差解差值表示试验中得到的最优解和最差解的差值。如表1中第1行平均值684.28是指A=0、其他参数取默认值时运行ant2cycle模型10次,将10次中每次所得的最小值取平均,最优解660.22表示这10次运行中每次所得最短线路中的最小者,最差解714.91表示这10次运行中每次所得最短线路中的最长者,优差解差值54.69是最优值660.22和最差值714.91之差。表中其他数据依此类推。ant2density、ant2quantity模型的试验结果分别如表2、表3所示。分析表1~表3的试验结果,可得到以下结论。

表1 Ant2cycle模型试验结果Tab.1 ResultsfromAnt2CycleModel平均值最优解最差解优差解差值

A0684.28660.22714.9154.690.5538.60502.82561.7358.911431.05425.26436.4011.142449.76434.89469.2234.33

B0872.32813.04895.2282.020.5472.23446.39482.3335.941431.05425.26436.4011.142425.44423.90427.173.275425.07423.90426.532.6310427.26425.98432.396.4120435.91431.20442.9211.73

Q0.3430.92426.53434.267.730.5428.53424.69431.316.620.7430.65424.94435.5710.630.9431.05428.63436.017.38

表2 Ant2Density模型试验结果Tab.2 ResultsfromAnt2DensityModel平均值最优解最差解优差解差值

A0688.54660.22714.9154.690.5479.44451.78503.9552.171463.08443.45479.7836.332511.43489.56530.7041.145667.06660.22714.9154.69

B0929.06887.56957.3769.811463.07443.45479.7836.332429.23423.90437.2513.355428.65423.90433.029.1210427.54424.69430.545.8520431.70426.60438.9612.36

Q0.3633.53612.92663.7850.860.5604.07519.83566.3246.490.7463.08443.45479.7836.330.9433.27426.60440.6714.070.999434.04429.91440.9311.02

表3 Ant2Quantity模型试验结果Tab.3 ResultsfromAnt2QuantityModel平均值最优解最差解优差解差值

相关文档
最新文档