【问题标题】:How is a genetic algorithm with only selection and mutation same as a hill climbing algorithm?只有选择和变异的遗传算法与爬山算法有何相同之处?
【发布时间】:2016-10-30 23:20:13
【问题描述】:

考虑一个仅使用选择和变异(无交叉)的遗传算法。这与爬山算法有何相似之处?

我在article 中找到了这句话,但我似乎不明白为什么?

【问题讨论】:

  • @squeamishossifrage 。谢谢你。我认为这回答了我的问题
  • @NihalRp 为什么你只想使用突变而不使用交叉?

标签: algorithm artificial-intelligence genetic-algorithm hill-climbing


【解决方案1】:

这种说法是有风险的,很难看到。我相信很多人不一定(或完全)同意它。

可能是真的情况

我相信这句话的作者想说的是,可以只使用变异和选择来实现爬山算法。

想象一下,您的染色体 (X) 的每个突变都会提高或降低您的适应度函数 (Y) 的值(想象一下它是身高)。我们想找到 Y 最大的 X。

  1. 我们将染色体 (X) 群放入我们的池中
  2. 我们突变染色体 (X) 并寻找 (Y) 的改进。
  3. 突变后SELECT仅产生最高 (Y) 的染色体并重复步骤 1-2 20 次。

因为在每个阶段你都在拒绝糟糕的值 - 你将能够获得(接近)Y 的最大值。

我想这就是作者想要表达的意思。

可能为假的情况

当突变在很大程度上影响染色体时 - 算法不会轻易收敛到最大值。这是当染色体中的太多基因在每次突变时受到影响时;

当突变后的染色体与其原始基因组不相似时 - 你只是在引入噪音。在效果上,它有点像使用 (X) 的随机生成器来找到最大值 (Y)。每次你变异 (X) 时,你都会得到一些与原来无关的东西。 您可能会找到最大值,但它与爬山无关。

【讨论】:

    【解决方案2】:

    没有交叉的爬山算法和遗传算法都是局部搜索技术。从这个意义上说,它们是相似的,但我不会说它们是相同的。

    爬山有不同的形式,但都有一些遗传算法没有的属性:

    • 有一个定义明确的邻居函数(给定一种解决方案可以枚举所有邻居)
    • 除非取消,只要发现改进,算法就会继续运行(而不是在固定代数之后)
    • 在迭代过程中,只有一个解(不是解池)

    在实践中,选择一个好的邻域函数会对爬山算法的有效性产生巨大影响。在这里,您有时可以使用额外的领域知识。

    据我所知,在遗传算法中,领域知识不用于变异器。大多数情况下,他们使用简单的技术,例如flipping bits or adding random noise to numbers

    爬山可以作为一种没有任何随机性的确定性算法很好地工作。根据您的问题,这可能是关键属性,也可能不是。如果不是,那么随机重启爬山通常会带来更好的结果。

    总之,如果你使用没有交叉的遗传算法,你最终会得到一个相当糟糕的局部搜索算法。我希望一个好的爬山算法能够胜过它,尤其是在您处于严格时间限制(实时系统)的情况下。

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 2012-07-07
      • 2021-12-28
      • 2014-07-24
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2021-11-04
      相关资源
      最近更新 更多