Выбор родителей в выборе турнира - PullRequest
2 голосов
/ 08 февраля 2012

Я пишу ГА, и я не уверен, что при выборе родителей я должен пройтись по моей популяции, находя каждого родителя, используя выбор турнира, или я должен найти двух родителей, используя выбор тура для каждого решения в моем населении.

Какой это?

1 Ответ

4 голосов
/ 08 февраля 2012

Мне не очень понятно, что вы подразумеваете под разницей между вашими предлагаемыми альтернативами, но в целом, способ, которым это работает, заключается в том, что вы выбираете двух случайных людей, выбираете лучшего, и это становится Родителем № 1. Затем вы выбираете еще двух случайных людей, оставляете лучшего, и он становится родителем №2. Затем эти два родителя рекомбинируют, чтобы произвести потомство, которое попадает в детскую популяцию. Повторяйте, пока у вас не будет достаточно потомства.

Таким образом, вы генерируете детскую популяцию, используя что-то вроде следующего цикла. (Вы можете создать несколько потомков на группу родителей ... отрегулируйте границы цикла в соответствии с вашей ситуацией).

for i = 1 to N 
    pick individual t1 at random from parent population
    pick individual t2 at random from parent population
    parent1 = winner(t1, t2)

    pick individual t1 at random from parent population
    pick individual t2 at random from parent population
    parent2 = winner(t1, t2)

    generate offspring from parent1, parent2
    mutate offspring
    evaluate offspring
    add offspring to child population
end for
...