遗传算法选择和交叉问题

Dre*_*rew 2 genetic-algorithm

我已经使用自己的GA一段时间,我使用随机选择和精英(前10%左右)来获得50%的人口.然后我进行交叉以产生接下来的50%,然后进行突变.这听起来很奇怪,但它让我在我的问题上足以让我满意它.

我想开始使用更精细的选择方法,特别是排名选择.我也想采用交叉概率.

我的问题是:

  1. 在进行排名选择时,每个人只允许选择一次吗?
  2. 交叉后父母通常会发生什么?他们会被孩子取代还是他们也会进入下一代?

zeg*_*jan 5

  1. 在进行排名选择时,每个人只允许选择一次吗?

好吧,如果允许每个人只被选中一次,你就必须复制整个人口以形成新的人口.在排名选择中,您只需概率地选择与个人等级成比例的概率,并让机会决定是否或哪个人被复制更多次.

  1. 交叉后父母通常会发生什么?他们会被孩子取代还是他们也会进入下一代?

这取决于.如果你有一个所谓的世代方案,你总是生成一个全新的人口,完全取代旧的人口.这些新人口的成员来自这四个"来源":

  • 精英直接从父母群体中复制.
  • 从父母群体中选择的个体既不交叉也不突变(即直接复制).
  • 从父母群体中选择的父母的子女被交叉但未发生突变.
  • 父母的变异儿童,从父母群体中选出并越过.

另一方面,您可以拥有所谓的稳态方案.在这个方案中,在每次迭代中,你选择足够的个体来执行交叉,交叉它们(如果概率允许),改变它们(如果概率允许)然后你以某种方式将它们放回到原始群体中.这意味着有人必须被扔掉.这可能是父母或孩子(如果一个人比另一个人差)或根据您的替代策略成为人口的任意成员.你可以做例如"反向"选择,即以相反的方式选择概率(最差得到最高而最好达到最低).

最后一句话 - 在GA领域,你提出的几乎任何机制都可能适用于你的特定问题,或者可能不适用.你只需要尝试.毕竟这是一种随机方法.