我开发了蚁群算法。目前它的工作非常好。
在一些有争议的点上,它可能显示的不是最佳路径,而是接近最佳路径。
例如,我有这张图:
矩阵是:
1 2 3 4 5 6 7
1 0 6 5 0 0 2 0
2 6 0 3 2 1 5 0
3 5 3 0 2 5 0 0
4 0 2 2 0 3 0 0
5 0 1 5 3 0 6 0
6 2 5 0 0 6 0 2
7 0 0 0 0 0 2 0
第一列和第一行是顶点名称。
所以可能的路径是(路径 - 路径的长度):
1. 1-2-5 with length 7
2. 1-6-2-5 with length 8
3. 1-6-5 with length 8
我的程序在1/10开始时选择第一条路径,在7/10开始时选择第二条路径,在程序的2/10开始时选择第三条路径。
工作正常吗?
对此的解释是蚂蚁有自己的眼睛(视力,他们看边长),也可以检测到信息素水平。自己的眼睛为他们显示,1-2边缘相当长,然后比边缘1-6长,因此通常他们将选择边缘1-6而不是选择1-2。同样适用于6-5和6-2:6-2更具吸引力,因为它更短。
我的假设是对的吗?
答案 0 :(得分:2)
根据这个:http://en.wikipedia.org/wiki/Ant_colony_optimization_algorithms#Summary,我可以看到你的方法中有两个问题:
回答这个问题:蚁群算法应该在100%的情况下显示最佳路径吗?不,它根本不需要显示最佳路径。
答案 1 :(得分:2)
在蚁群优化算法中,蚂蚁在遍历图表时具有每个可能步骤的概率。简而言之,这种可能性基于两个因素:本地和全球质量指标。
全局测量通常与边缘中的信息素沉积相关联,因为信息素被添加到路径中使用的每个边缘,然后是蚂蚁,并且添加的量以某种方式与这种蚂蚁创建的解决方案的质量相关。
本地度量通常与特定步骤的质量有关:在提供的示例中,边缘的成本。
因此,如果您的蚂蚁只采取贪婪的行动,您使用的概率函数可能会给当地质量带来太大的影响。寻找在本地搜索和全局搜索之间表现出良好折衷的概率函数是成功应用ACO策略的一个基本方面。
答案 2 :(得分:0)
为什么使用蚁群进行最短路径?如果您正在搜索最短路径,则不需要优化算法,可以使用A *算法(具有最佳启发函数)的多项式时间来实现最佳解决方案。当你将它用于TSP问题时,蚁群更好。
答案是:不 - 请记住,算法是概率性的,因此它可能不会导致最佳解决方案,但会导致局部最小值