遗传算法选择和交叉问题

时间:2015-06-22 20:00:15

标签: genetic-algorithm

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

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

我的问题是:

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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

  • 精英直接从父母群体中复制。
  • 从父母群体中选择的个体既没有交叉也没有变异(也就是直接复制)。
  • 从父母群体中选出的父母的孩子,他们被交叉但没有变异。
  • 从父母群体中选出并交叉过来的父母的变异儿童。

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

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