Algorithm 对于使用遗传算法的封闭路径规划任务,什么是良好的个体表示?

Algorithm 对于使用遗传算法的封闭路径规划任务,什么是良好的个体表示?,algorithm,graph,genetic-algorithm,Algorithm,Graph,Genetic Algorithm,有一个n*n网格,网格的一个单元中有一个代理a。 A可以移动T个细胞 网格中的每个单元格都有一些权重,而A的路径必须最大化该权重 A还必须返回其行程T内的起始位置 什么是一个好的个体表示来表示路径 我尝试过的方法: 染色体是一个坐标列表 染色体是一系列的方向。每个基因都是向上、向下、向右、向右等方向。中间路径从不间断。 这两种方法的问题在于,交叉几乎总是生成无效路径。道路在中间变得破碎。它们不会形成一条封闭的路径。我似乎找不出一个好方法来表示单个解决方案和适当的交叉方法。请帮助。首先,我想说,这

有一个n*n网格,网格的一个单元中有一个代理a。 A可以移动T个细胞

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

A还必须返回其行程T内的起始位置

什么是一个好的个体表示来表示路径

我尝试过的方法:

  • 染色体是一个坐标列表
  • 染色体是一系列的方向。每个基因都是向上、向下、向右、向右等方向。中间路径从不间断。

  • 这两种方法的问题在于,交叉几乎总是生成无效路径。道路在中间变得破碎。它们不会形成一条封闭的路径。我似乎找不出一个好方法来表示单个解决方案和适当的交叉方法。请帮助。

    首先,我想说,这个问题更适合其他方法,例如,贪婪的方法,提供足够好的解决方案等。气体可能不太适合您描述的确切原因

    但是,如果必须使用气体,以下两种可能的模型可能值得研究:

  • 通过给予无效移动-无限的代价来严惩无效路径。例如,如果你的染色体说从一个细胞<代码> x<代码>到一个不可达的细胞<代码> y>代码>,考虑<代码> y>代码>无穷远的代价。这可能值得与交叉发生的低概率相结合,大约5%

  • 不要做交叉,只是对后代做一些更复杂的变异

  • 如果你想变得更喜欢,这有点类似于,它有很多关于遗传算法的研究:


    首先,我想说,这个问题更适合其他方法,例如,贪婪的方法,可以提供足够好的解决方案等。气体可能不太适合你描述的确切原因

    但是,如果必须使用气体,以下两种可能的模型可能值得研究:

  • 通过给予无效移动-无限的代价来严惩无效路径。例如,如果你的染色体说从一个细胞<代码> x<代码>到一个不可达的细胞<代码> y>代码>,考虑<代码> y>代码>无穷远的代价。这可能值得与交叉发生的低概率相结合,大约5%

  • 不要做交叉,只是对后代做一些更复杂的变异

  • 如果你想变得更喜欢,这有点类似于,它有很多关于遗传算法的研究:


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

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

    那会产生什么

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

    它们将被解码成这些定位路线

    
    o1=1-2-4-3-9-7-8-6-5
    氧气=5-1-7-8-6-2-9-3-4
    

    这样,交叉总是会产生有效的结果(这种表示是否能帮助您更好地解决问题是另一个问题)


    可以找到一些附加信息。

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

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

    那会产生什么

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

    它们将被解码成这些定位路线

    
    o1=1-2-4-3-9-7-8-6-5
    氧气=5-1-7-8-6-2-9-3-4
    

    这样,交叉总是会产生有效的结果(这种表示是否能帮助您更好地解决问题是另一个问题)


    可以找到一些额外的信息。

    实际上,我决定使用遗传算法,因为互联网上有很多论文提供了从地图上的a点到B点的某种方法,并使用遗传算法获得最佳路径。让我的问题不同的是,我不一定想要最短路径。我想最大化路径覆盖的单元格中的wights,同时将路径的总长度保持在代理的最大范围内。根据问题中无效路径的数量,可能会导致适应环境变得极其参差不齐。搜索过程可能会恶化为随机搜索。如果可以,您应该尝试从无效路径中获得一些有意义的信息(与二分法分类相反的无效性度量是很好的)。我也会尝试ACO方法,因为用遗传算法来表示你的问题可能很困难。事实上,我决定使用遗传算法,因为互联网上有很多论文提供了一些方法,可以从地图上的a点到B点,并使用遗传算法获得最佳路径。我的问题不同之处在于,我不一定想要最短路径。我想最大化路径覆盖的单元格中的wights,同时将路径的总长度保持在代理的最大范围内。根据问题中无效路径的数量,可能会导致适应环境变得极其参差不齐。搜索过程可能会恶化