矩阵论论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用蚁群算法分析TSP问题
“旅行商问题”(Traveling Salesman Problem,TSP)可简单描述为:一位销售商从n个城市中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能路径中求出路径长度最短的一条。旅行商的路线可以看作是对n城市所设计的一个环形,或者是对一列n个城市的排列。由于对n个城市所有可能的遍历数目可达(n-1)!个,因此解决这个问题需要O(n!)的计算时间。而由美国密执根大学的Holland教授发展起来的遗传算法,是一种求解问题的高效并行全局搜索方法,能够解决复杂的全局优化问题,解决TSP问题也成为遗传算法界的一个目标。
与粒子群算法相似,蚁群算法也是通过对生物的群体进行观察研究得来的。在研究蚂蚁的行为时发现,一只蚂蚁,不论是工蚁还是蚁后,都只能完成很简单的任务,没有任何一只蚂蚁能够指挥其他蚂蚁完成筑巢等各种复杂的行为。蚂蚁是如何分工,如何完成这些复杂的行为的这一问题引起了科学及的兴趣。
生物学家发现,蚁群具有高度的社会性。在蚂蚁的行动过程中,蚂蚁之间不只是通过视觉和触觉进行沟通,蚂蚁之间的信息传递还可以通过释放出一种挥发性的分泌物,这是一种信息素之类的生物信息介质。一只蚂蚁的行为极其简单,但是一个蚁群的行为则是复杂而又神奇的。蚂蚁在觅食的过程中,如果没有发现信息素,会随机选择一个方向前进,遇见障碍物也会绕开,直到遇见食物,若果遇见的食物比较小,就即刻搬回巢穴,假如食物很大,则会释放信息素之后回去搬救兵。在一只蚂蚁发现食物并留下信息素之后,其它的蚂蚁会跟着信息素很快找到食物。
虽然对蚂蚁的行为有了一定的了解,在实际模拟蚁群的时候仍然存在不少问题。蚂蚁觅食过程中在没有信息素的情况下,蚂蚁会随机向一个方向前进,不能转圈或者震动。虽然有了一个方向,蚂蚁也不能一直只向着同样方向做直线运动,这一运动需要有点随机性,由此,蚂蚁的运动在保持原有的方向的同时对外界的干扰能够做出反应,也有了新的试探。这一点在遇到障碍物时是非常重要的。在有了信息素之后,大多数的蚂蚁都会沿着信息素去找食物,这条路上的信息素会越来越多,但这并不一定会是最优的路径,所以还需要找到最优的路径。好在蚂
蚁也并不是那么机械地运作,它有一定的几率开辟新的道路,而不是沿着信息素运动,这就为找到最优路径提供了可能。当找到了最优路径,这只蚂蚁找到食物再回来会比其它的蚂蚁快,同时在路上也留下了信息素,也会吸引其他的蚂蚁走上这条更快的路。由于这条路走起来更快,信息素也会积累得更快,因此吸引到更多的蚂蚁,渐渐地,大多数的蚂蚁都会走这条最优路径。
遗传算法具有广泛的应用领域,它借助于生物进化的思想和原理与计算机科学相结合,在解决实际问题中得到了很好的广泛应用。遗传算法一般由选择、交叉、变异构成。它通过不断地迭代,逐步改进当前解,直到最后搜索到最优解或满意解。
4.4.1算法原理及步骤
1991年,意大利学者Dorigo M等提出了蚁群算法,并在之后研究了蚁群算法的基本原理和数学模型。这是一种用来在图中优化路径的机率型算法,蚁群算法提出的人工蚂蚁和真实的蚂蚁有一定的区别。因为人工蚂蚁是为了解决实际的优化问题而提出的,为了使算法更加快速有效,人工蚂蚁比真实的蚂蚁多一些本领。例如,人工蚂蚁的状态是离散的,不同于真实的蚂蚁的运动,人工蚂蚁的移动是从一个离散的状态到另一个离散的状态的跃迁。人工蚂蚁还记录了这只蚂蚁的历史行为。至于蚂蚁释放的信息素对于人工蚂蚁而言是建立的评价问题解决方案的优劣程度的函数,且人工蚂蚁释放信息素的时间不同与现实的蚂蚁要在移动的同时释放,是可以视情况而定的。人工蚂蚁还可以进行局部优化、原路返回等现实的蚂蚁所不具备的功能。
蚁群算法之中包括了蚂蚁搜索行为的决定因素,第一,是局部搜索策略。每一只蚂蚁在经过了有限步的移动之后都能够建立一个对于这一问题的解,在每一步的移动过程中,需要应用随机的局部搜索策略来确定移动的方向。第二,蚂蚁的内部状态。蚂蚁的历史记录都存储在蚂蚁的内部状态中,因此,内部状态可以通过所携带的信息判断所建立的解决方案的价值。第三,释放信息素。信息素包含了蚂蚁积累的信息以及一些具体问题的启发信息,能够影响蚂蚁的决策,这些信息只在蚂蚁释放过信息素的路径上,因此它是局部的,同时这些信息也是长期
的、可以共享的。第四,蚂蚁决策表。蚂蚁决策表指导蚂蚁搜索着向最有吸引力的区域移动,这是一种由信息素函数与启发信息函数共同决定的概率表。
蚁群算法的优点很多,比如,这一算法也适用于并行操作。又由于没有中心的控制和数据而更具有鲁棒性,个体的问题对整个问题的求解造成影响。系统中的通信不一定要通过个体之间的直接联系,可以通过间接的方式进行通信,这样使得系统中增加个体的开销很小,系统也因此有了更好的可扩充性。和蚂蚁一样,系统中的个体功能十分简单,不仅实现简单,执行功能所消耗的时间也会很短。在求解复杂优化问题的过程中,蚁群算法搜索出较优解的能力很强。
蚁群算法仍然存在一些缺陷。由于蚂蚁的运动是随机的,当问题具有很大的规模的时候,蚂蚁需要较长的时间才能找到最优的路径,之后就需要更多的时间才能使这条最优路径上积累足够的信息素,吸引大多数的蚂蚁。也就是说,在解决大规模优化问题时算法需要较长的时间才能收敛。还有一种情况,可能并没有蚂蚁开辟新的道路,所有的蚂蚁发现了同样的路径,可是这条路径并不一定是最优的,而蚂蚁不可能再发现新的路径。如果这样,蚂蚁找不到最优路径,这一问题也得不到最优解。将这种蚁群出现停滞的现象称为早熟收敛。蚁群算法目前还需要进一步的研究,提出完善的理论分析,论证其有效性,通过严格的数学解释作为可靠的理论依据。
蚁群算法的伪代码如下:
Procedure: ACO Algorithm
B egin
While (ACO has not been stopped) do
Schedule actives
Ant's allocation and moving(蚂蚁的分配和移动);
Local pheromone update(局部信息素的更新);
Global pheromone update(全局信息素的更新);
End schedule activities
End While
End Procedure
正如蚁群算法的伪代码所示,蚁群算法的内容主要包括蚂蚁的分配和移动、局部信息素的更新以及全局信息素的更新。具体算法步骤如下: