【问题标题】:Simple GA very fast convergence简单 GA 非常快速的收敛
【发布时间】:2015-01-09 04:22:01
【问题描述】:

我正在尝试应用 GA 来解决一个问题并且有几个问题。

第一个问题是关于选择的——我在许多实现中看到人口是根据分数/适应度优先选择进行排序的。真的有必要吗?例如,在锦标赛选择中,个人应该被统一挑选,所以排序似乎没有任何意义。或者让我们考虑轮盘赌选择。使用以下实现再次排序似乎是不必要的(伪代码):

totalFitness = sum individuals i.fitness
rouletteValue = totalFitness * random 0.0 1.0
selected = null
i = 0;
while rouletteValue >= 0.0
  selected = individuals[i++]
  rouletteValue -= selected.fitness
return selected

那么真的有必要对人口进行排序以进行选择吗?

另一个问题是快速收敛:我正在尝试简单 GA,交叉概率为 0.9,变异概率为 0.01,种群大小为 30,初始种群包含“非常好的解决方案”(已知)。交叉总是产生两个后代,所以一个迭代如下(伪代码):

for i = 0 to population-size
    mother = select-one population
    while father != mother
        father = select-one population
    if should-crossover crossover-probability
        (sister, brother) = apply-crossover mother father 
    else
        sister = copy mother 
        brother = copy father 
    if should-mutate mutation-probability
       apply-mutation sister
    if should-mutate mutation-probability
       apply-mutation brother
    insert-at new-population i sister
    insert-at new-population i+1 brother
    i = i + 2
swap new-population population

也由于问题的性质,交叉几乎从来没有提供比父母更好的结果。

所以,粗略地说,发生的事情是因为“好的解决方案”比初始种群中的任何其他解决方案要好得多,它比其他个体更频繁地被选择用于繁殖(假设 30 个体的概率为 0.1)。如果不应用交叉(概率 0.1),那么“好的解决方案”将被转移到新的群体中。因此,由于人口规模为 30,平均交叉被跳过 1.5 对。因此,在 15 次迭代后,跳过了 22 次交叉。现在,由于“好解决方案”的选择概率为 0.1,那么在 22 次跳过的交叉之后,我将在新群体中插入 2 个“好解决方案”。发生这种情况后,“好的解决方案”会迅速扩散。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 在上面的算法中,被选中的个体从individuals中的位置0开始编号。因此,如果对该集合进行排序(最适合首先),它将选择一个随机数的最适合的个体。如果集合是未排序的(随机顺序),它将选择随机数量的随机个体。
  • 在最合适的解决方案上快速收敛有什么问题?
  • 关于选择前的排序 - 因为我们统一选择数字 0.05、0.5 和 0.99 是同样可能的,所以如果最适合的个人是第一个,这并不意味着它会被更频繁地选择。重要的是它占据了更大的范围,所以当我们多次选择它时,它有更多的机会被选中。例如,如果我有 3 个概率分别为 0.1、0.2 和 0.7 的人,那么哪个先走应该很重要 - 在选择了例如 10 个随机数之后,最后一个仍然会被更频繁地选择。
  • 无论如何,我想我已经找到了关于排序问题的答案 - stackoverflow.com/questions/10531565/…
  • 至于收敛 - 这很糟糕,因为解决方案仍然可以改进,我希望得到显着改进

标签: genetic-algorithm evolutionary-algorithm


【解决方案1】:

关于收敛问题 - 从您描述的参数来看,您正在收敛到您的种子已知良好解决方案,因为您的人口远远不够大。

假设您的种群的其余部分是随机生成的,那么这 29 个人将具有立即生成更适合的后代的任何组件的可能性极低。因此,再加上 10% 的无交叉机会,已知良好的个体将始终占据主导地位。

要通过 GA 生成比已知物品更适合的个体,您需要显着增加人口,并且可能还会增加交叉概率。您可能还需要削弱选择算法,以防止任何一个强大的个体主导任何给定世代的繁殖周期。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 2019-02-26
    • 2018-11-11
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多