使用遗传算法进行封闭路径规划任务的个人代表是什么?

时间:2014-05-04 20:08:04

标签: algorithm graph genetic-algorithm

有一个n * n网格,网格的一个单元格中有一个代理A. A可以传播T个细胞。

网格中的每个单元格都有一些重量,A的路径必须最大化该重量。

A也必须在其行进范围T内返回其起始位置。

代表路径的个人代表是什么?

我尝试过的方法:

  1. 染色体是一个坐标列表。
  2. 染色体是一个方向列表。每个基因都是一个方向,如向上,向下,向右等。路径永远不会在中间断裂。
  3. 两种方法的问题在于交叉几乎总是会产生无效路径。路径在中间被打破。他们没有形成封闭的道路。我似乎无法找到一种代表个人解决方案和合适的交叉方法的好方法。请帮忙。

2 个答案:

答案 0 :(得分:2)

首先,我想说这个问题更适合其他方法,例如可能ant colony optimization,贪婪的方法可以提供足够好的解决方案等。由于你的确切原因,GA可能效果不佳描述

但是,如果你必须使用GA,这里有两个可能值得研究的模型:

  1. 严重惩罚无效路径,给予无效移动成本 - 无穷大。例如,如果您的染色体说从单元格x转到无法访问的单元格y,请考虑y -infinity的成本。这可能值得结合发生交叉的概率很低,可能是5%。

  2. 不要做交叉,只是做一些更多涉及后代的突变。

  3. 如果你想变得更加漂亮,这有点类似于travelling salesman problem,它有很多关于遗传算法的研究:

    http://www.lalena.com/AI/Tsp/

    http://www.math.hmc.edu/seniorthesis/archives/2001/kbryant/kbryant-2001-thesis.pdf

答案 1 :(得分:2)

您可以将路径编码为参考列表: 假设这些是您的位置(1 2 3 4 5 6 7 8 9) (1 2 3 4 8)的子集路由可以编码为(1 1 2 1 4)

现在带两个父母 p1 = (1 1 2 1 | 4 1 3 1 1) p2 = (5 1 5 5 | 5 3 3 2 1)

将产生

o1 = (1 1 2 1 5 3 3 2 1) o2 = (5 1 5 5 4 1 3 1 1)

将被解码为这些位置路线

o1 = 1 – 2 – 4 – 3 – 9 – 7 – 8 – 6 – 5 o2 = 5 – 1 – 7 – 8 – 6 – 2 – 9 – 3 – 4

这样,交叉将始终产生有效的结果(这种表示是否有助于您更好地解决问题)。

可以找到一些其他信息here