Насколько этот алгоритм соответствует выбору колеса рулетки? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь реализовать выбор колеса рулетки.Я понял этот алгоритм:

  1. Рассчитать сумму S всех хромосомных приспособлений в популяции
  2. Создать случайное число r из интервала (0, S)
  3. Переберите население и суммируйте значения от 0 до S, это частичная сумма, назовите ее P.
  4. Когда P> S: остановите и верните соответствующую хромосому.

Что я не понимаю, так это то, как это соответствует: Алгоритм выбора колеса рулетки (ответ с 44 голосами).Это имеет смысл для меня, но не тот, что выше.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Следующее выполняется с использованием суммы

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]
0 голосов
/ 13 февраля 2019

В ответе с 44 голосами диапазон был нормализован между 0 и 1, что проще для понимания, но требует дополнительных шагов для расчетов.

Вы можете реализовать упомянутый вами подход.При этом при расчете суммы каждая отдельная хромосома добавляет свою собственную value, поэтому, когда случайное число генерируется между 0 и S, мы предполагаем, что если r находится между 2 числами, диапазон которых равен вышеупомянутому value, товыбирается с вероятностью, пропорциональной значению его пригодности.Чем больше значение, тем больше вероятность того, что r попадет в его диапазон.

Например, предположим, что хромосома, имеющая приспособленность 23 (предположение), является 5-й хромосомой, когда вы выполняете итерацию, и общей суммойS равно 130. Сумма первых 4 хромосом, скажем, 54. Поэтому, если random r находится между 55 и 77 (оба включительно), эта хромосома выбрана.

После нормализации 55/130~ = 0,423 и 77/130 ~ = 0,5923 - это диапазон, в котором случайное число r2 (от 0 до 1) должно падать для выбора этой хромосомы.

...