我是遗传算法的新手,正在编写旅行商问题的代码。我使用周期交叉产生新的后代,我发现这导致一些后代保留了与父母一样的确切表型,即使这两个父母不同。翻译染色体会避免这种情况吗?
通过翻译,我的意思是一个染色体,表型ABCDE
从两个变为DEABC
。它们将是相同的答案,具有相同的适应性,但可能会使后代更加多样化。
从长远来看这是否值得,还是只是在浪费计算时间?
答案 0 :(得分:2)
周期交叉(CX)基于这样的假设:保持城市的绝对位置很重要(一个城市最好从父母任何一方继承其位置),预防性“翻译”违背CX的精神。
无论如何,多项研究(例如1)已经表明对于TSP ,关键是保留城市和边缘的相对位置。
所以它可以工作,但你必须进行实验。某种形式的突变是另一种可能性。
可能,如果CX的特性不令人满意,不同的交叉算子是更好的选择:保持简单的算子,其中最成功的是秩序交叉(例如2)。