Это псевдокод для использования детерминированного 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
является функцией, которая определяет разницу между двумя индивидуумами.
Вопрос в том, что произойдет, если человек будет выбран два раза в качестве родителя и выиграет у своего ребенка оба раза? Получу ли я в конечном итоге двойное лицо в новой популяции?