遗传算法 - 旅行推销员

Posted

技术标签:

【中文标题】遗传算法 - 旅行推销员【英文标题】:Genetic Algorithms - Travelling salesman 【发布时间】:2017-10-02 14:52:23 【问题描述】:

我正在查看一份过去的试卷,并试图理解以下问题:

假设你有 N 个城市。可以从每个城市前往任何其他城市。假设您以表格的形式拥有有关城市之间距离的完整信息。城市编号 k 和城市编号 l 之间的距离由 d(k,l) 给出;例如,距离 第三个城市到第九个城市由 d(3,9) 给出。请注意,d(k,l)=d(l,k)。

一位旅行推销员需要访问所有 N 个城市,并希望找到连接所有城市的最短路线。使用遗传算法来解决这个问题。

问题:为这个问题定义一个合适的适应度函数 并说出适应度高还是低更好。

有人知道我需要为这个问题做什么吗?我真的很想从哪里开始,需要一些方向。

【问题讨论】:

【参考方案1】:

使用 TSP,您希望最大限度地减少行驶距离。在n 城市有很多不同的旅行方式; N! / 2 确切地说。

所以如果你有N = 4,你想要一个整数数组1-4,每个只出现一次。所以一些可能的选择是:

[1,4,2,3]
[4,1,2,3]
[3,1,4,2]

然后,您通过从列表中的城市ii+1 计算距离来评估分数。对列表中的每个城市i(但最后一个)执行此操作,您就有了总距离;这是你的分数!

所以对于上面的例子,分数是:

// Please note that the integers 1-4 represent cities
score([1,4,2,3]) = d(1,4) + d(4,2) + d(2,3)
score([4,1,2,3]) = d(4,1) + d(1,2) + d(2,3)
score([3,1,4,2]) = d(3,1) + d(1,4) + d(4,2)

你想最小化距离,从而最小化分数。


您可以通过创建突变函数来交换列表中的两个城市来做到这一点,例如:
[1,4,2,3] -> [4,1,2,3]
[1,2,3,4] -> [1,3,2,4]

This video 展示了一个通过遗传算法优化距离的 javascript 实现的极好示例。

【讨论】:

非常感谢您的帮助!

以上是关于遗传算法 - 旅行推销员的主要内容,如果未能解决你的问题,请参考以下文章

MTSP基于matlab遗传算法求解多旅行商问题含Matlab源码 1325期

MTSP基于matlab遗传算法求解多旅行商问题含Matlab源码 1339期

MTSP基于matlab遗传算法求解多旅行商问题含Matlab源码 1338期

TSP基于matlab遗传算法求解13城市旅行商问题含Matlab源码 1255期

TSP基于matlab GUI遗传算法求解旅行商问题含Matlab源码 1333期

TSP基于matlab遗传算法求解中国35省会城市旅行商问题含Matlab源码 1222期