Как бороться с невыполнимыми людьми в алгоритме Geneti c? - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь оптимизировать тепловую электростанцию ​​c термоэкономическим способом, используя алгоритмы Geneti c. Создание популяции приводит меня к множеству невыполнимых индивидуумов (например: ValueErros, TypeError et c.). Я попытался использовать штрафные функции, но GA застрял в первых популяциях с возможной индивидуальной пригодностью, и он не развивается. Есть ли другой способ справиться с этим?

Буду признателен, если кто мне поможет. Заранее благодарю

Ответы [ 2 ]

0 голосов
/ 16 июля 2020

Возможно, вы захотите изучить Контроль разнообразия .

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

Наконец, что-то вроде выбора на основе ранга должно сделать поиск нечувствительным к выбросам, поэтому, когда ваша лучшая собака 200 на% лучше, чем другие, он не будет выбираться постоянно.

0 голосов
/ 04 июля 2020

Не позволяйте таким лицам попадать в состав населения. Это замедлит вашу конвергенцию, но вы гарантируете, что найденные решения в порядке.

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