2015-12-14 59 views
1

我很确定我的问题必须经过调查,但我错过了会帮助我搜索文献的行话。我正在写一个遗传算法来解决一类旅行商问题(TSP)。像标准TSP一样,我的变体没有定位的概念。在一个标准的TSP中,由于要求形成一个电路回到起始城市,所以对于任何最佳解决方案,应该有两条同样优化的路线,这两条路线就是该电路周围的两条相反的路线。旅行商问题的遗传算法中的拮抗作用沿同一条路线的相反路径

在遗传算法中,我会想象有时会出现相同(或类似)路径的良好解决方案,但在不同基因型的相反方向编码。我也想象,这些相反的路线之间的大多数交叉往往会相互对立,因为我的意思是他们的后代不适合,因为他们试图只从相反的方向优化相同/相似的路线。这两种基因型只会从相对的两侧爬上同一座小山。看起来这个问题会减慢搜索速度。

我的假设是否正确?你知道用什么术语来描述这个问题,或者有什么技巧可以解决这个问题吗?在一个理想的世界里,你需要两个适合但几乎相反的基因型进行编码或交叉,以保持整个路线结构,而不管方向如何。

+0

这是我想到的一种可能的解决方案。通过在向前和反向两个方向插入“施主”顺序来执行交叉。然后测试两种重组基因型的适应性,并保持更好的基因型。 – user1856955

回答

1

对于遗传算法和TSP,我假设你正在使用你的染色体的置换编码。

现在,假设一条独特的路径是最优的---这是通常的情况;即最优解之间不存在简并度---反循环置换也是最优的。对于不同的起点城市来说,同样的道路也是如此;对于n个城市,在您的染色体中2 * n种不同的置换编码中可以找到相同的不同路径(2为反向循环,n为第一条目=起始城市,染色体中)。

但实际上,这不是问题。非最优路径的数量非常大,以至于反向循环良好路径之间的“对抗性”的可能效果在实践中将不存在。

但是,您可能已经很清楚的一个非常重要的问题是交叉的执行方式。使用置换编码,简单的交叉会导致不可行的路径,所以必须考虑到所产生的子染色体仍然描述有效的TSP置换来执行编码。

收起来;你应该担心对抗w.r.t.循环的反向路径,因为这在实践中不是问题。相反,重点研究差异交叉方法。

参见例如遗传算法为Traveling Salesman Problem using Sequential Constructive Crossover Operator


最后一点:从经典的优化背景的人,一开始,我就很难接受关于随机优化方法,如遗传算法或蚁群opimization,所以“在实践中...”语句上。但是我已经学会了接受这些方法,因为这些方法通过构建而不是确定性的,因此“实践中......”的陈述通常是我们所期望的最好的。

+0

只需快速跟进。在我特别的遗传算法实现中,我看到了循环反向路径之间的对立。但实际上,一方很快胜出,另一方则灭绝。但是,如果两者都存在,他们确实会导致不适合的后代。在某种程度上,这可以通过操纵精英主义和/或通过插入两个命令并选择最合适的一个来控制,如上所述。但正如dfri所言,总的来说,这只是一个短暂的麻烦。 – user1856955