遗传算法选择与交叉题

Genetic algorithm selection and crossover questions

我使用自己的 GA 有一段时间了,我使用随机选择和精英主义(前 10% 左右)来获得 50% 的人口。然后我进行交叉以产生下一个 50%,当然随后是突变。这听起来很奇怪,但它已经让我对我的问题有了足够的了解,所以现在对它感到满意。

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

我的问题是:

  1. 排位选择时,每个人只能被选择一次吗?
  2. parents 交叉后通常会发生什么情况?它们会被 children 取代,还是会传给下一代?
  1. When doing ranked selection, is each individual only allowed to be selected once?

好吧,如果每个人只被允许 selected 一次,你将不得不复制整个群体来形成新的群体。在排名 selection 中,您只需根据概率与个人排名成正比的概率进行选择,然后让机会决定是否或哪个个人被复制更多次。

  1. What typically happens to the parents after crossover? Do they get replaced by children or do they also go onto the next generation?

视情况而定。如果你有一个 so-called 世代方案,你总是会产生一个全新的种群来完全取代旧的。这个新人口的成员来自这四个 "sources":

  • 直接从parent人口中复制的精英。
  • 来自 parent 人群的 select 个体既没有交叉也没有突变(即也直接复制)。
  • Children 的 parent 是 select 从 parent 种群交叉但未突变的 select。
  • 突变 children 的 parent 是 select 从 parent 人口中编辑并交叉的。

另一方面,您可以有一个 so-called 稳态方案。在这个方案中,在每次迭代中,你 select 刚好足够的个体能够执行交叉,将它们交叉(如果概率允许),对它们进行变异(如果概率允许),然后你以某种方式将它们放回原始种群.这意味着必须有人被扔掉。根据您的替换策略,这可能是 parent 或 children(如果一个比另一个差)或总体中的任意成员。你可以这样做"inversed" selection,即 selection 的概率相反(最差的概率最高,最好的概率最低)。

最后一点 - 在 GA 领域,几乎任何你想出的机制都可能适用于你的特定问题,也可能不适用。你只需要尝试。毕竟是随机方法