蚁群算法
目录
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 蚁群行为分析
E
A
B
C
D
F d=3
d=2 m=20 t=0
A
B C D
d=3
d=2 m=10 m=10
t=1
1.3 蚁群算法解决优化问题的基本思想
用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。
路径较短的蚂蚁释放的信息量较多,随着时间的推进,较短路径上积累的信息浓度逐渐增高,选择该路径的蚂蚁个数愈来愈多。
最后,整个蚂蚁会在正反馈的作用下集中到最佳路径上,此时对应的便的待优化问题的最优解。
1.4 蚁群算法的特点
(1)采用正反馈机制,使得搜索过程不断收敛,最终逼近最优解;
(2)每个个体可能通过释放信息素来改变周围的环境,且每个个体能够感知周围环境的
E A B
C D
F
d=3
d=2 m=10
t=7
m=10
E
A
B C
D
F d=3
d=2 m=10
t=9
m=10
E
A
B
C
D
F
d=3
d=2 m=20
T>8
m=20
蚂蚁释放的信息素与路径长度成反比
路径上信息素浓度越大,路径被选概率越大
实时变化,个体间通过环境进行间接通讯;
(3)搜索过程采用分布式计算方式,多个个体同时进行并行计算,大大提高了算法的计算能力和运行效率;
(4)启发式的概率搜索方式不容易陷入局部最优,易于寻找到最优解。
2 蚁群算法解决TSP 问题
2.1 关于TSP
G =(N , E ),N ={1,2,3,…,n },E ={(i ,j ) | i ,j ∈N }
城市之间的距离n n ij d ⨯)(
目标函数∑=-=n
l i i l l d w f 1
1)(,其中),,,(21n i i i w =为城市1,2,3,..n 的一个排列,11i i n =+。
2.2 蚁群算法解决TSP 问题基本原理
1.初始假设 蚂蚁群体中蚂蚁数量为m ; 城市个数为n ;
城市i 与城市j 之间的距离为)n j i d ij ,...3,2,1,( =;
t 时刻城市i 与城市j 连接路径上的信息浓度为)(t ij τ。
初始时刻,各城市间连接路径上的
信息浓度相同,可设为0)0(ττ=ij 。
2. 转移概率计算
t 时刻蚂蚁k 从城市i 转移到城市j 的概率为)(t P k ij ,其计算公式为
⎪⎪⎩⎪⎪⎨
⎧∉∈••=∑∈k k allow s is is ij ij K
ij allow s allow s t t t P k 0 ][)]([][)]([)(,
,βαβ
αητητ 其中:
)(t ij η为启发函数,ij ij d t /1)(=η,表示蚂蚁从城市i 转移到城市j 的期望程度;
)(m k allow k ,...,3,2,1 =为蚂蚁k 待访问城市的集合,开始时,k allow 中有(n-1)个元素,即
包括除了蚂蚁k 出发城市的其他所有城市,随意时间的推进,k allow 中元素不断减少,直到为空,即表示所有的城市均访问完毕; α为信息素重要程度因子,其值越大,表示信息素的浓度在转移中起的作用越大;
β为启发函数重要程度因子,其值越大,表示启发函数在转移中的作用越大,即蚂蚁会
以较大的概率转移到距离短的城市。
3. 信息素更新
信息素更新包括信息素的挥发和信息素增强(释放信息素)。
蚂蚁释放信息素的三种模型: (1) ant cycle system 模型
, 0i /⎩⎨⎧=∆其他访问城市只蚂蚁从城市第,
j k L Q k k ij
其中,Q 为常数,表示蚂蚁循环一次所释放的信息素总量;k L 为第k 只蚂蚁经过路径的
长度。
(2) ant quanlity system 模型
, 0i /⎩⎨⎧=∆其他访问城市只蚂蚁从城市第,j k d Q ij k ij
(3) ant density system 模型
, 0i ⎩
⎨⎧=∆其他访问城市只蚂蚁从城市第,
j k Q k
ij
一般用ant cycle system 模型计算释放的信息浓度,即蚂蚁经过的路径越短,释放的信息素浓度越高。
信息素挥发(evaporation )过程是信息素痕迹的浓度自动逐渐减弱的过程。
挥发过程主要用于避免算法过快地向局部最优区域集中,有助于搜索区域的扩展。
设)10(ρρ<表示信息素的挥发程度。
当所有蚂蚁完成一次循环后,各个城市间连接路径上的信息浓度可需进行如下实进更新:
10 )()1()1(1<<⎪⎩
⎪⎨⎧∆=∆∆+-=+∑=ρττττρτ,n k k ij
ij ij ij ij t t 其中: k
ij
τ∆表示第k 只蚂蚁在城市i 与城市j 连接路径上释放的信息浓度;
ij τ∆表示所的蚂蚁在城市i 与城市j 连接路径上释放的信息浓度之和。
2.3 蚁群算法解决TSP 问题基本步骤
1. 初始化参数
在计算之初,需要对相关的参数进行初始化,如蚁群模型(蚂蚁数量)m 、信息素重要适
度因子α、启发函数重要程度因子β、信息系挥发因子ρ、信息素释放总量Q 、最大迭代次数iter_max 、迭代初值iter=1。
2. 构建解空间
将各个蚂蚁随机地置于不同出发点,对每个蚂蚁k (k=1,2,3,…m ),计算转换概率,确定
蚁群算法解决TSP 问题的基本步骤
其下一个待访问的城市,直到所有蚂蚁访问完所有的城市。
3. 更新信息素
计算各蚂蚁经过的路径长度k L (k =1,2,3,…,m )
,记录当前迭代次数中的最优解(最短路径)。
同时,对各城市连接路径上的信息素浓度进行更新。
4. 判断是否终止
若iter<iter_maxt ,则令iter=iter+1,清空蚂蚁经过路径的记录表,并返回步骤2;否则终止计算,输出最大优解。
3 案例
3.1 问题描述
找一条遍历我国直辖市、省会和自治区首府的最佳路径。
3.2 解题思路及步骤
1. 计算城市羊相互距离
根据城市位置坐标,计算两两城市间的相互距离,得到对称的距离矩阵。
由于启了函数
ij ij d t /1)(=η,为保证分母不为零,将对角线上的元素修正为一个非常小的正数(如10-4)。
2. 初始化参数
3. 迭代寻找最佳路径
首先构造解空间,各蚂蚁根据转移概率公式访问所有城市。
然后计算各个蚂蚁经过路径的长度,并在每次后进行各城市连接路径上信息浓度更新,经过循环迭代,记录下最优路径及其长度。
4. 结果分析
找到最优路径后,与其他方得出的结果进行比较,从而对蚁群算法的性能进行评价。
同时,也可以探究不同取值的参数对优化结果的影响,从而找到一组最佳或较佳的参数组合。
蚁群算法求解TSP 问题的一般步骤
3.3 MATLB程序实现3.1.1 清空环境
3.2.2 导入数据
3.3.3 计算城市间相互距离3.3.4 初始化参数
3.3.5 迭代寻找最佳路径3.3.6 结果显示
3.3.7 绘图。