Вот (потенциально) проблема.Отказ от ответственности, конечно, в том, что у вас может быть просто глючная программа.
Выбор колеса рулетки просто ужасен.Проблема в том, что на раннем этапе распределение значений пригодности является случайным.У вас есть несколько ужасных решений, и некоторые из них вполне приемлемы для сравнения.Вы не ожидаете, что какой-либо из них будет очень хорошим, но вы ожидаете, что некоторые из них будут намного лучше других.
Выбор колеса рулетки принимает эти относительные различия в вероятностях и усиливаетих.Если у вас численность населения 100 человек, и один человек имеет физическую форму в пять раз лучше, чем кто-либо другой, он будет выбираться в пять раз чаще.Как правило, с умеренными уровнями мутаций вы быстро попадаете в ситуацию, когда вы выбираете одного и того же особи дважды для рекомбинации, производите несколько новых идентичных потомков, вносите очень незначительные изменения (возможно), а затем возвращаете их в популяцию.Поскольку вы все еще в начале, большинство решений все еще плохие, поэтому, когда у вас было одно решение выше среднего, вы выбрали его в пять решений выше среднего, разобрали их, чтобы получить десять решений выше среднего, а затем запустили весь процесс.снова.Эти решения могут очень быстро захватить всю совокупность, если вы не очень осторожны в разработке набора операторов, хотя алгоритм знает только то, что они лучше, чем действительно дрянные решения, которые он когда-либо видел.
Решение состоит в том, чтобы использовать лучший оператор выбора.Выбор двоичного турнира происходит быстрее, его легче кодировать и он требует гораздо более терпимого выбора.Существует также выборка, основанная на ранге, которая выбирается пропорционально по рангу пригодности, а не по абсолютным различиям.
Редактировать : Нельзя сказать, что нельзя использовать пропорциональныйвыбор.Просто потому, что она очень склонна к преждевременной конвергенции и ее эффективному использованию, вам, как правило, приходится создавать целый набор операторов с учетом этого.