【问题标题】:Genetic algorithm - shortest path in weighted graph遗传算法 - 加权图中的最短路径
【发布时间】:2017-08-10 11:04:01
【问题描述】:

我想制作一个遗传算法来解决加权连通图中的最短路径问题。类似于旅行推销员,但不是全连通图,而是连通图。

我的想法是以二进制形式为每个染色体随机生成一个由 n-1 个节点组成的路径,其中数字表示路径中的节点。然后我将根据权重总和(如果不能从 A 到 B 我会给它惩罚)和其中的交叉/变异位来选择最好的。它会起作用吗?感觉有点像小版本的蛮力。有没有更好的办法?

谢谢!

【问题讨论】:

    标签: machine-learning artificial-intelligence genetic-algorithm


    【解决方案1】:

    遗传算法几乎是“小版本的蛮力”。它只是一种元启发式,而不是具有良好收敛保证的优化方法。它基本上依靠随机性来提供新的解决方案,因此它是一种“稍微好一点的随机搜索”。

    那么“它会起作用吗”?是的,它会做一些事情,只要你有足够的突变随机性,它甚至(最终)会收敛到最优。它会比随机搜索更好吗?很难说,这取决于几十个因素,不仅是你的编码,还有所有使用的超参数等等。一般遗传算法都是关于试验和错误的。特别是染色体不丢失任何信息的表示(你的没有)无关紧要,这意味着一切都取决于交叉和突变的巧妙实现(只要染色体不丢失它们所包含的任何信息)都是等价的)。

    【讨论】:

      【解决方案2】:

      已编辑。

      您可以使用排列编码 GA。在排列编码中,您应该给出起点和终点。 GA 使用您的适应度函数搜索最佳染色体。候选解决方案(染色体)将类似于 2-5-4-3-1 或 2-3-1-4-5 或 1-2-5-4-3 等。因此您的解决方案取决于您的适应度函数。 (查看 R 的 GA 包以轻松应用置换 GA。)

      连接是您的问题的约束。我最好的建议是创建一个这样的约束矩阵:

      FirstPoint SecondPoint Connected
      A          B           true
      A          C           true
      A          E           false
      ...        ...         ...
      

      在标准 TSP 中,仅考虑距离。在您的适应度函数中,您必须考虑这个矩阵并为每个错误添加一个惩罚以返回值。

      Example chromosome: A-B-E-D-C
      A-B: 1
      B-E: 1
      E-D: 4
      D-C: 3
      
      Fitness value: 9
      

      .

      Example chromosome: A-E-B-C-D
      A-E: penalty
      E-B: 1
      B-C: 6
      C-D: 3
      
      Fitness value: 10 + penalty value.
      

      因为您的约束是硬约束,您可以使用最大整数值作为惩罚。 GA 会找到最佳解决方案。 :)

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 2016-06-25
      • 2014-06-26
      • 1970-01-01
      相关资源
      最近更新 更多