c# – 用于TSP的遗传算法中的Сrossover操作

前端之家收集整理的这篇文章主要介绍了c# – 用于TSP的遗传算法中的Сrossover操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图用 Genetic algorithm解决 Travelling Salesman Problem (TSP)

我的基因组是图中顶点的排列(Salesman的路径).

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

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

解决方法

您应该检查Gokturk Ucoluk的“遗传算法解决TSP避免特殊交叉和突变”. PDF here.它给出了用于排列的特殊交叉运算符的概述,并提出了一种在标准交叉中工作良好的排列的巧妙表示(即跨越两个排列总是产生两个排列).

关键的洞察是将排列表示为其反转序列,即,对于每个元素i,存储在[i]中,在排列中i比在i左侧多少个元素.与直接表示不同,对于[i]的唯一约束是局部的,即[i]不能大于N-i.这意味着两个有效反转序列的简单交叉总是产生两个有效的反转序列 – 不需要特殊处理重复元素.

猜你在找的C#相关文章