Возможно, вы захотите изучить Контроль разнообразия .
Теоретически недействительные индивидуумы могут содержать полезные / действительные фрагменты кода, и отбрасывать их только потому, что они содержат ошибку, расточительно. При контроле разнообразия ваша популяция группируется по разным видам на основе показателя сходства c (для древовидных структур это обычно расстояние редактирования), затем приспособленность каждого индивидуума «разделяется» с другими членами группы. В таком случае fitness = performance/group_size
. Обычно это делается для предотвращения преждевременной конвергенции и расширения исследования. группы, которые совершают ошибки, но менее многочисленны, станут более конкурентоспособными, продвигая вперед потенциально ценный материал.
Наконец, что-то вроде выбора на основе ранга должно сделать поиск нечувствительным к выбросам, поэтому, когда ваша лучшая собака 200 на% лучше, чем другие, он не будет выбираться постоянно.