蚁群算法
蚁群算法

AS算法
下面以蚁周模型为例, 总结蚂蚁系统算法的 流程。
置禁忌表索引s=1;并将其起点城市加入各自 禁忌表中
Y
禁忌表已满?
N
s=s+1 将m只蚂蚁按照其各自计算的转移概率pijk选 择下一城市,并将该城市加入到禁忌表中。 计算所有m只蚂蚁走过的周游长度Lk; 更新当前的最优路径。
计算Δτijk,更新信息素;t=t+n;NC=NC+1
9.4 蚁群算法的参数分析
讨论的参数包括: α——信息素的相对重要程度; β——启发式因子的相对重要程度; ρ——信息素蒸发系数((1-ρ)表示信息素的 持久性系数); Q——蚂蚁释放的信息素量。
1、参数α、β对AS算法性能的影响
在蚂蚁搜索解的过程中,所有蚂蚁都选择同样的路径, 即系统不再搜索较好的解,称为停滞现象。
下面是信息素更新公式:
4 概率转换规则
每只蚂蚁根据路径上的信息素和启发式信息(两 城市间距离)独立地选择下一座城市: 在时刻t,蚂蚁k从城市i转移到城市j的概率为
[ ij (t )] [ij (t )] , k pij (t ) [ is (t )] [is (t )] sJ k (i ) 0, j J k (i ) j J k (i )
9.5 蚁群系统
蚁群系统(ACS)是AS算法的改进版本,与AS算 法主要区别在于: (i)在选择下一座城市时,ACS算法更多地利用了 当前的较好解; (ii)只在全局最优解所属的边上增加信息素; (iii)每次当蚂蚁从城市i转移城市j时,边ij上的信息 素将会适当的减少。
转换规则:
在ACS算法中,蚂蚁使用伪随机比率选择规则 选择下一座城市。即对位于城市i的蚂蚁k,以概率 q0移动到城市l,其中l为使τil (t)*[ηilβ] 达到最大的 城市。该选择方式意味着蚂蚁将以概率q0将最大可 能的城市选入蚂蚁所构造的解;除此之外,蚂蚁以 (1-q 0) 的概率按下式选择下一座城市j。在ACS算 法中,蚂蚁的状态转移公式为:
蚁群算法

两阶段算法(Two Phase Algorithm)
算法举例
(3)以P0为起点,以P4为终点,求下图最短路径L
Dijkstra算法 动态规划 L为 P0→P6 → P3 → P4. 总长度为97km。
(4)根据最短路进行分组,最短路由三条分支组成,即
P0→P5 → P8 → P7 → P6 → P0. 33km,5.9t
0 0
4 10 17 0
节约法(Saving Method)
算法举例
点对之间连接的距离节约值
连接点 3-4 2-3 7-8 6-7 1-7 节约里程 19 18 17 16 13 连接点 1-2 1-6 6-8 2-4 1-3 节约里程 12 11 10 9 8 连接点 1-8 2-7 5-8 2-6 4-5 节约里程 5 5 4 3 3 连接点 5-7 3-7 5-6 节约里程 3 1 1
Cij P0 P5 P8 P0 0 P5 8 0 P8 22 18 0 P7 33 29 28 P6 33 29 28 P1 ∞ ∞ 37 P2 ∞ ∞ ∞ P3 ∞ ∞ ∞ P4 ∞ ∞ ∞
P7
P6 P1 P2 P3 P4
0
16
0
25
20 0
35
30 22 0
∞
42 34 30 0
∞
∞ ∞ ∞ 22 0
节约法(Saving Method)
算法举例
求初始解
令Ii={i},i=1,2,· · · ,8;最短路长li=2C0i;载重量ri=Ri;标记 (合并次数)B1=B2=· · · =B8=0.
按节约里程从大到小合并路径 8
P3 P29 10P15 NhomakorabeaP4
11
蚁群算法

蚁群算法目录1 蚁群算法基本思想 (1)1.1蚁群算法简介 (1)1.2蚁群行为分析 (1)1.3蚁群算法解决优化问题的基本思想 (2)1.4蚁群算法的特点 (2)2 蚁群算法解决TSP问题 (3)2.1关于TSP (3)2.2蚁群算法解决TSP问题基本原理 (3)2.3蚁群算法解决TSP问题基本步骤 (5)3 案例 (6)3.1问题描述 (6)3.2解题思路及步骤 (6)3.3MATLB程序实现 (7)3.1.1 清空环境 (7)3.2.2 导入数据 (7)3.3.3 计算城市间相互距离 (7)3.3.4 初始化参数 (7)3.3.5 迭代寻找最佳路径 (7)3.3.6 结果显示 (7)3.3.7 绘图 (7)1 蚁群算法基本思想1.1 蚁群算法简介蚁群算法(ant colony algrothrim ,ACA )是由意大利学者多里戈(Dorigo M )、马聂佐( Maniezzo V )等人于20世纪90初从生物进化的机制中受到启发,通过模拟自然界蚂蚁搜索路径的行为,提出来的一种新型的模拟进化算法。
该算法用蚁群在搜索食物源的过程中所体现出来的寻优能力来解决一些系统优化中的困难问题,其算法的基本思想是模仿蚂蚁依赖信息素,通过蚂蚁间正反馈的方法来引导每个蚂蚁的行动。
蚁群算法能够被用于解决大多数优化问题或者能够转化为优化求解的问题,现在其应用领域已扩展到多目标优化、数据分类、数据聚类、模式识别、电信QoS 管理、生物系统建模、流程规划、信号处理、机器人控制、决策支持以及仿真和系统辩识等方面。
蚁群算法是群智能理论研究领域的一种主要算法。
1.2 蚁群行为分析EABCDF d=3d=2 m=20 t=0AB C Dd=3d=2 m=10 m=10t=11.3 蚁群算法解决优化问题的基本思想用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。
路径较短的蚂蚁释放的信息量较多,随着时间的推进,较短路径上积累的信息浓度逐渐增高,选择该路径的蚂蚁个数愈来愈多。
蚁群算法

什么是群?
指的是蜂群、鸟群、蚁群、鱼群等等,具有社会群居行为 的动物。
群的特征:
1.相互作用的相邻个体的集合 2.个体的行为简单,只能完成一般工作 3.智能化的集体行为 a.个体间不仅能够交互信息,还能够处理信息,根
什么是蚁群算法 蚁群算法的特点
它是一种通用的启发式算法,可用来解 决各种不同的组合优化问题。
1.能觉察小范围区域内状况,并判断出是否有食物或其他同类的信息 激素轨迹; 2.能释放自己的信息激素; 3所遗留的信息激素数量会随时间而逐步减少。
蚂蚁系统:模拟蚁群突现聚集行为的蚁群算法, 是作为一类新的计算模式引入的。 蚂蚁系统的提出 1.蚂蚁之间通过环境进行通信。
据信息改变自身行为。 b.没有一个集中控制中心,分布式、自组织 c.作为群体协同工作时,能够实现出非常复杂的行 为特征——智能
蚂蚁的觅食过程
1.随机移动 2.遇到食物分泌信息素 3.在搬运食物回家的路上留下信息素 4.其他蚂蚁发现留有信息素的路径结束漫游,沿该路径移 动,遇到食物同样开始分泌信息素。 5.信息素会随时间挥发,短路径上的信息素相对浓度高。
信息激素全局更新策略 当所有蚂蚁走完全部城市后,只有经过那些路径边上的蚂 蚁才允许释放信息激素,按照式(8-12)进行更新。
其中ρ为信息激素蒸发系数;Lk为最优路径的长度。 这种策略的目的是为了增强那些属于最优路径上的边的信 息激素,可以大大增加这些边上的信息激素。
4.3最大-最小蚂蚁系统 为了克服在 Ant-Q 算法中可能出现的停滞现象, Thomas 等 提出了最大 -最小蚂蚁系统,该算法主要做了如下改进: ①每次迭代结束后,只有最优解所属路径上的信息被更新, 从而更好地利用了历史信息; ②为了避免算法过早收敛 于并非全局最优的解,将各条路径可能的外激素浓度限制 于 [τmin ,τmax] ,超出这个范围的值被强制设为 τmin 或 τmax ,一方面避免了某条路径上的信息激素远大于其他 路径的信息激素浓度,从而有效降低了过早停滞的可能。 另一方面,不会因为某路径的信息激素浓度过低而丧失发 现新路径的可能。各路径上外激素的起始浓度设为τmax , 在算法的初始时刻, ρ取较小的值时,算法有更好的发现 较好解的能力。所有蚂蚁完成一次迭代后,按式(8-13)
第 6 章 蚁群算法

则,输出目前的最优解。
Hale Waihona Puke 3 目标值控制规则,给定优化问题(目标最小化)的一个下界和一个 误差值,当算法得到的目标值同下界之差小于给定的误差值时,算法 终止。
TSP应用举例
TSP应用举例
Introduction of Artificial Intelligence
Introduction of Artificial Intelligence
7
(2)鸟群行为
人们观察鸟群的群体行为发现: 当一群鸟在随机搜寻食物时,发现某个区域内有一块食物, 鸟会先后飞向食物,以及在食物最近的鸟的周围区域继续 搜寻食物。 数目庞大的鸟群在飞行中可以有形的改变方向,散开,或 者队形的重组。 科学家认为,上述行为是基于鸟类的社会行为中的两个要 素:个体经验和社会学习。 由此,创造了粒子群优化算法 (Particle Swarm optimization ,PSO)
蚁群算法的提出
人工蚁群算法
基于以上蚁群寻找食物时的最优路径选择问题,可以构造人 工蚁群,来解决最优化问题,如TSP问题。 人工蚁群中把具有简单功能的工作单元看作蚂蚁。二者的相 似之处在于都是优先选择信息素浓度大的路径。较短路径的信 息素浓度高,所以能够最终被所有蚂蚁选择,也就是最终的优 化结果。 两者的区别在于人工蚁群有一定的记忆能力,能够记忆已经 访问过的节点。同时,人工蚁群在选择下一条路径的时候是按 一定算法规律有意识地寻找最短路径,而不是盲目的。例如在 TSP问题中,可以预先知道当前城市到下一个目的地的距离。 人工蚁群 VS 自然蚁群
prey food
an obstacle is laid in the path
choosing path
the shortest path
蚁群算法

基本蚁群算法程序流程图
开始 初始化
循环次数Nc← Nc+1
蚂蚁k=1 蚂蚁k=k+1
按式(1)选择下一元素 修改禁忌表 N Y K≥ m
按式(2)和式(3)进行信息量更新 满足结束条件 Y
Байду номын сангаас输出程序计算结果 结束 N
复杂度分析
对于TSP,所有可行的路径共有(n-1)!/2条,以 此路径比较为基本操作,则需要(n-1)!/2-1次基 本操作才能保证得到绝对最优解。 若1M FLOPS,当n=10, 需要0.19秒 n=20, 需要1929年 n=30, 需要1.4X10e17年
{ ij (t ) | ci , c j C}是t时刻集合C中元素
蚂蚁k(k=1,2,…,m)在运动过程中,根据各条路径上的信息 量决定其转移方向。这里用禁忌表tabuk来记录蚂蚁k当前 所走过的城市,集合随着tabuk进化过程做动态调整。在 搜索过程中,蚂蚁根据各条路径上的信息量及路径的启发 信息来计算状态转移概率。在t时刻蚂蚁k由元素(城市)i 转移到元素(城市)j的状态转移概率:
1) 标有距离的路径图 2) 在0时刻,路径上没有信息素累积,蚂蚁选择路径为任意 3) 在1时刻,路径上信息素堆积,短边信息素多与长边,所以蚂蚁更 倾向于选择ABCDE
特
点
(1)其原理是一种正反馈机制或称增强型学习系统;它通过 信息素的不断更新达到最终收敛于最优路径上; (2)它是一种通用型随机优化方法;但人工蚂蚁决不是对实 际蚂蚁的一种简单模拟,它融进了人类的智能; (3)它是一种分布式的优化方法;不仅适合目前的串行计算 机,而且适合未来的并行计算机; (4)它是一种全局优化的方法;不仅可用于求解单目标优化 问题,而且可用于求解多目标优化问题; 2 (5)它是一种启发式算法;计算复杂性为 O( NC m n ),其 中NC 是迭代次数,m 是蚂蚁数目,n 是目的节点数目。
蚁群算法

4.蚁群算法应用
信息素更新规则
1.蚁群算法简述 2.蚁群算法原理
最大最小蚂蚁系统
3.蚁群算法改进
4.蚁群算法应用
最大最小蚂蚁系统(MAX-MIN Ant System,MMAS)在基本AS算法的基础 上进行了四项改进: (1)只允许迭代最优蚂蚁(在本次迭代构建出最短路径的蚂蚁),或者至今 最优蚂蚁释放信息素。(迭代最优更新规则和至今最优更新规则在MMAS 中会被交替使用)
p( B) 0.033/(0.033 0.3 0.075) 0.081 p(C ) 0.3 /(0.033 0.3 0.075) 0.74 p( D) 0.075 /(0.033 0.3 0.075) 0.18
用轮盘赌法则选择下城市。假设产生的 随机数q=random(0,1)=0.05,则蚂蚁1将会 选择城市B。 用同样的方法为蚂蚁2和3选择下一访问 城市,假设蚂蚁2选择城市D,蚂蚁3选择城 市A。
蚁群算法
1.蚁群算法简述 2.蚁群算法原理 3.蚁群算法改进 4.蚁群算法应用
1.蚁群算法简述 2.蚁群算法原理
3.蚁群算法改进
4.蚁群算法应用
蚁群算法(ant colony optimization, ACO),又称蚂蚁 算法,是一种用来在图中寻找优 化路径的机率型算法。 由Marco Dorigo于1992年在他 的博士论文中提出,其灵感来源 于蚂蚁在寻找食物过程中发现路 径的行为
4.蚁群算法应用
例给出用蚁群算法求解一个四城市的TSP 3 1 2 3 5 4 W dij 1 5 2 2 4 2
假设蚂蚁种群的规模m=3,参数a=1,b=2,r=0.5。 解:
满足结束条件?
蚁群算法详细讲解

21
1.2 蚁群优化算法概念
1.2.1 蚁群算法原理 1.2.2 简化的蚂蚁寻食过程 1.2.3 自然蚁群与人工蚁群算法 1.2.4 蚁群算法与TSP问题 1.2.5 初始的蚁群优化算法—基于图的 蚁群系统(GBAS) 1.2.6 一般蚁群算法的框架
22
1.2.1 蚁群算法原理
蚁群算法是对自然界蚂蚁的寻径方式进行模似而得出的一种仿 生算法。蚂蚁在运动过程中,能够在它所经过的路径上留下一种称 之为外激素(pheromone)的物质进行信息传递,而且蚂蚁在运动过 程中能够感知这种物质,并以此指导自己的运动方向,因此由大量 蚂蚁组成的蚁群集体行为便表现出一种信息正反馈现象:某一路径 上走过的蚂蚁越多,则后来者选择该路径的概率就越大。 为了说明蚁群算法的原理,先简要介绍一下蚂蚁搜寻食物的具 体过程。在蚁群寻找食物时,它们总能找到一条从食物到巢穴之间 的最优路径。这是因为蚂蚁在寻找路径时会在路径上释放出一种特 殊的信息素。当它们碰到一个还没有走过的路口时.就随机地挑选 一条路径前行。与此同时释放出与路径长度有关的信息素。路径越 长,释放的激索浓度越低.当后来的蚂蚁再次碰到这个路口的时 候.选择激素浓度较高路径概率就会相对较大。这样形成一个正反 馈。最优路径上的激索浓度越来越大.而其它的路径上激素浓度却 会随着时间的流逝而消减。最终整个蚁群会找出最优路径。
23
1.2.2 简化的蚂蚁寻食过程 1/3
蚂蚁从A点出发,速度相同,食物在D点,可能随机选择路线ABD 或ACD。假设初始时每条分配路线一只蚂蚁,每个时间单位行走 一步,本图为经过9个时间单位时的情形:走ABD的蚂蚁到达终点, 而走ACD的蚂蚁刚好走到C点,为一半路程。
17
1.1.5 蚁群优化算法应用现状 2/5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蚁群算法报告及代码一、狼群算法狼群算法是基于狼群群体智能,模拟狼群捕食行为及其猎物分配方式,抽象出游走、召唤、围攻3种智能行为以及“胜者为王”的头狼产生规则和“强者生存”的狼群更新机制,提出一种新的群体智能算法。
算法采用基于人工狼主体的自下而上的设计方法和基于职责分工的协作式搜索路径结构。
如图1所示,通过狼群个体对猎物气味、环境信息的探知、人工狼相互间信息的共享和交互以及人工狼基于自身职责的个体行为决策最终实现了狼群捕猎的全过程。
二、布谷鸟算法布谷鸟算法布谷鸟搜索算法,也叫杜鹃搜索,是一种新兴启发算法CS算法,通过模拟某些种属布谷鸟的寄生育雏来有效地求解最优化问题的算法.同时,CS也采用相关的Levy飞行搜索机制蚁群算法介绍及其源代码。
具有的优点:全局搜索能力强、选用参数少、搜索路径优、多目标问题求解能力强,以及很好的通用性、鲁棒性。
应用领域:项目调度、工程优化问题、求解置换流水车间调度和计算智能三、差分算法差分算法主要用于求解连续变量的全局优化问题,其主要工作步骤与其他进化算法基本一致,主要包括变异、交叉、选择三种操作。
算法的基本思想是从某一随机产生的初始群体开始,利用从种群中随机选取的两个个体的差向量作为第三个个体的随机变化源,将差向量加权后按照一定的规则与第三个个体求和而产生变异个体,该操作称为变异。
然后,变异个体与某个预先决定的目标个体进行参数混合,生成试验个体,这一过程称之为交叉。
如果试验个体的适应度值优于目标个体的适应度值,则在下一代中试验个体取代目标个体,否则目标个体仍保存下来,该操作称为选择。
在每一代的进化过程中,每一个体矢量作为目标个体一次,算法通过不断地迭代计算,保留优良个体,淘汰劣质个体,引导搜索过程向全局最优解逼近。
四、免疫算法免疫算法是一种具有生成+检测的迭代过程的搜索算法。
从理论上分析,迭代过程中,在保留上一代最佳个体的前提下,遗传算法是全局收敛的。
五、人工蜂群算法人工蜂群算法是模仿蜜蜂行为提出的一种优化方法,是集群智能思想的一个具体应用,它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工蜂个体的局部寻优行为,最终在群体中使全局最优值突现出来,有着较快的收敛速度。
为了解决多变量函数优化问题,科学家提出了人工蜂群算法ABC模型。
六、万有引力算法万有引力算法是一种基于万有引力定律和牛顿第二定律的种群优化算法。
该算法通过种群的粒子位置移动来寻找最优解,即随着算法的循环,粒子靠它们之间的万有引力在搜索空间内不断运动,当粒子移动到最优位置时,最优解便找到了。
GSA即引力搜索算法,是一种优化算法的基础上的重力和质量相互作用的算法。
GSA 的机制是基于宇宙万有引力定律中两个质量的相互作用。
七、萤火虫算法萤火虫算法源于模拟自然界萤火虫在晚上的群聚活动的自然现象而提出的,在萤火虫的群聚活动中,每只萤火虫通过散发荧光素与同伴进行寻觅食物以及求偶等信息交流。
一般来说,荧光素越亮的萤火虫其号召力也就越强,最终会出现很多萤火虫聚集在一些荧光素较亮的萤火虫周围。
人工萤火虫算法就是根据这种现象而提出的一种新型的仿生群智能优化算法。
在人工萤火虫群优化算法中,每只萤火虫被视为解空间的一个解,萤火虫种群作为初始解随机的分布在搜索空间中,然后根据自然界萤火虫的移动方式进行解空间中每只萤火虫的移动。
通过每一代的移动,最终使的萤火虫聚集到较好的萤火虫周围,也即是找到多个极值点,从而达到种群寻优的目的。
其主要目的是作为一个信号系统,以吸引其他的萤火虫。
其假设为:1、萤火虫不分性别,它将会被吸引到所有其他比它更亮的萤火虫那去;2、萤火虫的吸引力和亮度成正比,对于任何两只萤火虫,其中一只会向着比它更亮的另一只移动,然而,亮度是随着距离的增加而减少的;3、如果没有找到一个比给定的萤火虫更亮,它会随机移动。
八、智能水滴算法智能水滴算法是模拟自然界中河水与周围环境相互作用的过程而提出的一种智能计算方法。
应用:旅行商问题、车辆路线问题以及机器人路径规划问题九、人工鱼群算法在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食。
特点:1)具有较快的收敛速度,可以用于解决有实时性要求的问题。
2)对于一些精度要求不高的场合,可以用它快速的得到一个可行解。
3)不需要问题的严格机理模型,不需要问题的精确描述,这使得它的应用范围得以延伸。
应用领域:1)电力系统规划2)多级梯阶物流中转运输系统优化十、蚁群算法蚁群算法,又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。
蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质。
针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行了比较,数值仿真结果表明,蚁群算法具有一种新的模拟进化优化方法的有效性和应用价值。
(一)定义各个蚂蚁在没有事先告诉他们食物在什么地方的前提下开始寻找食物。
当一只找到食物以后,它会向环境释放一种挥发性分泌物信息素(该物质随着时间的推移会逐渐挥发消失,信息素浓度的大小表征路径的远近)来实现的,吸引其他的蚂蚁过来,这样越来越多的蚂蚁会找到食物。
有些蚂蚁并没有像其它蚂蚁一样总重复同样的路,他们会另辟蹊径,如果另开辟的道路比原来的其他道路更短,那么,渐渐地,更多的蚂蚁被吸引到这条较短的路上来。
最后,经过一段时间运行,可能会出现一条最短的路径被大多数蚂蚁重复着。
(二)原理设想,如果我们要为蚂蚁设计一个人工智能的程序,那么这个程序要多么复杂呢?首先,你要让蚂蚁能够避开障碍物,就必须根据适当的地形给它编进指令让他们能够巧妙的避开障碍物,其次,要让蚂蚁找到食物,就需要让他们遍历空间上的所有点;再次,如果要让蚂蚁找到最短的路径,那么需要计算所有可能的路径并且比较它们的大小,而且更重要的是,你要小心翼翼地编程,因为程序的错误也许会让你前功尽弃。
然而,事实并没有你想得那么复杂,答案是:简单规则的涌现。
事实上,每只蚂蚁并不是像我们想象的需要知道整个世界的信息,他们其实只关心很小范围内的眼前信息,而且根据这些局部信息利用几条简单的规则进行决策,这样,在蚁群这个集体里,复杂性的行为就会凸现出来。
(三)详细说明1.范围蚂蚁观察到的范围是一个方格世界,蚂蚁有一个参数为速度半径(一般是3),那么它能观察到的范围就是3*3个方格世界,并且能移动的距离也在这个范围之内。
2.环境蚂蚁所在的环境是一个虚拟的世界,其中有障碍物,有别的蚂蚁,还有信息素,信息素有两种,一种是找到食物的蚂蚁洒下的食物信息素,一种是找到窝的蚂蚁洒下的窝的信息素。
每个蚂蚁都仅仅能感知它范围内的环境信息。
环境以一定的速率让信息素消失。
3.觅食规则在每只蚂蚁能感知的范围内寻找是否有食物,如果有就直接过去。
否则看是否有信息素,并且比较在能感知的范围内哪一点的信息素最多,这样,它就朝信息素多的地方走,并且每只蚂蚁都会以小概率犯错误,从而并不是往信息素最多的点移动。
蚂蚁找窝的规则和上面一样,只不过它对窝的信息素做出反应,而对食物信息素没反应。
4.移动规则每只蚂蚁都朝向信息素最多的方向移,并且,当周围没有信息素指引的时候,蚂蚁会按照自己原来运动的方向惯性的运动下去,并且,在运动的方向有一个随机的小的扰动。
为了防止蚂蚁原地转圈,它会记住刚才走过了哪些点,如果发现要走的下一点已经在之前走过了,它就会尽量避开。
5.避障规则如果蚂蚁要移动的方向有障碍物挡住,它会随机的选择另一个方向,并且有信息素指引的话,它会按照觅食的规则行为。
6.信息素规则每只蚂蚁在刚找到食物或者窝的时候撒发的信息素最多,并随着它走远的距离,播撒的信息素越来越少。
根据这几条规则,蚂蚁之间并没有直接的关系,但是每只蚂蚁都和环境发生交互,而通过信息素这个纽带,实际上把各个蚂蚁之间关联起来了。
比如,当一只蚂蚁找到了食物,它并没有直接告诉其它蚂蚁这儿有食物,而是向环境播撒信息素,当其它的蚂蚁经过它附近的时候,就会感觉到信息素的存在,进而根据信息素的指引找到了食物。
(四)蚁群算法特点1)蚁群算法是一种自组织的算法。
在系统论中,自组织和它组织是组织的两个基本分类,其区别在于组织力或组织指令是来自于系统的内部还是来自于系统的外部,来自于系统内部的是自组织,来自于系统外部的是他组织。
如果系统在获得空间的、时间的或者功能结构的过程中,没有外界的特定干预,我们便说系统是自组织的。
在抽象意义上讲,自组织就是在没有外界作用下使得系统熵减小的过程(即是系统从无序到有序的变化过程)。
蚁群算法充分体现了这个过程,以蚂蚁群体优化为例子说明。
当算法开始的初期,单个的人工蚂蚁无序的寻找解,算法经过一段时间的演化,人工蚂蚁间通过信息激素的作用,自发的越来越趋向于寻找到接近最优解的一些解,这就是一个无序到有序的过程。
2)蚁群算法是一种本质上并行的算法。
每只蚂蚁搜索的过程彼此独立,仅通过信息激素进行通信。
所以蚁群算法则可以看作是一个分布式的多agent系统,它在问题空间的多点同时开始进行独立的解搜索,不仅增加了算法的可靠性,也使得算法具有较强的全局搜索能力。
3)蚁群算法是一种正反馈的算法。
从真实蚂蚁的觅食过程中我们不难看出,蚂蚁能够最终找到最短路径,直接依赖于最短路径上信息激素的堆积,而信息激素的堆积却是一个正反馈的过程。
对蚁群算法来说,初始时刻在环境中存在完全相同的信息激素,给予系统一个微小扰动,使得各个边上的轨迹浓度不相同,蚂蚁构造的解就存在了优劣,算法采用的反馈方式是在较优的解经过的路径留下更多的信息激素,而更多的信息激素又吸引了更多的蚂蚁,这个正反馈的过程使得初始的不同得到不断的扩大,同时又引导整个系统向最优解的方向进化。
因此,正反馈是蚂蚁算法的重要特征,它使得算法演化过程得以进行。
(五)应用及代码一、用于求求两城市全局最优路径及其长度matlab代码:(已自己运行过并有截图)注:后续还要跑输入部分代码才能完整运行!!!步骤:一.运行以下代码function[R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho ,Q)%%-------------------------------------------------------------------------%% 主要符号说明%% C n个城市的坐标,n×2的矩阵%% NC_max 最大迭代次数%% m 蚂蚁个数%% Alpha 表征信息素重要程度的参数%% Beta 表征启发式因子重要程度的参数%% Rho 信息素蒸发系数%% Q 信息素增加强度系数%% R_best 各代最佳路线%% L_best 各代最佳路线的长度%%=================================================================== ======%%第一步:变量初始化n=size(C,1);%n表示问题的规模(城市个数)D=zeros(n,n);%D表示完全图的赋权邻接矩阵for i=1:nfor j=1:nif i~=jD(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;elseD(i,j)=eps; %i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示endD(j,i)=D(i,j); %对称矩阵endendEta=1./D; %Eta为启发因子,这里设为距离的倒数Tau=ones(n,n); %Tau为信息素矩阵Tabu=zeros(m,n); %存储并记录路径的生成NC=1; %迭代计数器,记录迭代次数R_best=zeros(NC_max,n); %各代最佳路线L_best=inf.*ones(NC_max,1); %各代最佳路线的长度L_ave=zeros(NC_max,1); %各代路线的平均长度while NC<=NC_max %停止条件之一:达到最大迭代次数,停止%%第二步:将m只蚂蚁放到n个城市上Randpos=[]; %随即存取for i=1:(ceil(m/n))Randpos=[Randpos,randperm(n)];endTabu(:,1)=(Randpos(1,1:m))'; %此句不太理解?%%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游for j=2:n %所在城市不计算for i=1:mvisited=Tabu(i,1:(j-1)); %记录已访问的城市,避免重复访问J=zeros(1,(n-j+1)); %待访问的城市P=J; %待访问城市的选择概率分布Jc=1;for k=1:nif length(find(visited==k))==0 %开始时置0J(Jc)=k;Jc=Jc+1; %访问的城市个数自加1endend%下面计算待选城市的概率分布for k=1:length(J)P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);endP=P/(sum(P));%按概率原则选取下一个城市Pcum=cumsum(P); %cumsum,元素累加即求和Select=find(Pcum>=rand); %若计算的概率大于原来的就选择这条路线to_visit=J(Select(1));Tabu(i,j)=to_visit;endendif NC>=2Tabu(1,:)=R_best(NC-1,:);end%%第四步:记录本次迭代最佳路线L=zeros(m,1); %开始距离为0,m*1的列向量for i=1:mR=Tabu(i,:);for j=1:(n-1)L(i)=L(i)+D(R(j),R(j+1)); %原距离加上第j个城市到第j+1个城市的距离endL(i)=L(i)+D(R(1),R(n)); %一轮下来后走过的距离endL_best(NC)=min(L); %最佳距离取最小pos=find(L==L_best(NC));R_best(NC,:)=Tabu(pos(1),:); %此轮迭代后的最佳路线L_ave(NC)=mean(L); %此轮迭代后的平均距离NC=NC+1 %迭代继续%%第五步:更新信息素Delta_Tau=zeros(n,n); %开始时信息素为n*n的0矩阵for i=1:mfor j=1:(n-1)Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i); %此次循环在路径(i,j)上的信息素增量endDelta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);%此次循环在整个路径上的信息素增量endTau=(1-Rho).*Tau+Delta_Tau; %考虑信息素挥发,更新后的信息素%%第六步:禁忌表清零Tabu=zeros(m,n); %%直到最大迭代次数end%%第七步:输出结果Pos=find(L_best==min(L_best)); %找到最佳路径(非0为真)Shortest_Route=R_best(Pos(1),:) %最大迭代次数后最佳路径Shortest_Length=L_best(Pos(1)) %最大迭代次数后最短距离subplot(1,2,1) %绘制第一个子图形DrawRoute(C,Shortest_Route) %画路线图的子函数subplot(1,2,2) %绘制第二个子图形plot(L_best)hold on %保持图形plot(L_ave,'r')title('平均距离和最短距离') %标题function DrawRoute(C,R)%%=================================================================== ======%% DrawRoute.m%% 画路线图的子函数%%-------------------------------------------------------------------------%% C Coordinate 节点坐标,由一个N×2的矩阵存储%% R Route 路线%%=================================================================== ======N=length(R);scatter(C(:,1),C(:,2));hold onplot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)],'g')hold onfor ii=2:Nplot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)],'g')hold onendtitle('旅行商问题优化结果')二.运行后结果和继续输入内容接着在》后输入以下代码:clear all;close all;clc;c=[1,2;70,90;80,60;10,100;800,200;800,100;90,80;200,600;230,4;500,90]; nc=100;m=18;a=1;b=5;p=0.5;q=1;ACATSP(c,nc,m,a,b,p,q);如下图所示再运行RUN,结果如下:。