首页 > 解决方案 > 这个算法如何对应轮盘赌的选择?

问题描述

我正在尝试实现轮盘赌选择。我已经理解了这个算法:

  1. 计算种群中所有染色体适应度的总和 S
  2. 从区间 (0,S) 生成一个随机数 r
  3. 从 0 到 S 循环遍历种群和适应度,这是部分和,称为 P。
  4. 当P > S:停止并返回对应的染色体。

我不明白这与这样做有何对应:轮盘赌选择算法 (44 票的答案)。这对我来说很有意义,但不是上面的那个。

标签: genetic-algorithmroulette-wheel-selection

解决方案


以下是使用 sum 完成的

def choose_parent_using_RWS(genes, S, points):
    P = randint(0, int(S))
    for x in genes:
        P += evaluate(x, points)
        if P > S:
            return x
    return genes[-1]

以下是通过在 0 和 1 之间进行归一化来完成的

def choose_parent_using_RWS(genes, S, points):
    P = randint(0, int(S))/S
    for x in genes:
        P += evaluate(x, points)/S
        if P > S/S:
            return x
    return genes[-1]

推荐阅读