Фитнес-обмен в многоцелевой оптимизации
Я пишу генетический алгоритм, который использует совместное использование фитнеса при выборе турнира. во всей соответствующей литературе, которую я нашел ( например, Сарени), упоминается, что собственную пригодность решения (Fi) следует разделить на сумму его нишевых расстояний (Mi).
Чего я не понимаю, так как мы оптимизируем несколько целей, то каждое решение имеет более одной пригодности. каков тогда его "фитнес" Fi? я должен видеть это как умножение всей его пригодности?
например, в коде я пишу (обработка):
float sharedFitnessA = (a.f2*a.f3) / nicheCountA;
Спасибо
N
1 ответ
Для многоцелевой оптимизации цель совместного использования пригодности (для распределения популяции по ряду различных пиков в пространстве поиска, причем каждый пик получает долю популяции пропорционально высоте этого пика) часто преследуется по-разному.
Когда два кандидата либо оба доминируют, либо оба не доминируют (так что, вероятно, они находятся в одном классе эквивалентности), подсчитывают нишу Mi
используется для выбора наиболее подходящего кандидата.
Например
(здесь максимизация по оси X и минимизация по оси Y)
Кандидаты не доминируют в наборе сравнения. С точки зрения Парето ни один из них не является предпочтительным. С помощью Mi
мы выбираем Candidate2 (наименьшее количество ниш и, следовательно, наименьшее количество людей в своей нише).
Это называется разделением классов эквивалентности и не основано на ухудшении физической формы (т.е. Fi / Mi
), но в любом случае сохраняет разнообразие вдоль фронта.
Для получения дополнительной информации взгляните на Многоцелевую Оптимизацию, Используя Генетический Алгоритм Niched Pareto Джеффри Хорна и Николаса Нафплиотиса (он также содержит некоторые детали реализации).