基本蚁群优化算法及其改进

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

Table2.1 模型ant-density,ant-quantity,ant-cycle的比较
从表2.1可以看出,ant-cycle模型的性能要优于ant-density和antquantity模型。原因是在ant-cycle模型中用到了全局信息,即蚂蚁释放 在路径上的信息素量与其所得解的质量成正比。周游长度越短的蚂蚁,释放 在其经过的路径上的信息素量就越多,而ant-density、ant-quantity模 型在搜索解时,只使用了局部信息,没有用到任何解的信息。 在ant-cycle算法中,ρ=0.5可以解释为:在计算的初期,使用启发式 贪婪搜索策略;后期,主要使用路径上的信息素τij来进行搜索,同时,antcycle能够忘记部分过去的经历,以便更好的利用新的全局信息来搜索较好 的解。 下面主要就ant-cycle模型来研究AS的特性。
M.Dorigo提出了3种AS算法的模型,算法2.1称为ant-cycle;另外两个 模型分别称为ant-quantity和ant-density,其差别主要在(2.4)式,即: 在ant-quantity模型中为: 公式2.5
在ant-density模型中为: 公式2.6 AS算法实际上是正反馈原理和启发式算法相结合的一种算法。在选择路径时,蚂 蚁不仅利用了路径上的信息素,而且用到了城市间距离的倒数作为启发式因子。实 验结果表明,ant-cycle模型比ant-quantity和ant-density模型有更好的性能。 这是因为ant-cycle模型利用全局信息更新路径上的信息素量,而ant-quantity 和ant-density模型使用局部信息。AS算法的时间复杂度为Ο(NC*n3),其中NC 表示迭代的次数,n为城市数。
基本蚁群优化算法及其改进
一、引言
• 蚁群在觅食过程中总能找到蚁巢和食物源之间的最短路径。 受其启发,意大利学者M.Dorigo,V.Maniezzo,和 A.Colorni于1991提出了一种新型的模拟进化算法——蚂蚁系 统(Ant System,简称AS)。AS算法是第一个ACO算法,被 称为基本ACO算法,该算法的出现,开创了ACO研究的先河。 AS算法首先用来求解TSP问题,并获得了极大的成功。实验结 果显示AS算法具有极强的发现较好解的能力,但同时也存在一 些缺陷如收敛速度慢、易出现停滞现象等。针对AS算法的不足, 许多学者对其进行了深入的研究,提出了一些改进的ACO算法 如最优保留蚂蚁系统(Ant System with Elitist,简称 ASelite) 、蚁群系统(Ant Colony System,简称ACS)、 最大-最小蚂蚁系统(MAX-MIN Ant System,简称MMAS)、 基于排序的蚂蚁系统(Rank-based Version of Ant System,简称ASrank)等等。下面首先介绍了AS算法的模型、 实现及相关属性,然后讨论了几种改进的ACO算法,最后详细 介绍了我自已提出的两种改进的ACO算法及其实验结果。
图2.4 4×4方格问题的一个可选解
图2.5为实验所得的结果,其中横轴表示蚂蚁数,纵轴表示发现最优 解所用的迭代次数。从图中可以看出当M≈N时,ant-cycle可以在最少 的迭代次数内找到最优解。在对随机分布的16城市的实验中也能得到同 样的结果。
图2.5 在求解4×4网格问题时,每只蚂蚁找到最优解的周 游数与蚂蚁总数之间的关系,5次运行的平均结果。
for每条边e(i,j) for k:=1 to m do 公式2.4
end for end for 5.for每条边e(i,j),按(2.2)式计算τij (t+n); 置t:=t+n; 置NC:=NC+1; for每条边e(i,j),置△τij:=0 6.if(NC<NCMAX)and(没有出现停滞情况)then 清空所有禁忌表; goto step 2 else 打印最优路径; 算法停止。 end if
图2.1ant-cycle求解CCA0问题时信息素分布的进化过程 (a)初始时刻信息素迹的分布; (b)算法迭代100次后信息素迹的分布
2、参数α、β对AS算法性能的影响
定义2.1在蚂蚁搜索解的过程中,所有蚂蚁都选择同样的路径,即系统不再 搜索较好的解,称为停滞现象(Stagnation behavior)。 当参数设置为某些值时,算法迭代到一定代数后将出现停滞现象。其原因是 因为较好路径上的信息素远大于其它边上的,从而使所有蚂蚁都选择相同的路径。 定义3.2设τmin(r,s) 、 τmax(r,s) 分别为与节点r相连的边上最大、最小信息 素值,令δ (r) =τmax (r,s )-τmin (r,s) ,对某个给定的λ(0<λ<1),则在所有与 节点r相连的边中,信息素量大于等于λδ(r) +τmin (r,s) 的边的数量称为节点r的 节点分支数(node branching)。其中λ可根据实际需要确定。 定义3.3设θ(r)为节点r(r=1,2,…,n) 的节点分支数,n为节点数,则平均节 点分支数(Average Node Branching,简称ANB)为 。
以上的实验结果可以解释如下:当α取较大的值时,意味着在 选择路径时,路径上的信息素非常重要;当α取较小的值时,则 ant-cycle变成随机的贪婪算法。
3、蚂蚁数m对AS算法的影响
为了测Байду номын сангаас蚂蚁数m对ant-cycle模型性能的影响,用该模型来求解图2.4 所示的4×4方格问题。众所周知,当方格的边长为10时,其最优解为160。 在该实验中,分别取蚂蚁数为m∈{4,8,16,32,64}。
5、蚂蚁的初始分布
为了测试蚂蚁的初始分布对AS算法性能的影响,M.Dorigo分别对随机 分布的16城市的TSP问题,4×4网格问题和Oliver30问题进行了测试。分 两种情况,(i)所有蚂蚁初始时刻放在同一个城市;(ii)蚂蚁分布在不同的 城市中。结果发现第(ii)种情况可获得较高的性能。同时也测试了随机分布 与统一分布的性能差异,结果发现其差别不大。
4、协同作用对AS算法的影响
如图2.6所示,图2.6(a)为蚂蚁间没有通讯(α=0)时的情形,此时AS 算法变成贪婪搜索算法;图2.6(b)为有协同作用(α=1)时的情形。从图中可 以看出,有协同作用时提高了AS算法的性能。
图2.6 有协同工作(α=1)与无协同工作(α=0)相比,提高了算法的性能。
二、基本蚁群优化算法-蚂蚁系统
2.1旅行商问题
2.2 蚂蚁系统
2.2.1算法描述
蚂蚁根据某一概率函数选择下一座城市,其中概率函数是城市间距 离及连接边上信息素量的函数(设τij (t)为t时刻连接边e(i,j)上的信息素 量);每只人工蚂蚁只能走合法路线,除非一次周游(蚂蚁走完所有的 城市称为一次周游)结束,不允许转到已访问的城市。该过程由蚂蚁的 禁忌表来制。设tabuk为蚂蚁k的禁忌表,则蚂蚁k在经过城市i以后,就 将该城市加入到自己的禁忌表tabuk中,表示下一次不能再选择城市i。 用tabuk(s)示禁忌表中第s个元素,也即蚂蚁所走过的第s个城市;完成 一次周游后,蚂蚁在其访问过的每一条边上留下相应的信息素。
2.2.5蚂蚁系统的优点与不足
AS算法具有如下优点: 1>较强的鲁棒性:对AS算法的模型稍加修改,便可以应用于其它问 题; 2>分布式计算:AS算法是一种基于种群的进化算法,本质上具有并 行性, 3>易于并行实现; 4>易于与其它方法结合:AS算法很容易与多种启发式算法结合,以 改善算法的性能。 众多研究已经证明AS算法具有很强的发现较好解的能力,这是因为 该算法不仅利用了正反馈原理,在一定程度上可以加快进化过程,而且是 一种本质上并行的算法。不同个体之间不断进行信息交流和传递,从而能 够相互协作,有利于发现较好解。AS算法可以解释为一种特殊的强化学 习算法,公式(2.1)反映了AS算法与Q学习算法之间的联系,相当于Q学 习中的Q值,表示学习所得到的经验。 虽然AS算法有许多优点,但同时也存在一些缺陷,如: 1>与其它方法相比,该算法一般需要较长的搜索时间,AS算法的复 杂度可以反映这一点; 2>该方法容易出现停滞现象(stagnation behaviour),即搜索 进行到一定程度后,所有个体所发现的解完全一致,不能对解空间进一步 进行搜索,不利于发现更好的解。
2.2.4蚂蚁系统的参数设置和基本属性
目前,对AS算法的参数设置和属性的研究大多还处于实验阶段。 M.Dorigo等人通过大量的实验对蚂蚁系统的参数和基本属性进行了探讨。 讨论的参数包括: α——信息素的相对重要程度; β——启发式因子的相对重要程度; ρ——信息素蒸发系数((1-ρ)表示信息素的持久性系数); Q——蚂蚁释放的信息素量。 在实验中,为了观察某个参数对算法性能的影响,在测试该参数时,其 它参数取缺省值。各参数的缺省值为α=1,β=1,ρ=0.5,Q=100。为比较三种 模型的性能,M.Dorigo首先通过实验方法确定每种模型的最优参数集,然 后各模型在取最优参数集的情况下,分别求解Oliver30问题十次,其结 果如表2.1所示.
公式2.2
其中ρ(0<ρ<1)表示路径上信息素的蒸发系数,1-ρ表示信息素的持久性系数; △τij表示本次迭代边ij上信息素的增量。 △τijk表示第k只蚂蚁在本次迭代 中留在边ij上的信息素量。如果蚂蚁k没有经过边ij,则△τijk的值为零。 △τijk表示为:
公式2.3
其中,Q为正常数,Lk表示第k只蚂蚁在本次周游中所走过路径的长度。
2.2.2算法流程(伪码)
1.初始化 置t:=0;{t为计时器} 置NC:=0;{NC为迭代计数器} 对每条边e(i,j)设置τij (t)=C, △τij (t)=0; 将m只蚂蚁放到n座城市上。 2.置s:=1;{s为禁忌表的索引} for k:=1 to m do 将蚂蚁k的起点城市加入其禁忌表tabuk end for 3.repeat until禁忌表tabu k已满 设置s:=s+1; for k:=1 to m do 按(2.1)式计算转移概率pijk(t),根据赌轮方式选择下一个要到的城市j {在时刻t,蚂蚁k在城市i= tabuk(s-1)} 蚂蚁k移到城市j 将城市j加入tabuk(s) end for end repeat 4.for k:=1 to m do 蚂蚁k从tabuk (n)移到tabuk (1); 计算蚂蚁k走过的周游长度Lk; 更新当前的最优路径。 end for
图2.2是ant-cycle求解Oliver30问题时ANB的进化情况。在某些参数 设置下,当算法迭代2500次后,ANB到达2。就对称TSP问题而言,这意味 着所有的蚂蚁都选择同样的路径,即算法出现停滞现象。
图2.2在α=5,β=2时平均节点分支数进化到2,出现停滞现象
图2.3 ant-cycle模型中不同的参数(α、β)组合对算法的影响 ●-算法能发现已知的最好解,且不出现停滞现象; ∞-算法不能发现最好解,且不出现停滞现象; Φ-算法不能发现最好解,且出现停滞现象。
公式2.1
其中, Jk(i) = {1, 2,…,n}-tabuk表示蚂蚁k下一步允许选择的城市集 合。列表tabu记录了蚂蚁k当前走过的城市。当所有n座城市都加入到 tabuk中时,蚂蚁k便完成了一次周游,此时蚂蚁k所走过的路径便是TSP 问题的一个可行解。(2.1)式中的ηij是一个启发式因子,表示蚂蚁从城市i转 移到城市j的期望程度。在AS算法中,ηij通常取城市i与城市j之间距离的倒 数。α和β分别表示信息素和启发式因子的相对重要程度。当所有蚂蚁完成 一次周游后,各路径上的信息素根据(2.2)式更新。
1、信息素的分布
图2.1是ant-cycle模型求解10城市TSP问题(CCA0)时各边上信息 素分布的进化过程。图中边的长度与城市间的距离成正比,边的粗细与其上 信息素量成正比。图2.1(a)显示初始时刻各边上信息素量相等,图3.1(b) 为算法迭代100次后,较好解路径上的信息素量明显高于其它边上的。由于 信息素蒸发的影响,较差解路径上的信息素量将越来越少。可见,在算法迭 代一定次数后,蚂蚁将搜索空间缩小为可能存在最优解的一个子空间,这样 可以极大地提高蚂蚁搜索最优解的效率,但同时也容易引起停滞现象,使算 法陷入局部最优。
AS算法可以表述如下:在算法的初始时刻,将m只蚂蚁随机地放 到n座城市,同时,将每只蚂蚁的禁忌表的第一个元素设置为它当前 所在的城市。此时各路径上的信息素量相等,设τij (0)= C (C为一 较小的常数)。接下来,每只蚂蚁根据路径上残留的信息素量和启发 式信息(两城市间的距离)独立地选择下一座城市。在时刻t,蚂蚁k 从城市i转移到城市j的概率pijk(t)为:
相关文档
最新文档