一尘不染

TSP遗传算法中的交叉运算

algorithm

我正在尝试使用遗传算法解决旅行商问题(TSP)。我的基因组是图形中顶点的排列(推销员的路径)。

我应该如何在基因组上进行交叉操作?

在哪里可以找到C#中我的问题的实现?


阅读 531

收藏
2020-07-28

共1个答案

一尘不染

您应查看Gokturk Ucoluk撰写的“
TSP避免特殊交叉和变异的遗传算法解决方案
”。它概述了用于排列的特殊交叉运算符,并提出了一种与标准交叉效果很好的排列的巧妙表示(即,对两个排列进行交叉总是产生两个排列)。

关键的见解是将置换表示为其反转序列,即对于每个元素i,存储a[i]比置换i左边大的元素数i。与直接表示不同,对的唯一约束a[i]是局部约束,即a[i]不能大于N - i。这意味着两个有效反转序列的简单交叉总是产生两个有效反转序列-无需对重复元素进行特殊处理。

2020-07-28