При рассмотрении многоцелевой задачи целью является обычно , чтобы определить все решения, которые лежат на кривой Парето - оптимальном наборе Парето. посмотрите здесь для двумерного визуального примера . Когда алгоритм завершает работу, вам нужен набор решений, в которых не доминирует какое-либо другое решение. Поэтому вам необходимо определить механизм ранжирования по Парето, чтобы учесть обе цели - для более подробного объяснения, а также ссылки на еще более подробное чтение, иди сюда
Имея это в виду, для эффективного изучения всех решений вдоль фронта парето вам не нужна реализация, которая поощряет преждевременную конвергенцию , иначе ваш алгоритм будет исследовать пространство поиска только в одной конкретной области кривая Парето. Я бы реализовал оператор выбора, который сохраняет все члены оптимального набора решений каждой итерации, то есть все решения, в которых не доминирует другой + плюс процентный показатель, контролируемый параметром, других решений. Таким образом, вы поощряете исследования по всей кривой Парето.
Вам также необходимо убедиться, что операторы мутации и кроссовера также настроены правильно. При любом новом применении эволюционных алгоритмов часть проблемы состоит в попытке определить оптимальный набор параметров для проблемной области ... вот где это становится действительно интересным !!