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

我试图用 Genetic algorithm解决 Travelling Salesman Problem (TSP)

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

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

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

解决方法

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

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

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...