遗传算法 - 旅行推销员
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]
然后,您通过从列表中的城市i
到i+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期