我正在寻找一种针对旅行商问题的遗传算法的交叉算法。
但是,我的TSP问题是传统问题的变体:
我们不仅要给出一个我们需要访问的点列表,而是给出一个我们需要访问的列表点以及我们需要开始和结束的点列表。换句话说,任何路径必须在属于第二个列表的任何点开始和结束,但必须访问第一个列表中的所有点。
换句话说,并非每个点的排列都是有效的。因此,我不确定传统的交叉算法是否能很好地运行(例如,我尝试了有序的交叉,而且它创建的孩子通常比其父母更差)。
有人可以建议使用交叉算法吗?
答案 0 :(得分:0)
为了维护您的交叉和变异操作符,您可以添加一个修复操作符来检查您的起始位置和结束位置是否正确,如果它们不是,则将它们交换到它们的有效位置(初始和结束)。