【问题标题】:Genetic Algorithm - Parent Selection vs. Crossover Probability遗传算法 - 父母选择与交叉概率
【发布时间】:2019-05-26 10:28:12
【问题描述】:

我阅读了关于TutorialsPointthis question and answer on StackOverflow 的教程。但是,我仍然不明白遗传算法的父选择和交叉过程中交叉概率的含义。

假设我的人口规模为 100,交叉概率为 0.9。这是什么意思?我:

  • 精确选择 10 个父母(因为 90 % 的后代应通过交叉产生),或
  • 运行 RNG 100 次,每次 0.9 概率失败时,我选择一个父节点?

然后,父母不知何故交叉,一些人发生了变异。此时人口是否需要正好有 100 名成员,还是需要额外选择哪些人可以传给下一代?

【问题讨论】:

  • 精确的定义以及它们的实现方式并不真正重要,除非您尝试遵守精确的规范。关键是随机交叉父母。你如何实现这一点并不重要。尝试几种方法。

标签: genetic-algorithm


【解决方案1】:

不完全是 10 个父母,平均有 10 个父母。 以下是我遵循的伪代码。

current_population <- comes from previous generation
new_population <- []

for i upto number of chromosomes in current_population :
    parent1, parent2 <- pick 2 parents from current population based on fitness function

    if random_number is less than cross_over_ratio :
        offspring <- crossover (parent1, parent2)
    else:
        if random_number is 0.5:
            offspring <- parent1
        else:
            offspring <- parent2

    append the offspring to new_population

for i upto number of chromosomes in new_population :

    if random_number is less than mutation_ratio :
        i_th chromosome in new_population <- mutation (i_th chromosome in new_population)

【讨论】:

    【解决方案2】:

    正如 Carcingenicate 所述,实施方式可能会有所不同。 0.90 的交叉率表示 90% 的后代或子群将通过对父解的交叉操作创建。这可能会被实现,这样 90% 的孩子是通过每一代交叉产生的,或者它可以概率性地实现(如 AI_Learning 的示例中所做的那样)。交叉产生的孩子可能也可能不会发生突变。

    如何选择父解决方案也可能有所不同。可能更适合的父母解决方案更有可能被选择来产生后代,并且产生的任何后代都将构成下一代的父母群体。或者,可以随机选择父解决方案来产生后代。然后对组合的父代和后代种群进行选择,以创建下一代的父代种群。

    一般来说,父种群总是等于规定的种群规模。但是,有可能产生更多的后代,然后只选择一个子集。或者每一代可能只创建几个后代,每个后代都可能替换一个父解决方案。一些实现还可能随着时间的推移改变人口规模,可能最初使用大量人口来促进探索,然后随着时间的推移减少人口规模以促进利用。

    【讨论】:

      猜你喜欢
      • 2012-12-10
      • 2016-09-05
      • 2011-02-22
      • 2012-06-02
      • 2014-02-07
      • 2011-10-11
      • 2020-10-14
      • 2014-08-12
      相关资源
      最近更新 更多