蚁群算法应用

蚁群算法应用
蚁群算法应用

大连理工大学

研究生必修课

作业

课程名称:现代物流管理

研究生姓名:徐静学号:21511149

作业成绩:

任课教师(签名)

交作业日时间:2016 年6 月1日

蚁群算法在TSP问题上的应用

摘要蚁群算法是受现实蚂蚁群体行为启发而得出的一类仿生算法。本文以解决TSP问题为基础,系统地介绍了蚁群算法从诞生到成熟过程中几个代表性的算法。在阐述算法基本思想的前提下,着重论述算法的创新之处。

关键词蚁群算法,TSP问题,蚁群优化

1引言

蚁群算法也称作蚁群优化(Ant Colony Optimization,ACO),最早是由Dorigo及其研究同伴所提出,用于求解诸如旅行商问题之类的组合优化问题。自然界蚂蚁在其经过的路径上会留下某种生物信息物质(信息素),该物质会吸引蚁群中的其它成员再次选择该段路径;食物与巢穴之前较短的路径容易积累较多的信息素,因而使得更多的蚂蚁选择走该段路径,最终几乎所有的蚂蚁都集中在最短路径上完成食物的搬运。Dorigo等从此现象中抽象出路径选择和信息素积累的数学模型,作为蚁群算法的核心,并通过对蚂蚁寻找最短路径的计算机模拟,实现了对TSP问题的求解。自此,蚁群算法越来越多地被用于求解其它的组合优化问题,也被推广到工业工程上应用。

蚁群算法特点是并发性、鲁棒性、正反馈性等。在蚁群算法求解问题的过程中,利用蚁群在问题空间中同时构造问题的多个解体现了算法的并发性。蚁群不会因为单个蚂蚁寻找到较差的解或者因为问题空间发生改变而使得算法丧失作用,这体现了算法的鲁棒性。在蚂蚁构造问题解的过程中,以蚁群觅食行为为例,会在经过的解路径上释放信息素,而解空间中获得信息素越多的路径,对蚂蚁的吸引力就越大,使更多的蚂蚁经过该路径并进一步在上面释放信息素,这体现了算法的正反馈性。

TSP问题代表一类组合优化问题,在实际工程中有许多应用,如计算机联网、电子地图、交通诱导、电气布线、VLSI单元布局、ATM分组交换网等。鉴于其重要的工程与理论价值,TSP常作为算法性能研究的典型算例。求其最优解的代价是指数级的,因此对其近似解的研究一直是算法设计的一个重要课题。

TSP问题是典型的NP完全问题,许多算验证法及算法效率测试都以TSP问题为基础。在蚁群算法研究中,第一个蚁群算法,蚂蚁系统,就是在TSP问题的基础上提出来的。而后,依据TSP问题,又提出了蚁群算法系列中具有代表性的蚁群系统、最大——最小蚂蚁系统。

本文以TSP问题为基础,对蚁群算法的基本问题及典型的蚁群算法进行了综述。涉及到算法的基本问题、算法描述、算法改进及意义。通过研究总结了蚁群算法的发展历程和实现思想。

2蚁群行为和TSP问题

2.1蚁群行为

蚁群的行为是整体协作,相互分工,以一个整体去解决一些对单个蚂蚁看上去是不可能完成的任务。就目前来讲,蚁群至少有三个方面的行为特征对算法研究有很好的启发意义,分别是觅食行为、任务分配、死蚁堆积阁。蚁群的觅食行为指蚂蚁从巢穴出发寻找食物并且将食物搬回巢穴的行为,当蚂蚁出外寻找食物时,会在自己走过的路径上释放一种称为信息素的物质,后续的蚂蚁一般更愿意走那些信息素强度更高的路径。这样,较短路径上单位时间内通过的蚂蚁数目较多,留下的信息素也较多(浓度更高),对妈蚁产生了更强的吸引,使得更多的蚂蚁走较短的路径。这就形成了一个正反馈机制,使得最终所有的蚂蚁都走蚁穴到食物源的最短路径。

蚁群的任务分配指蚁群内部能根据所需要完成的任务合理分配蚂蚁数t。研究表明,从事不同任务的蚂蚁之间的比例是会变动的,也就是说从事任务A的蚂蚁可能会根据需要而从事任务B。在基于这种蚁群行为的模型中,规定了每只妈蚁的反应阈值,同时每一个任务都有一个相关的激励(task-related stimuli)。反应阈值与激励间的关系是:当某个任务的激励数值比蚂蚁的反映阈值大,那么这只蚂蚁就会加人到该任务执行者的行列中。蚁群中,如果一群蚂蚁在执行某任务时出现执行滞后情况,那么该任务的激励数值就会变大,直到其数值大于某些未执行该任务的蚂蚁的反映阈值,从而吸引更多的蚂蚁来完成该任务,由此实现了任务的自动分配。

死蚁堆积与蚁穴清理行为:在蚁群的巢穴中,工蚁会对死蚂蚁进行搬运,使得那些死蚂蚁堆积到一起。在这一堆积行为中,死蚁堆越大对工蚁的吸引力越大,使得更多的死蚂蚁被堆积到该蚁堆中,这样同样也形成了一个正反馈现象。但是,并不是说所有的死妈蚁都会堆积到一起,而是最终会形成几个规模较大的蚁堆。研究者对蚁群的这3种行为特征进行了深入的研究,并应用于最短路径优化、任务分配调度以及数据聚类等问题领域,得到了效率较高的许多启发式算法。

2.2TSP问题

TSP问题是给定一个城市的集合以及城市之间的旅行代价,寻找经过每个城市一次且仅一次而最终回到起始城市旅行代价最小的路径。如果构造一个图如下:图中的顶点为城市,顶点间的边表示城市间的交通线,边上的权为沿该交通线旅行的费用。那么,TSP问题就抽象为在这个图中寻找最短哈密尔顿回路。

任意两个城市A、B,如果A到B的旅行代价和B到A旅行代价相等,称这样的TSP

问题是对称的TSP问题(symmetric traveling salesman problem,STSP),否则称为不对称的TSP问题(asymmetric traveling salesman problem,ATSP)。通常,在没有特别申明的情况下所提及的TSP问题指对称的TSP问题。

n个顶点的TSP问题中的路径指顶点的序列:L=x1,x2…x n,其中x i与x i+1(1≦i≦n-l)之间有边。一条路径被称为合法路径,如果x i≠x j(i≠j, 1≦i≦n, 1≦j≦n)。

TSP问题本质上是数学优化问题,可以形式化地描述为:

n?1

Min(d x i,x i+1+d x n,x1

)

i=1

其中,d(x i,x i+1)表示顶点x i与顶点x i+1之间的距离。算法研究表明,TSP问题是NP完全问题,其计算复杂度为(n!)。

自TSP问题提出以来,其求解方法得到了不断的改进。目前已经可以对上万个城市的TSP问题进行求解阁。近年来,以蚁群行为为基础的蚁群算法已成为一种较为有效的TSP问题求解方法。

3典型的蚁群算法

这里,我们仅讨论与TSP问题相关的蚁群算法。在蚁群算法研究及实现中,并不是直接模拟现实蚁群,而是采用人工蚂蚁(artificial ant)。人工蚁群与现实蚁群的区别主要包括: (1)人工蚂蚁是有一定的记忆能力的,它可以记住己经走过的路径,以保证不会重复走相同的城市。现实的蚁群是没有记忆的,蚂蚁间的信息交换主要依靠留在所经过路径上的信息素。

(2)人工蚂蚁不仅仅是依据信息素来确定要走的路径的,还依据一定的启发信息,比如相邻边的长度,这意味着人工蚂蚁具有一定的视觉能力,而真实蚂蚁几乎没有视觉。

(3)人工蚂蚁是生活在一个离散的时间环境下的。我们仅考虑人工蚂蚁位于某个城市,而不考虑蚂蚁在城市间的移动过程,即只考虑在某些离散时间点上的蚂蚁。而现实世界中的蚂蚁处于一个连续的时间维中。

3.1蚂蚁系统(Ant System)

蚂蚁系统是第一个蚁群算法,它是Dorige等人于1991年首先提出来的。蚂蚁系统有三种基本模型,分别是蚁周模型、蚁密模型、蚁量模型。

三种模型的实现大致相同,主要区别是在信息素的更新方式上。在用蚂蚁系统解决TSP 问题时,蚁量模型和蚁密模型是蚂蚁在构建一条合法路径的过程中进行信息素的更新的,当蚂蚁走过一条边之后,就对该边进行信息素的更新,后文将这种更新称为局部更新。而蚁周模型是在所有蚂蚁都构建了一条合法路径之后才对各边进行信息素更新的,后文将这种更新称为全局更新,并且三者在蚂蚁释放信息素的量上面也不同。蚁密模型中,蚂蚁在自己所走过的边上所释放的信息素是一个常量Q,而蚁量模型中,蚂蚁在自己所走过的边上释放的信息素是Q/d ij,其中Q是一个常量,而d ij是蚂蚁走过边的长度。蚁周模型中蚂蚁释放信息素的量在后文说明。

由于蚁周模型是三种模型中性能最好的,下面主要从蚁周模型的角度来讨论蚂蚁系统。

蚂蚁系统的基本思想是:(1)预先初始化各边信息素强度、以及各蚂蚁的禁忌表。各蚂蚁按照一定的概率规则,在禁忌表的制约下选择下一个要到达的结点,直到最终形成一条合法路径。(2)计算各蚂蚁所产生的路径长度,路径长度是路径中各边长度之和。(3)更新各边的信息素。各边先进行信息素挥发操作,然后根据各蚂蚁产生的路径长度获取蚂蚁所释放的信息素。(4)当所有蚂蚁均完成了信息素的更新操作之后,记录当前的最短路径,并且对禁忌表以及信息素的增加值进行初始化,并转到步骤2。依此循环下去,直到满足算法的终了条件为止,比如解无法得到进一步的改进或者达到了事先规定的循环次数。

在蚂蚁系统具体包括了三个方面的内容。

第一、初始化。对于每条边上的信息素初始化为一个较小的数值r0;对每只蚂蚁,需要一个禁忌表记录自己已经走过的结点,初始化其禁忌表为该蚂蚁所在的结点,禁忌表长度为1。蚂蚁在各边上释放信息素的量被初始化为0。

第二、蚂蚁构造路径。蚂蚁按照一定的概率确定下一步要到达的城市。概率的计算如下式。

上式表示蚂蚁在t时刻由城市i选择城市j的概率。α是信息素在概率计算中的权重,它的值越大,信息素在蚂蚁选择下一个要到的城市中起到的作用越大。β是启发因子(在TSP 问题中常以d ij的倒数来表示)在概率计算中所占的权重,它的值越大,启发因子在蚂蚁选择城市的过程中所起的作用越大。N h(i)是不在蚂蚁禁忌表中的城市集合。上式说明,蚂蚁不会选择禁忌表中的城市,这样就保证了解的合法性。

第三、对信息素的操作。在蚁周模型中,当所有的蚂蚁都找到了一条合法路径之后,就进行信息素的更新,如下式。

其中, 表示在x时刻边ij上的信息素。ρ是信息素维持因子,1-ρ是信息素的挥发因

子。是所有蚂蚁在边ij上所释放的信息素的总和,如下式。

其中m是蚂蚁的数量,是妈蚁k在t到t+l时间内在边ij上所释放的信息素,

大部分的蚁群算法都是在蚂蚁系统的基础上发展而来的。它们都是将蚂蚁系统与具体问题相结合,并且在蚂蚁系统的基础之上引入一些新的控制机制。故,通常都是把蚂蚁系统认为是蚁群算法的先驱与研究的基础。

3.2蚁群系统

蚂蚁系统(Ant Colony System,ACS)是第一个蚁群算法,在解决规模较小的TSP问题的时候效果很好,但是随着问题的规模扩大,蚂蚁系统就会出现收敛速度过慢的问题。在1996年,Dorigo在蚂蚁系统的基础之上又提出了蚁群系统。蚁群系统的基本思想是:将m

只蚂蚁按照一定的规则(随机)放于n个结点。每一只蚂蚁通过伪随机规则,也称状态转移规则创建一条合法路径。在创建路径的过程中,每一只蚂蚁通过局部更新规则对自己所走过的边进行信息素的更新操作。当所有的蚂蚁都完成了路径的构造之后,再对最佳路径上的边进行信息素的全局更新。

蚁群系统较蚂蚁系统改进的地方主要体现在三个方面。

第一、蚁群系统全局更新时仅针对当前最好路径上的边进行,更新规则如下式所示。

其中,λ是信息素衰退因子,是当前最好路径长度的倒数。

第二、蚁群系统在蚂蚁创建路径的过程中所使用的状态转移规则不同于蚂蚁系统,如下式所示。

其中,q∈(0,1)是一个随机数,q0∈(0,1)是一个常量,它在算法的求解效率与算法的运行效率之间起平衡作用。一般地,想使算法收敛于全局最优解,获得较高的求解效率就务必要求搜索范围尽可能地大,不能局限在已有路径这个空间周围,而这不可避免就使得算法的运行效率降低。反之,假如要想算法的运行速度加快,获得满意的运行效率,那么算法的搜索空间就不能太大,这样使得算法有收敛于局部最优解的风险。蚁群系统的做法是:当q≦q0时,则增强已有的较好的路径上的信息素,即选择当前转移概率最大的那个城市。而当q﹥q0时,就按照蚂蚁系统中的选路方式来选择下一个要到的城市,以扩大搜索空间。这样做的优点是在保障算法求解效率的基础上同时又提高了算法的运行效率。

第三、蚁群系统在对信息素更新时,除了进行全局更新,还要进行信息素的局部更新。局部更新如下式所示。

其中,p任(0,1)。

在关于蚁群系统的后续研究中,ACS引人了局部搜索(Local Search)策略,它使用restriet3-opt,这个搜索策略可以同时满足ATSP和STSP两类问题,并且可以明显提高算法的性能。

实验研究表明,ACS在解决规模较大的TSP问题时,可以取得比较令人满意的结果。

3.3蚁群优化算法

随着对蚁群算法研究的深人,蚁群算法的应用领域也随之不断扩充。继TSP问题之后,蚁群算法又相继应用于QAP,VRP等组合优化问题,网络路由问题,图的着色问题以及机器

人路径规划等问题。蚁群算法与不同具体问题相结合而产生了不同的蚁群算法。这些不同的蚁群算法在外在形式和内在运行机制方面都有相似之处。从Dorige等人于1999年提出了蚁群优化算法(Ant Colony optimization,ACO),该算法给出了蚁群算法的一个一般化的框架。蚁群优化算法的提出在蚁群算法发展历程中具有重要的意义。

ACO的主要思想是:如果求解的问题能够转换为在一个图中寻找最优路径,那么ACO 就能够用于寻找满足给定限定条件的最优路径,进而完成对问题的求解。ACO对蚁群算法的实现进进行了高度的概括,将蚁群算法主要概括为蚂蚁的行为,信息素的挥发操作和一些守护操作。其中守护操作是可选的。ACO的伪代码如下:

蚂蚁的行为可以描述为一群蚂蚁同时异步地在问题空间中相邻的状态之间移动,可以形象化为在一个图中的相邻结点之间移动。移动依靠问题的启发信息和信息素所决定的选择策略以及问题本身的限制条件。通过移动,逐步地构建问题的解。一旦蚂蚁构建出了问题的解,或者蚂蚁正在构建问翅解的过程时,蚂蚁会对解进行评估,然后依据解的好坏来释放一定的信息素到路径上。而这些信息素将进一步指导后续蚂蚁构造路径。在ACO中,蚂蚁的行为用ant_geneariton_and_activity()来表示.。

信息素的挥发操作可以描述为图的边上的信息素随着时间而逐渐消失。这样做是为了避免算法过快收敛于局部解,信息素的挥发操作同样有利于蚂蚁对新的解空间进行搜索,进而找出更好的解。在ACO中,信息素的挥发操作用pheormone_evaporation()来表示。

守护操作可以描述为实现一些蚂蚁所不能完成的集中控制任务。比如一些局部搜索策略;比较各蚂蚁所产生的路径长度,仅仅对其中的最短路径再次进行信息素的全局更新等等。在ACO中,守护操作可以用daemon_actions表示。

需要指出的是,ACO对以上三个行为之间的进度和具体实现方式并没有严格的限制,比如它们三者之间是否需要同步或者是否要彼此并行且独立。这就意味着在利用ACO解决实际问题的时候,可以自由安排以上三个行为之间的实现进度以及具体的实现方式。ACO适用于离散优化问题的求解,相应问题的特征在文献中有详细的说明。如果说,前期的蚁群算法基本都是围绕蚂蚁系统而展开的,那么在蚁群优化算法提出之后,有关蚁群算法的研究和相关应用就基本上是围绕蚁群优化算法而进行的。

4结论

本文主要从解决TSP问题的角度出发,按照时间先后顺序分别介绍了蚁群算法系列中比较有代表性的几个算法。描绘了蚁群算法从AS到ACO发展完善的过程。在介绍各算法基本思想的基础上,着重阐述了算法的主要特点和创新点及其意义,从上述蚁群算法的发展过程中可以看出,蚁群算法的核心就是对信息素的合理操作,整个蚁群利用信息素作为一种间接通信工具而形成解决问题的合力。故,如果要实现蚁群算法进一步的发展,关于信息素的操作是一个主要的人手点。目前蚁群算法的应用越来越广,国际上已经有专门的学术会议来讨论蚁群算法。相信随着研究的深人,蚁群算法必将可以得到进一步的发展,进一步拓宽蚁群的应用领域。最后需要补充的是,在蚁群算法发展的历程中,除了文中介绍的蚁群算法之外,还有其他一些同样具有代表性的蚁群算法。比如:带精英策略的蚂蚁系统(Ant System with elitist Strategy,ASelist),基于优化排序的蚂蚁系统(Rank-Based Version of Ant System,AS rank)等等。

参考文献

[1]Regis Chenavaz.Dynamic pricing,product and process innovation[J]. European Journal of Operational Research,2012, 222 (2012):533-557.

[2]郑筠,文扬.基于作业成本法的标准成本体系研究[J].北京航天航空大学学报(社会科学版),2004,17(3):62-65.

[3]Tzy-yih Hsiao. Establish standards of standard costing with the application of convergent gray zone test[J].European Journal of Operational Research,2004,168(2006):593-611.

[4]田志波,唐立新,任一鸣,赵永明,邬成新.基于合成领域的蚁群算法求解无委托板坯匹配问题[J].自动化学报,2009,35(2):186-192.

[5]武照云,刘晓霞,李丽,刘楠嶓.产品开发任务分配问题的多目标优化求解[J].控制与决策,2012,27(4):598-602.

[6]施进发,焦合军,陈涛.交货期惩罚下柔性车间调度多目标Pareto优化研究[J].机械工程学报,2012,48(12):184-192.

[7]宗欣露,熊盛武,方志祥.基于蚁群算法的人车混合疏散优化及混合比例分析[J].系统工程理论与实践,2012,32(7):1610-1617.

[8]丁力平,谭建荣,冯毅熊,高一聪.基于Pareto蚁群算法的拆卸线平衡多目标优化[J].计算机集成制造系统,2009,15(7):1406-1429.

[9]王守觉,王柏南.人工神经网络的多维空间几何分析及其理论[J].电子学报,2002,30(1):1-4.

蚁群算法简述及实现

蚁群算法简述及实现 1 蚁群算法的原理分析 蚁群算法是受自然界中真实蚁群算法的集体觅食行为的启发而发展起来的一种基于群体的模拟进化算法,属于随机搜索算法,所以它更恰当的名字应该叫“人工蚁群算法”,我们一般简称为蚁群算法。M.Dorigo等人充分的利用了蚁群搜索食物的过程与著名的TSP问题的相似性,通过人工模拟蚁群搜索食物的行为来求解TSP问题。 蚂蚁这种社会性动物,虽然个体行为及其简单,但是由这些简单个体所组成的群体却表现出及其复杂的行为特征。这是因为蚂蚁在寻找食物时,能在其经过的路径上释放一种叫做信息素的物质,使得一定范围内的其他蚂蚁能够感觉到这种物质,且倾向于朝着该物质强度高的方向移动。蚁群的集体行为表现为一种正反馈现象,蚁群这种选择路径的行为过程称之为自催化行为。由于其原理是一种正反馈机制,因此也可以把蚁群的行为理解成所谓的增强型学习系统(Reinforcement Learning System)。 引用M.Dorigo所举的例子来说明蚁群发现最短路径的原理和机制,见图1所示。假设D 和H之间、B和H之间以及B和D之间(通过C)的距离为1,C位于D和B的中央(见图1(a))。现在我们考虑在等间隔等离散世界时间点(t=0,1,2……)的蚁群系统情况。假设每单位时间有30只蚂蚁从A到B,另三十只蚂蚁从E到D,其行走速度都为1(一个单位时间所走距离为1),在行走时,一只蚂蚁可在时刻t留下浓度为1的信息素。为简单起见,设信息素在时间区间(t+1,t+2)的中点(t+1.5)时刻瞬时完全挥发。在t=0时刻无任何信息素,但分别有30只蚂蚁在B、30只蚂蚁在D等待出发。它们选择走哪一条路径是完全随机的,因此在两个节点上蚁群可各自一分为二,走两个方向。但在t=1时刻,从A到B的30只蚂蚁在通向H的路径上(见图1(b))发现一条浓度为15的信息素,这是由15只从B走向H的先行蚂蚁留下来的;而在通向C的路径上它们可以发现一条浓度为30的信息素路径,这是由15只走向BC的路径的蚂蚁所留下的气息与15只从D经C到达B留下的气息之和(图1(c))。这时,选择路径的概率就有了偏差,向C走的蚂蚁数将是向H走的蚂蚁数的2倍。对于从E到D来的蚂蚁也是如此。 (a)(b)(c) 图1 蚁群路径搜索实例 这个过程一直会持续到所有的蚂蚁最终都选择了最短的路径为止。 这样,我们就可以理解蚁群算法的基本思想:如果在给定点,一只蚂蚁要在不同的路径中选择,那么,那些被先行蚂蚁大量选择的路径(也就是信息素留存较浓的路径)被选中的概率就更大,较多的信息素意味着较短的路径,也就意味着较好的问题回答。

蚁群算法应用

大连理工大学 研究生必修课 作业 课程名称:现代物流管理 研究生姓名:徐静学号:21511149 作业成绩: 任课教师(签名) 交作业日时间:2016 年6 月1日

蚁群算法在TSP问题上的应用 摘要蚁群算法是受现实蚂蚁群体行为启发而得出的一类仿生算法。本文以解决TSP问题为基础,系统地介绍了蚁群算法从诞生到成熟过程中几个代表性的算法。在阐述算法基本思想的前提下,着重论述算法的创新之处。 关键词蚁群算法,TSP问题,蚁群优化 1引言 蚁群算法也称作蚁群优化(Ant Colony Optimization,ACO),最早是由Dorigo及其研究同伴所提出,用于求解诸如旅行商问题之类的组合优化问题。自然界蚂蚁在其经过的路径上会留下某种生物信息物质(信息素),该物质会吸引蚁群中的其它成员再次选择该段路径;食物与巢穴之前较短的路径容易积累较多的信息素,因而使得更多的蚂蚁选择走该段路径,最终几乎所有的蚂蚁都集中在最短路径上完成食物的搬运。Dorigo等从此现象中抽象出路径选择和信息素积累的数学模型,作为蚁群算法的核心,并通过对蚂蚁寻找最短路径的计算机模拟,实现了对TSP问题的求解。自此,蚁群算法越来越多地被用于求解其它的组合优化问题,也被推广到工业工程上应用。 蚁群算法特点是并发性、鲁棒性、正反馈性等。在蚁群算法求解问题的过程中,利用蚁群在问题空间中同时构造问题的多个解体现了算法的并发性。蚁群不会因为单个蚂蚁寻找到较差的解或者因为问题空间发生改变而使得算法丧失作用,这体现了算法的鲁棒性。在蚂蚁构造问题解的过程中,以蚁群觅食行为为例,会在经过的解路径上释放信息素,而解空间中获得信息素越多的路径,对蚂蚁的吸引力就越大,使更多的蚂蚁经过该路径并进一步在上面释放信息素,这体现了算法的正反馈性。 TSP问题代表一类组合优化问题,在实际工程中有许多应用,如计算机联网、电子地图、交通诱导、电气布线、VLSI单元布局、ATM分组交换网等。鉴于其重要的工程与理论价值,TSP常作为算法性能研究的典型算例。求其最优解的代价是指数级的,因此对其近似解的研究一直是算法设计的一个重要课题。 TSP问题是典型的NP完全问题,许多算验证法及算法效率测试都以TSP问题为基础。在蚁群算法研究中,第一个蚁群算法,蚂蚁系统,就是在TSP问题的基础上提出来的。而后,依据TSP问题,又提出了蚁群算法系列中具有代表性的蚁群系统、最大——最小蚂蚁系统。 本文以TSP问题为基础,对蚁群算法的基本问题及典型的蚁群算法进行了综述。涉及到算法的基本问题、算法描述、算法改进及意义。通过研究总结了蚁群算法的发展历程和实现思想。

粒子群算法和蚁群算法的结合及其在组合优化中的应用

2007年第2期空间电子技术收稿日期:2006-04-03;收修改稿日期:2006-04-30 粒子群算法和蚁群算法的结合及其在 组合优化中的应用 张长春苏昕易克初 (西安电子科技大学综合业务网国家重点实验室,西安710071) 摘要文章首次提出了一种用于求解组合优化问题的PAAA算法。该算法有效地 结合了粒子群算法和蚁群算法的优点,先利用粒子群算法的随机性、快速性、全局性得到初始信息素分布(即粗搜索),再利用蚁群算法的并行性、正反馈性、求解精度高等优点求精确解(即细搜索)。将文中提出的算法用于经典TSP问题的求解,仿真结果表明PAAA算法兼有两种算法的优点,同时抛弃了各自的缺点。该算法在时间效率上优于蚁群算法,在求精效率上优于粒子群算法,是综合了两种算法长处的一种新的启发式算法,达到时间性能和优化性能上的双赢,获得了非常好的效果。 主题词蚁群算法粒子群算法旅行商问题PAAA 0引言 近年来对生物启发式计算(Bio-inspiredComputing)的研究,越来越引起众多学者的关注和兴 趣,产生了神经网络、 遗传算法、模拟退火、粒子群算法、蚁群算法等许多用于解决复杂优化问题的新方法。然而,面对各种问题的特殊性和复杂性,每种算法都表现出了自身的优势和缺陷,都存在时间性能和优化性能不能兼得的矛盾。粒子群优化(ParticleSwarmOptimization,PSO)算法[1,2]是由Eberhart和Kennedy于1995年提出的一种全局优化算法,该算法源于对鸟群觅食行为的模拟。它的优势在于:(1)算法简洁,可调参数少,易于实现;(2)随机初始化种群,具有较强的全局搜索能力,类似于遗传算法;(3)利用评价函数衡量个体的优劣程度,搜索速度快;(4)具有较强的可扩展性。其缺点是:不能充分利用系统中的反馈信息,求解组合优化问题的能力不强。 蚁群算法[3,4](AntColonyOptimization,ACO)是由意大利学者M.Dorigo,V.Maniezzo和A.Colorni 于20世纪90年代初提出的一种新型的智能优化算法,已经被应用到TSP问题[5,6]、二次分配问题、工件调度问题、图着色问题等许多经典组合优化问题中,取得了很好的效果。它的优点是:(1)采用一种正反馈机制,通过信息素的不断更新,达到最终收敛于最优路径上的目的;(2)是一种分布式的优化方法,易于并行实现;(3)是一种全局优化的方法,不仅可用于求解单目标优化问题,而且可用于求解多目标优化问题;(4)适合于求解离散优化问题;(5)鲁棒性强。但由于在算法的初始阶段信息素匮乏,所以求解速度较慢。 文章将粒子群算法和蚁群算法有机地结合,提出了PAAA算法。它利用粒子群算法的较强的全局搜索能力生成信息素分布,再利用蚁群算法的正反馈机制求问题的精确解,汲取各自的优势,以达空间电子技术SPACEELECTRONICTECHNOLOGY76

蚁群算法在车辆路径问题中的应用

蚁群算法在车辆路径问题中的应用 摘要 蚁群算法(Ant Colony Optimization, ACO)是意大利学者M.Dorigo等人通过模拟蚁群觅食行为提出的一种基于种群的模拟进化算法。通过介绍蚁群觅食过程中基于信息素(pheromone)的最短路径的搜索策略,给出了基于MATLAB的蚁群算法在车辆路径问题(Vehicle Routing Problem, VRP)中的应用。蚁群算法采用分布式并行计算机制,易于其他方法结合,而且具有较强的鲁棒性,但搜索时间长,容易陷入局部最优解。针对蚁群算法存在的过早收敛问题,加入2—opt方法对问题求解进行了局部优化,计算机仿真结果表明,这种混合型蚁群算法对求解车辆路径问题有较好的改进效果。 关键词:蚁群算法、组合优化、车辆路径问题、2-opt方法 1.车辆路径问题 车辆路径问题(VRP)来源于交通运输,1959年由Dantzig提出,它是组合优化问题中一个典型的NP-hard问题。最初用于研究亚特兰大炼油厂向各个加油站投送汽油的运输路径优化问题,并迅速成为运筹学和组合优化领域的前沿和研究热点。 车路优化问题如下: 已知有一批客户,各客户点的位置坐标和货物需求已知,

供应商具有若干可供派送的车辆,运载能力给定,每辆车都是从起点出发,完成若干客户点的运送任务后再回到起点。 现要求以最少的车辆数和最少的车辆总行程来完成货物的派送任务。 2、蚁群系统基本原理 在蚂蚁群找到食物时,它们总能找到一条从食物到蚁穴之间的最短路径。因为蚂蚁在寻找食物时会在路途上释放一种特殊的信息素。当它们碰到一个还没有走过的路口时,会随机地挑选一条路径前行。与此同时释放出与路径长度有关的信息素。路径越长,释放的激素浓度越低。当后面的蚂蚁再次碰到这个路口时,会选择激素浓度较高的路径走。这样形成了一个正反馈,最优路径上的激素浓度越来越高,而其他的路径上激素浓度却会随时间的流逝而消减。最终整个蚁群会找出最优路径。在整个寻找过程中,整个蚁群通过相互留下的信息素作用交换着路径信息,最终找到最优路径。 3、基本蚁群算法求解车辆路径问题 求解VRP问题的蚂蚁算法中,每只蚂蚁是一个独立的用 于构造路线的过程,若干蚂蚁过程之间通过信息素值来交换信息,合作求解,并不断优化。这里的信息素值分布式存储在图中,与各弧相关联。蚂蚁算法求解VRP问题的过程如下:

蚁群算法

蚁群算法的改进与应用 摘要:蚁群算法是一种仿生优化算法,其本质是一个复杂的智能系统,它具有较强的鲁棒性、优良的分布式计算机制和易于与其他方法结合等优点。但是现在蚁群算法还是存在着缺点和不足,需要我们进一歩改进,如:搜索时间长、容易出现搜索停滞现象、数学基础还不完整。本文首先说明蚁群算法的基本思想,阐述了蚁群算法的原始模型及其特点,其次讨论如何利用遗传算法选取蚁群算法的参数,然后结合对边缘检测的蚁群算法具体实现过程进行研究分析,最后对本论文所做的工作进行全面总结,提出不足之处,并展望了今后要继续研究学习的工作内容。 关键词:蚁群算法;边缘检测;阈值;信息素;遗传算法; 1 前言 蚁群算法是近年来提出的一种群体智能仿生优化算法,是受到自然界中真实的蚂蚁群寻觅食物过程的启发而发现的。蚂蚁之所以能够找到蚁穴到食物之间的最短路径是因为它们的个体之间通过一种化学物质来传递信息,蚁群算法正是利用了真实蚁群的这种行为特征,解决了在离散系统中存在的一些寻优问题。该算法起源于意大利学者 Dorigo M 等人于 1991 年首先提出的一种基于种群寻优的启发式搜索算法,经观察发现,蚂蚁在寻找食物的过程中其自身能够将一种化学物质遗留在它们所经过的路径上,这种化学物质被学者们称为信息素。这种信息素能够沉积在路径表面,并且可以随着时间慢慢的挥发。在蚂蚁寻觅食物的过程中,蚂蚁会向着积累信息素多的方向移动,这样下去最终所有蚂蚁都会选择最短路径。该算法首先用于求解著名的旅行商问题(Traveling Salesman Problem,简称 TSP)并获得了较好的效果,随后该算法被用于求解组合优化、函数优化、系统辨识、机器人路径规划、数据挖掘、网络路由等问题。 尽管目前对 ACO 的研究刚刚起步,一些思想尚处于萌芽时期,但人们已隐隐约约认识到,人类诞生于大自然,解决问题的灵感似乎也应该来自大自然,因此越来越多人开始关注和研究 ACO,初步的研究结果已显示出该算法在求解复杂优化问题(特别是离散优化问题)方面的优越性。虽然 ACO 的严格理论基础尚未奠定,国内外的有关研究仍停留在实验探索阶段,但从当前的应用效果来看,这种自然生物的新型系统寻优思想无疑具有十分光明的前景。但该算法存在收敛速度慢且容易出现停滞现象的缺点,这是因为并不是所有的候选解都是最优解,而候选解却影响了蚂蚁的判断以及在蚂蚁群体中,单个蚂蚁的运动没有固定的规则,是随机的,蚂蚁与蚂蚁之间通过信息素来交换信息,但是对于较大规模的优化问题,这个信息传递和搜索过程比较繁琐,难以在较短的时间内找到一个最优的解。 由于依靠经验来选择蚁群参数存在复杂性和随机性,因此本文最后讨论如何利用遗传算法选取蚁群算法的参数。遗传算法得到的蚁群参数减少了人工选参的不确定性以及盲目性。 2 基本蚁群算法 2.1 蚁群算法基本原理 根据仿生学家的研究结果表明,单只蚂蚁不能找到从巢穴到食物源的最短路 径,而大量蚂蚁之间通过相互适应与协作组成的群体则可以,蚂蚁是没有视觉的,但是是通过蚂蚁在它经过的路径上留下一种彼此可以识别的物质,叫信息素,来相互传递信息,达到协作的。蚂蚁在搜索食物源的过程中,在所经过的路径上留下信息素,同时又可以感知并根据信息素的浓度来选择下一条路径,一条路径上的浓度越浓,蚂蚁选择该条路径的概率越大,并留下信息素使这条路径上的浓度加强,这样会有更多的蚂蚁选择次路径。相反,信息素浓度少的路

蚁群算法程序,在最短路中的应用,稍加扩展即可应用于机器人路径规划

下面的程序是蚁群算法在最短路中的应用,稍加扩展即可应用于机器人路径规划 function [ROUTES,PL,Tau]=ACASP(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q) %% --------------------------------------------------------------- % ACASP.m % 蚁群算法动态寻路算法 % ChengAihua,PLA Information Engineering University,ZhengZhou,China % Email:aihuacheng@https://www.360docs.net/doc/0e11373194.html, % All rights reserved %% --------------------------------------------------------------- % 输入参数列表 % G 地形图为01矩阵,如果为1表示障碍物 % Tau 初始信息素矩阵(认为前面的觅食活动中有残留的信息素) % K 迭代次数(指蚂蚁出动多少波) % M 蚂蚁个数(每一波蚂蚁有多少个) % S 起始点(最短路径的起始点) % E 终止点(最短路径的目的点) % Alpha 表征信息素重要程度的参数 % Beta 表征启发式因子重要程度的参数 % Rho 信息素蒸发系数 % Q 信息素增加强度系数 % % 输出参数列表 % ROUTES 每一代的每一只蚂蚁的爬行路线 % PL 每一代的每一只蚂蚁的爬行路线长度 % Tau 输出动态修正过的信息素 %% --------------------变量初始化---------------------------------- %load D=G2D(G); N=size(D,1);%N表示问题的规模(象素个数) MM=size(G,1); a=1;%小方格象素的边长 Ex=a*(mod(E,MM)-0.5);%终止点横坐标 if Ex==-0.5 Ex=MM-0.5; end Ey=a*(MM+0.5-ceil(E/MM));%终止点纵坐标 Eta=zeros(1,N);%启发式信息,取为至目标点的直线距离的倒数 %下面构造启发式信息矩阵 for i=1:N if ix==-0.5 ix=MM-0.5; end

遗传算法经典MATLAB代码

遗传算法经典学习Matlab代码 遗传算法实例: 也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。 对于初学者,尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 % 下面举例说明遗传算法 % % 求下列函数的最大值 % % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] % % 将 x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为 (10-0)/(2^10-1)≈0.01。 % % 将变量域 [0,10] 离散化为二值域 [0,1023], x=0+10*b/1023, 其 中 b 是 [0,1023] 中的一个二值数。 % % % %--------------------------------------------------------------------------------------------------------------% %--------------------------------------------------------------------------------------------------------------% % 编程 %----------------------------------------------- % 2.1初始化(编码) % initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),

% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 %遗传算法子程序 %Name: initpop.m %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元 为 {0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 % 2.2 计算目标函数值 % 2.2.1 将二进制数转化为十进制数(1) %遗传算法子程序 %Name: decodebinary.m %产生 [2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和列数 for i=1:py pop1(:,i)=2.^(py-i).*pop(:,i); end pop2=sum(pop1,2); %求pop1的每行之和 % 2.2.2 将二进制编码转化为十进制数(2) % decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置

C#实现蚁群算法

https://www.360docs.net/doc/0e11373194.html,/sun_raining61/blog/item/449da9240b1e71024d088d5d.html/cmtid/1056b bed39d4d24779f05502 using System; using System.Collections.Generic; using System.Text; namespace AntSystem { public class AA { /**////

/// 对信息量的重视程度 /// private int alpha; /**//// /// 启发式信息的受重视程度 /// private int beta; /**//// /// 信息素的挥发速度 /// private double lo; /**//// /// 城市距离矩阵 /// private double[,] City; /**//// /// 信息素矩阵 /// private double[,] Message; /**//// /// opneList用于存放下一步可行城市 /// private Queue openList=new Queue (); /**//// /// closedList用于存放已经访问过的城市 /// private Queue closedList=new Queue (); /**//// /// 储存较好的路径 /// private Queue BestList=new Queue (); private int Pro_time = 0; /**////////////////////////////////////////////////////////// ///

(完整版)蚁群算法matlab程序实例整理

function [y,val]=QACS tic load att48 att48; MAXIT=300; % 最大循环次数 NC=48; % 城市个数 tao=ones(48,48);% 初始时刻各边上的信息最为1 rho=0.2; % 挥发系数 alpha=1; beta=2; Q=100; mant=20; % 蚂蚁数量 iter=0; % 记录迭代次数 for i=1:NC % 计算各城市间的距离 for j=1:NC distance(i,j)=sqrt((att48(i,2)-att48(j,2))^2+(att48(i,3)-att48(j,3))^2); end end bestroute=zeros(1,48); % 用来记录最优路径 routelength=inf; % 用来记录当前找到的最优路径长度 % for i=1:mant % 确定各蚂蚁初始的位置 % end for ite=1:MAXIT for ka=1:mant %考查第K只蚂蚁 deltatao=zeros(48,48); % 第K只蚂蚁移动前各边上的信息增量为零 [routek,lengthk]=travel(distance,tao,alpha,beta); if lengthk

蚁群算法及其在序列比对中的应用研究综述

蚁群算法及其在序列比对中的应用研究综述摘要:蚁群算法是一种新颖的仿生进化算法。作为一种全局搜索的方法,蚂蚁算法具有正反馈性、并行性、分布性、自组织性等特点,自提出以来,便在求解复杂组合优化问题上显示出了强大的优势。序列比对是生物信息学的基础,通过在比对中获得大量的序列信息,可以推断基因的结构、功能和进化关系。本文首先详细阐述了蚁群算法的基本原理、各种改进技术及收敛性分析,然后对蚁群算法在双序列比对和多序列比对的应用研究进行了综述和评价,最后指出了下一步的研究方向。 关键词:蚁群算法;序列比对;信息素 Abstract: Ant colony algorithm (ACA) is a novel bionic evolutionary algorithm. As a global searching approach,ACA has some characteristic,such as positive feedback, distributing,paralleling, self-organizing, etc,and from it was introduced, it has been used to solve all kinds of complex optimization problem. Sequence alignment is the basement of Bioinformatics. With the wealth of sequence information obtained from sequence alignment, one can infers the structure, function and evolutionary relationship of genes. In this paper, the basic principles of ACA are introduced at length, and various improvements and convergence Analysis of ACA are also presented. Then the current study of double sequence alignment and multiple sequence alignment based on ant colony algorithm are reviewed and evaluated. Finally, some future research directions about ACA are proposed. Key words: Ant Colony Algorithm; Sequence Alignment; Pheromone 1 引言 蚁群算法(Ant Algorithm)是一种源于大自然中生物世界的新的仿生类算法,作为通用型随机优化方法,它吸收了昆虫王国中蚂蚁的行为特性,通过其内在的搜索机制,在一系列困难的组合优化问题求解中取得了成效。由于在模拟仿真中使用的是人工蚂蚁概念,因此有时亦被称为蚂蚁系统(Ant System)。据昆虫学家的观察和研究发现,生物世界中的蚂蚁有能力在没有任何可见提示下找出从其窝巢至食物源的最短路径,并能随环境的变化而变化,适应性地搜索新的路径,产生新的选择。作为昆虫的蚂蚁在寻找食物源时,能在其走过的路径上释放一种蚂蚁特有的分泌物——信息激素(Pheromone),使得一定范围内的其他蚂蚁能够察觉到并由此影响它们以后的行为。当一些路径上通过的蚂蚁越来越多时,其留下的信息激素轨迹(Trail)也越来越多,以致信息素强度增大(随时间的推移会逐渐减弱),后来蚂蚁选择该路径的概率也越高,从而更增加了该路径的信息素强

蚁群算法原理及在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()n i 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 进化过程作动态调整。在搜索过程中,蚂蚁根据各条路径上的信息量及路 径的启发信息来计算状态转移概率。()k ij p t 表示在t 时刻蚂蚁k 由元素(城市)i 转移 到元素(城市)j 的状态转移概率。 ()*()()*()()0k ij ij k k ij ij ij s allowed t t j allowed t t p t αβ αβτητη??????????? ∈?????=????? ??? ∑若否则 (1) 式中,{}k k allowed C tabuk =-表示蚂蚁k 下一步允许选择的城市;α为信息启发式因子,表示轨迹的相对重要性,反映了蚂蚁在运动过程中所积累的信息在蚂蚁运动时所起作用,其值越大,则该蚂蚁越倾向于选择其他蚂蚁经过的路径,蚂蚁之间协作性越强;β为期望启发式因子,表示能见度的相对重要性,反映了蚂蚁在运动过程中启发信息在蚂蚁选择路径中的重视程度,其值越大,则该状态转移概率越接近于贪心规则;()ij t η为启发函数,其表达式如下: 1 ()ij ij t d η= (2)

遗传算法的C语言程序案例

遗传算法的C语言程序案例 一、说明 1.本程序演示的是用简单遗传算法随机一个种群,然后根据所给的交叉率,变异率,世代数计算最大适应度所在的代数 2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的命令;相应的输入数据和运算结果显示在其后。3.举个例子,输入初始变量后,用y= (x1*x1)+(x2*x2),其中-2.048<=x1,x2<=2.048作适应度函数求最大适应度即为函数的最大值 4.程序流程图

5.类型定义 int popsize; //种群大小 int maxgeneration; //最大世代数 double pc; //交叉率 double pm; //变异率 struct individual { char chrom[chromlength+1]; double value; double fitness; //适应度 }; int generation; //世代数 int best_index; int worst_index; struct individual bestindividual; //最佳个体 struct individual worstindividual; //最差个体 struct individual currentbest; struct individual population[POPSIZE]; 3.函数声明 void generateinitialpopulation(); void generatenextpopulation(); void evaluatepopulation(); long decodechromosome(char *,int,int); void calculateobjectvalue(); void calculatefitnessvalue(); void findbestandworstindividual(); void performevolution(); void selectoperator(); void crossoveroperator(); void mutationoperator(); void input(); void outputtextreport(); 6.程序的各函数的简单算法说明如下: (1).void generateinitialpopulation ()和void input ()初始化种群和遗传算法参数。 input() 函数输入种群大小,染色体长度,最大世代数,交叉率,变异率等参数。 (2)void calculateobjectvalue();计算适应度函数值。 根据给定的变量用适应度函数计算然后返回适度值。 (3)选择函数selectoperator() 在函数selectoperator()中首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算子,直到达到选择算子的值那个个

蚁群算法

%% 蚁群算法求函数极值 % 初始化 clear all; %清除所有变量 close all; %清图 clc; %清屏 m = 20; %蚂蚁个数 G = 200; %最大迭代次数 Rho = 0.9; %信息素蒸发系数 P0 = 0.2; %转移概率常数 XMAX = 7; %搜素变量x最大值 XMIN = 1; %搜素变量x最小值 YMAX = 7; %搜素变量y最大值 YMIN = 1; %搜素变量y最小值 %% 随机设置蚂蚁初始位置 for i = 1:m X(i,1) = (XMIN +(XMAX-XMIN)*rand); X(i,2) = (YMIN +(YMAX-YMIN)*rand); Tau(i) = func(X(i,1),X(i,2)); end step = 0.1; for NC = 1:G lamda = 1/NC; [Tau_best,BestIndex] = max(Tau); % 计算状态转移概率 for i = 1:m P(NC,i) =(Tau(BestIndex)-Tau(i))/Tau(BestIndex); end % 位置更新 for i = 1:m %局部搜素 if P(NC,i) < P0 temp1 = X(i,1)+(2*rand-1)*step*lamda; temp2 = X(i,2)+(2*rand-1)*step*lamda; else %全局搜索 temp1 = X(i,1)+(XMAX-XMIN)*(rand-0.5); temp2 = X(i,2)+(YMAX-YMIN)*(rand-0.5); end % 边界处理 if temp1 < XMIN temp1 = XMIN; end if temp1 > XMAX temp1 = XMAX;

matlab基本遗传算法应用实例

基本遗传算法应用实例。用基本遗传算法求下面函数的最大值 10090060)(23++-=x x x x f 300≤≤x 个体数目取50,最大进化代数取100,离散精度取0.001,杂交概率取0.9,变异概率取0.004 1、在editor 中建立基本遗传算法函数:GA 程序如下: function[xv,fv]=GA(fitness,a,b,NP,NG,pc,pm,eps) %待优化的目标函数:fitness %自变量下界:a %自变量上界:b %种群个体数:NP %最大进化代数:NG %杂交概率:pc %自变量概率:pm %自变量离散精度:eps %目标函数取最小值时的自变量值:xm %目标函数的最小值:fv L=ceil(log2((b-a)/eps+1)); %根据离散精度,确定二进制编码需要的码长 x=zeros(NP,L); for i=1:NP x(i,:)=Initial(L);%种群初始化 fx(i)=fitness(Dec(a,b,x(i,:),L)); %个体适应值 end for k=1:NG sumfx=sum(fx); %所有个体适应值之和 px=fx/sumfx; %所有个体适应值的平均值 ppx=0; ppx(1)=px(1); for i=2:NP %用于轮盘赌策略的累加 ppx(i)=ppx(i-1)+px(i); end for i=1:NP sita=rand(); for n=1:NP if sita<=ppx(n) SelFather=n; %根据轮盘赌策略确定的父亲 break; end end Selmother=floor(rand()*(NP-1))+1; %随机选择母亲 posCut=floor(rand()*(L-2))+1; %随机选择交叉点 r1=rand(); if r1<=pc %交叉

基本遗传算法及应用举例

基本遗传算法及应用举例 遗传算法(Genetic Algorithms)是一种借鉴生物界自然选择和自然遗传机制的随机、高度并行、自适应搜索算法。遗传算法是多学科相互结合与渗透的产物。目前它已发展成一种自组织、自适应的多学科技术。 针对各种不同类型的问题,借鉴自然界中生物遗传与进化的机理,学者们设计了不同的编码方法来表示问题的可行解,开发出了许多不同环境下的生物遗传特征。这样由不同的编码方法和不同的遗传操作方法就构成了各种不同的遗传算法。但这些遗传算法有共同的特点,即通过对生物的遗传和进化过程中的选择、交叉、变异机理的模仿来完成对最优解的自适应搜索过程。基于此共同点,人们总结出了最基本的遗传算法——基本遗传算法。基本遗传算法只使用选择、交叉、变异三种基本遗传操作。遗传操作的过程也比较简单、容易理解。同时,基本遗传算法也是其他一些遗传算法的基础与雏形。 1.1.1 编码方法 用遗传算法求解问题时,不是对所求解问题的实际决策变量直接进行操作,而是对表示可行解的个体编码的操作,不断搜索出适应度较高的个体,并在群体中增加其数量,最终寻找到问题的最优解或近似最优解。因此,必须建立问题的可行解的实际表示和遗传算法的染色体位串结构之间的联系。在遗传算法中,把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法称之为编码。反之,个体从搜索空间的基因型变换到解空间的表现型的方法称之为解码方法。 编码是应用遗传算法是需要解决的首要问题,也是一个关键步骤。迄今为止人们已经设计出了许多种不同的编码方法。基本遗传算法使用的是二进制符号0和1所组成的二进制符号集{0,1},也就是说,把问题空间的参数表示为基于字符集{0,1}构成的染色体位串。每个个体的染色体中所包含的数字的个数L 称为染色体的长度或称为符号串的长度。一般染色体的长度L 为一固定的数,如 X=1010100 表示一个个体,该个体的染色体长度L=20。 二进制编码符号串的长度与问题所要求的求解精度有关。假设某一参数的取值范围是[a ,b],我们用长度为L 的二进制编码符号串来表示该参数,总共能产生L 2种不同的编码,若参数与编码的对应关系为 00000000000……00000000=0 →a 00000000000……00000001=1 →a+δ ? ? ? ……=L 2-1→b 则二进制编码的编码精度1 2--= L a b δ 假设某一个个体的编码是kl k k k a a a x 21=,则对应的解码公式为 )2(121 ∑=---+=L j j L kj L k a a b a x 例如,对于x ∈[0,1023],若用长度为10的二进制编码来表示该参数的话,则下述符号串:

遗传算法 (2)

用遗传算法优化BP神经网络的Matlab编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premn mx(XX); YY=premn mx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... 'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-');

蚁群算法原理与应用讲解

蚁群算法在物流系统优化中的应用 ——配送中心选址问题 LOGO https://www.360docs.net/doc/0e11373194.html,

框架 蚁群算法概述 蚁群算法模型 物流系统中配送中心选择问题 蚁群算法应用与物流配送中心选址 算法举例

蚁群算法简介 ?蚁群算法(Ant Algorithm简称AA)是近年来刚刚诞生的随机优化方法,它是一种源于大自然的新的仿生类算法。由意大利学者Dorigo最早提出,蚂蚁算法主要是通过蚂蚁群体之间的信息传递而达到寻优的目的,最初又称蚁群优化方法(Ant Colony Optimization简称ACO)。由于模拟仿真中使用了人工蚂蚁的概念,因此亦称蚂蚁系统(Ant System,简称AS)。

蚁群觅食图1 ?How do I incorporate my LOGO and URL to a slide that will apply to all the other slides? –On the [View]menu, point to [Master],and then click [Slide Master]or [Notes Master].Change images to the one you like, then it will apply to all the other slides. [ Image information in product ] ?Image : www.wizdata.co.kr ?Note to customers : This image has been licensed to be used within this PowerPoint template only. You may not extract the image for any other use.

相关文档
最新文档