Ну, вы можете взвесить вероятности в соответствии со значением, возвращенным путем передачи каждого
член населения к функции стоимости .
Это кажется мне наиболее простым способом, совместимым с генетическим
мета-эвристического.
Более распространенным является разделение текущего населения на сегменты, основанные на
значение, возвращаемое от передачи их функции стоимости.
Так, например,
если каждое поколение состоит из 100 членов, то верхний N (N просто определяется пользователем
параметр, часто что-то около 5-10% от общего числа) членов с наименьшей стоимостью
результат функции) передаются следующему поколению такими, какие они есть (элитарность).
Возможно, это то, что вы подразумеваете под «выжить». Если так, то снова эти «выжившие»
определяются путем ранжирования членов населения в соответствии с функцией стоимости
значение и выбор тех членов выше вашей определенной константы доли элитарности.
Остальные (большинство) следующего поколения создаются либо
мутация или кроссинговер.
Мутация :
# one member of the current population:
[4, 5, 1, 7, 4, 2, 8, 9]
# small random change in one member of prior generation, to create mutant that is
# a member of the next generation
[4, 9, 1, 7, 4, 2, 8, 9]
Кроссовер
# two of the 'top' members of the current generation
[4, 5, 1, 7, 4, 2, 8, 9]
[2, 3, 6, 9, 2, 1, 6, 4]
# offpsring is a member of the next generation
[4, 5, 1, 7, 2, 1, 6, 4]