免疫+蚁群求解旅行商问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于免疫的蚁群算法求解旅行商问题
温晋杰
(石家庄铁道大学,河北省石家庄市,050043)
摘要:人工免疫算法具有快速随机的全局搜索能力,但对于系统中的反馈信息利用不足,往往做大量无为的冗余迭代,求解效率低。蚁群算法具有分布式并行全局搜索能力,通过信息素的积累和更新收敛于最优路径上,但初期信息素匮乏,求解速度慢。本文根据人工免疫算法和蚁群算法各自的性能及优缺点,将人工免疫算法和蚁群算法相结合,提出新的结合方式形成免疫蚁群算法,采用人工免疫算法生成信息素分布,利用蚁群算法求优化解。将该算法用于求解旅行商问题进行计算机仿真,结果表明,该算法是一种收敛速度和寻优能力都比较好的优化方法。
关键词人工免疫算法蚁群算法旅行商问题
1.引言
旅行商问题(Traveling Salesman Problem,TSP)是具有重要意义的组合优化问题。是旅行商要到若干个城市旅行,各城市之间的费用是已知的,为了节省费用,旅行商决定从所在城市出发,到每个城市旅行一次后返回初始城市,问他应选择什么样的路线才能使所走的总费用最短?此问题可描述如下:设G=(V,E)是一个具有边成本cij的有向图,cij的定义如下,对于所有的i和j,cij>0,若不属于E,则cij=∞。令|V|=n,并假设n>1。G的一条周游路线是包含V中每个结点的一个有向环,周游路线的成本是此路线上所有边的成本和。TSP问题描述简单却难以求解,因而一直作为衡量各种优化算法性能的标准。近年来,人们从仿生学的机理中受到启发,提出了许多用于求解TSP 问题的新方法,如:禁忌搜索算法、遗传算法、摸拟退火算法、人工免疫算法和蚁群算法等。然而,面对TSP问题的复杂性,每种算法都表现出各自的优势和缺陷[5]。
从信息处理的观点看,免疫系统是与遗传系统、神经系统并列的人体三大信息系统之一[3]。人类从免疫系统中不断获得新的启示并创造出越来越多智能方法,人工免疫算法就是其中的一种方法。在人工免疫算法中,被求解的问题视为抗原,抗体则对应于问题的解,改进的人工免疫算法与GA 相似,人工免疫算法也是从随机生成的初始解群出发,采用复制、交叉、变异等算子进行操作,产生比父代优越的子代,这样循环执行,逐渐逼近最优解。不同的是人工免疫算法的复制算子模拟了免疫系统基于浓度的抗体繁殖策略,出色地保持了解群(对应于免疫系统中的抗体)的多样性,从而克服了GA解群多样性保持能力不足的缺点。
蚁群算法最初是通过对蚂蚁群落的观察,受蚁群行为特征启发而得出的[2]。蚁群算法特点是并发 作者简介:温晋杰,信息学院研2013班,120137906,研究方向:智能算法,联系方式:石家庄铁道大学信息学院
性、鲁棒性、正反馈性等。在蚁群算法求解问题的过程中,利用蚁群在问题空间中同时构造问题的多个解体现了算法的并发性。蚁群不会因为单个蚂蚁寻找到较差的解或者因为问题空间发生改变而使得算法丧失作用,这体现了算法的鲁棒性。在蚂蚁构造问题解的过程中,以蚁群觅食行为为例,会在经过的解路径上释放信息素,而解空间中获得信息素越多的路径,对蚂蚁的吸引力就越大,使更多的蚂蚁经过该路径并进一步在上面释放信息素,这体现了算法的正反馈性。
2.基于免疫系统的蚁群算法
2.1 算法的设计思想
基于免疫系统的蚁群算法,其基本的设计思想是将求解问题的过程划为两个阶段,在前期采用免疫算法,充分利用人工免疫算法的快速和随机性以及全局收敛性,寻找较优的可行解;在算法的后期,我们采用人工蚁群算法,利用其并发性、鲁棒性、正反馈性,这样使两种有机的结合,使两种算法的优势最大化,提高了求解旅行商问题的效率。
2.2 算法的基本步骤
在前期阶段,我们使用免疫算法。人工免疫算法将抗原和抗体分别对应于优化问题的目标函数和可行解。把抗体和抗原的亲和力视为可行解与目标函数的匹配程度:用抗体之间的亲和力保证可行解的多样性,通过计算抗体期望生存率来促进较优抗体的遗传和变异,用记忆细胞单元保存择优后的可行解来抑制相似可行解的继续产生并加速搜索到全局最优解,同时,当相似问题再次出现时,能较快产生适应该问题的较优解甚至最优解[6]。
在算法的后期,我们使用蚁群算法。TSP问题的人工蚁群算法中,假设m只蚂蚁在图的相邻节点间移动,从而协作异步地得到问题的解。每只蚂蚁的一步转移概率由图中的每条边上的两类参数决定:信息素值也称信息素痕迹以及可见度即先验值。信息素的更新方式有2种,一是挥发,也就是所有路径上的信息素以一定的比率进行减少,模拟自然蚁群的信息素随时间挥发的过程;二是增强,给评价值“好”(有蚂蚁走过)的边增加信息素。蚂蚁向下一个目标的运动是通过一个随机原则来实现的,也就是运用当前所在节点存储的信息,计算出下一步可达节点的概率,并按此概率实现一步移动,逐此往复,越来越接近最优解。蚂蚁在寻找过程中,或者找到一个解后,会评估该解或解的一部分的优化程度,并把评价信息保存在相关连接的信息素中。所以本文构造的算法步骤如下:(1)问题识别。根据输入的目标函数和约束条件作为算法的抗原。对于N个城市的TSP问题,设其城市编码分别为1—n,并且把商人出发城市编为第1号,其它城市可随意编号。把这N个城市的编号任意排列成一个长度为N的字符串都可以形成一个抗体,因此抗体空间包含n!个抗体。
(2)产生抗体群。初始抗体群通常是在解空间用随机的方法产生的,抗体群采用二进制编码来表示。
(3)计算抗体适应值。即计算抗原和抗体的亲和度。对于TSP问题,可定义抗体B与抗原G 之间的亲和力App(B)=1/(Tb-Tg)。其中Tb,Tg分别为抗体B与抗原G对应的旅行路线的总长度,Tg也是所求的最短路线的总长度。由于在计算结束之前不知道Tg的大小,可以用适当大的正整数T(T 对于TSP问题,可定义抗体B1与抗体B2之间的排斥力R=Tb1-Tb2。其中Tb1,Tb2分别为抗体B1与抗体B2对应的旅行路线的总长度。抗体与抗体之间的排斥力反映抗体与抗体之间的差距,R越大,说明抗体B1与抗体B2之间的差距越大。计算抗体群中所有抗体与当前最佳抗体之间的排斥力。 (4)产生新抗体并计算其亲和力和排斥力。构造适当的人工免疫算子,通过人工免疫算子的作用概率Pc,Ps,Pi,Po和预先确定的正整数Uc,Us,Ui产生新抗体;同时计算各个新抗体之间的亲和力App(B),和新抗体之间的排斥力R,若新抗体中有与抗原相匹配的抗体,或已满足预定的停机条件则停机,从而获得较优的可行解。否则,转步骤5. (5)抗体的选择(促进和抑制)。计算当前抗体群中适应值相近的抗体浓度,浓度高的则减小该个体的选择概率—抑制;反之,则增加该个体的选择概率—促进,以此保持群体中个体的多样性[3]。 (6)初始化参数。Tc,Tg,m,ρ,α,β,Q,根据步骤4获得的较优可行解,生成信息素初始分布,将M只蚂蚁置于n个结点。这里,Tc是一个根据具体求解规模给定的信息素常数,Tg 是人工免疫算法转换的信息素值,m是蚁群中蚂蚁的数量,ρ(0<ρ<1)是信息素轨迹的残留系数,α(α>0)为边(i,j)信息素轨迹强度Tij的相对重要性,β(β>0)为边(i,j)能见度ηij的相对重要性,ηij为边长Dij的倒数,Q为蚂蚁循环一周所释放的总信息量。在初始时刻,根据下述设置信息素的初值。如果边(i,j)在步骤4获得的较优的可行路径上,Tij(0)=Tc+Tg;否则等于Tc。 (7)计算每只蚂蚁的选择概率,根据选择概率移动每只蚂蚁到下一结点。在t时刻,蚂蚁k在城市i选择城市j的转移概率Pij(t)为: (8)经过n个时刻,m只蚂蚁遍历整个结点,完成一次循环,设△Tijk为蚂蚁k在本次循环中在边(i,j)留下的单位长度轨迹信息量,Zk为蚂蚁k在本次循环中所走的路径的长度。此时,根