如何使用遗传算法求解节点之间的最短路径?

时间:2009-12-13 07:01:52

标签: genetic-algorithm genetic-programming

如果我有节点网络,我如何使用遗传算法计算任意两个节点之间的最短路径?

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:3)

如何使用GA解决TSP问题?

TSP是NP完全问题。那就是找不到一个 多项式时间中TSP问题的解决方案。但是,考虑到了 解决方案可以验证它是否是多项式时间的解决方案。

可以研究诸如遗传算法的元启发式方法 作为解决TSP问题的工具,因为基于人口 他们经营的方法。这样他们就可以“处理”大量的 算法运行中的解决方案。使用GA解决任何问题 我们需要定义以下内容:

  • 健身功能
  • 个体染色体
  • 交叉运营商
  • 突变

健身功能:这里的健身功能很容易定义。它 应该是推销员必须经过一定距离的距离 尽可能游览城市。我们力求在TSP中尽量减少这种情况。

染色体:染色体可以简单地定义如下 - 假设 我们有五个城市A,B,C,D和E.然后想象一个长度的染色体 5,染色体的每个“槽”包含5个中的任何一个 城市。例如,在我们的例子中,A,C,D,B,E是有效的染色体。

交叉算子:在GA中使用交叉算子来“混合”两个 父母希望得到更健康的孩子。各种交叉 运营商可以在GA文献中找到,每个都有不同的 实现同样的事情的方式。例如,考虑单点 交叉。它随机选择一个交叉点,然后互换 两者之间的比特。没有进入其他专业 交叉运营商,让我们看看什么是一个很好的交叉 我们的运营商。在我们的例子中,两个父染色体将各自有一个 A,B,C,D,E的排列。无论我们选择哪种交叉方法,我们都有 在这里照顾一个事实:交叉运营商不应该 创造一个孩子,其中一个城市不止一次出现,即一个 染色体无效。一个这样的交叉运算符是“订单 Crossover“(OX)可以在这里使用。

突变:突变可以像简单地交换两个位置一样简单 在这里的单一染色体上。

总的来说,这就是使用GA的TSP如何运作:

  • 您创建了一个人群,每个人的大小为5, 并包含A,B,C,D,E的排列(将有很多 重复相同的排列)

  • 您启动GA并在每次运行中评估每个人 通过计算距离使用适应度函数的基础 给你的距离参数

  • Crossover,Mutation改善个体,最终改善 解决方案将是具有最佳旅游的个人,即。最优的 A,B,C,D,E的排列。

希望有所帮助!