Дублирование доминирующих родителей при использовании детерминированных c Crowding в Geneti c Алгоритм - PullRequest
0 голосов
/ 11 февраля 2020

Это псевдокод для использования детерминированного c краудинга:

for i from 0 to N/2
     p1, p2 = select_two_random_individual()
     c1, c2 = crossover(p1, p2)

     c1 = mutate(c1)
     c2 = mutate(c2)

     if((d(p1, c1) + d(p2, c2)) < (d(p1, c2) + d(p2, c1))
          population.add(Winner between p1 and c1)
          population.add(Winner between p2 and c2)
     Else
          population.add(Winner between p1 and c2)
          population.add(Winner between p2 and c1)

Который d является функцией, которая определяет разницу между двумя индивидуумами.

Вопрос в том, что произойдет, если человек будет выбран два раза в качестве родителя и выиграет у своего ребенка оба раза? Получу ли я в конечном итоге двойное лицо в новой популяции?

1 Ответ

0 голосов
/ 17 февраля 2020

Да, нередко встречаются повторяющиеся люди в популяции. На самом деле ожидается, что в какой-то момент все решения будут сходиться к оптимальному, в этом случае все решения в совокупности одинаковы. Это проблема только при преждевременной конвергенции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...