Функция пригодности — это особый тип целевой функции , которая используется для обобщения, как единого показателя качества , того, насколько близко данное проектное решение к достижению поставленных целей. Функции пригодности используются в архитектуре программного обеспечения и эволюционных алгоритмах (EA) , таких как генетическое программирование и генетические алгоритмы, для руководства моделированием в направлении оптимальных проектных решений. [1]
Программисты знают, что им не следует выпускать плохой код, но этот приоритет конкурирует со многими другими приоритетами для занятых разработчиков. Вот почему им следует использовать функции пригодности, чтобы держать свое программное обеспечение под контролем. [2]
В области ЭА каждое проектное решение обычно представляется в виде строки чисел (называемой хромосомой ). После каждого раунда тестирования или моделирования идея состоит в том, чтобы удалить n худших проектных решений и вывести n новых из лучших проектных решений. Поэтому каждому проектному решению необходимо присвоить показатель качества, чтобы указать, насколько близко оно подошло к соответствию общей спецификации, и это генерируется путем применения функции пригодности к результатам теста или моделирования, полученным из этого решения. [3]
Существуют два основных класса функций приспособленности: один, где функция приспособленности не меняется, как при оптимизации фиксированной функции или тестировании с фиксированным набором тестовых случаев; и один, где функция приспособленности изменчива, как при дифференциации ниши или совместной эволюции набора тестовых случаев. [4] [5] Другой способ рассмотрения функций приспособленности — с точки зрения ландшафта приспособленности , который показывает приспособленность для каждой возможной хромосомы. В дальнейшем предполагается, что приспособленность определяется на основе оценки, которая остается неизменной во время прогона оптимизации.
Функция приспособленности не обязательно должна иметь возможность вычислять абсолютное значение, так как иногда достаточно сравнить кандидатов, чтобы выбрать лучшего. Относительное указание приспособленности (кандидат a лучше, чем b) достаточно в некоторых случаях, [6] таких как турнирный отбор или оптимизация Парето .
Качество оценки и расчета функции приспособленности имеет основополагающее значение для успеха оптимизации EA. Она реализует принцип Дарвина «выживает наиболее приспособленный». Без механизмов отбора на основе приспособленности для выбора партнера и принятия потомства поиск EA был бы слепым и едва ли отличимым от метода Монте-Карло . При настройке функции приспособленности всегда нужно осознавать, что речь идет не только о описании желаемого целевого состояния. Напротив, эволюционный поиск на пути к оптимуму также должен поддерживаться в максимально возможной степени (см. также раздел о вспомогательных целях), если и в той мере, в какой это еще не сделано одной функцией приспособленности. Если функция приспособленности спроектирована плохо, алгоритм либо сойдется к неподходящему решению, либо вообще столкнется с трудностями при сходимости.
Определение функции пригодности во многих случаях не является простым и часто выполняется итеративно, если наиболее подходящие решения, созданные EA, не являются желаемыми. Интерактивные генетические алгоритмы решают эту проблему, передавая оценку внешним агентам, которыми обычно являются люди.
Функция пригодности должна не только тесно коррелировать с целью проектировщика, но и быть вычислительно эффективной. Скорость выполнения очень важна, поскольку типичный генетический алгоритм должен быть повторен много раз, чтобы получить пригодный для использования результат для нетривиальной проблемы.
Аппроксимация пригодности [7] [8] может быть уместной, особенно в следующих случаях:
В качестве альтернативы или также в дополнение к приближению пригодности, вычисления пригодности также могут быть распределены на параллельный компьютер, чтобы сократить время выполнения. В зависимости от модели популяции используемого EA, как сам EA, так и вычисления пригодности всех потомков одного поколения могут выполняться параллельно. [10] [11] [12]
Практические приложения обычно направлены на оптимизацию множественных и, по крайней мере, частично конфликтующих целей. Для этой цели часто используются два принципиально разных подхода: оптимизация Парето и оптимизация на основе приспособленности, рассчитанной с использованием взвешенной суммы . [13]
При оптимизации с помощью взвешенной суммы сначала нормализуются отдельные значения целей, чтобы их можно было сравнить. Это можно сделать с помощью затрат или путем указания целевых значений и определения текущего значения как степени выполнения. Затем затраты или степени выполнения можно сравнить друг с другом и, при необходимости, также можно сопоставить с единой шкалой приспособленности. Без потери общности предполагается, что приспособленность представляет собой значение, которое необходимо максимизировать. Каждой цели присваивается вес в виде процентного значения, чтобы общая сырая приспособленность могла быть рассчитана как взвешенная сумма:
Нарушение ограничений может быть включено в приспособленность, определенную таким образом, в форме штрафных функций . Для этой цели можно определить функцию для каждого ограничения, которая возвращает значение между и в зависимости от степени нарушения, с результатом, если нарушения нет. Ранее определенная сырая приспособленность умножается на штрафную функцию(и), и результатом затем является окончательная приспособленность : [14]
Этот подход прост и имеет преимущество в возможности объединения любого количества целей и ограничений. Недостатком является то, что разные цели могут компенсировать друг друга, и что веса должны быть определены до оптимизации. [13] Кроме того, некоторые решения могут не быть получены, см. раздел о сравнении обоих типов оптимизации .
Решение называется оптимальным по Парето, если улучшение одной цели возможно только при ухудшении хотя бы одной другой цели. Набор всех оптимальных по Парето решений, также называемый набором Парето, представляет собой набор всех оптимальных компромиссов между целями. На рисунке ниже справа показан пример набора Парето из двух целей и , которые необходимо максимизировать. Элементы набора образуют фронт Парето (зеленая линия). Из этого набора человек, принимающий решения, должен впоследствии выбрать желаемое компромиссное решение. [13] Ограничения включены в оптимизацию Парето, поскольку решения без нарушений ограничений по сути лучше, чем те, которые имеют нарушения. Если два сравниваемых решения имеют нарушения ограничений, решающим фактором является соответствующая степень нарушений. [15]
На раннем этапе было признано, что ЭА с их одновременно рассматриваемым набором решений хорошо подходят для поиска решений за один запуск, которые достаточно хорошо покрывают фронт Парето. [15] [16] Помимо SPEA2, [17] в качестве стандартных методов зарекомендовали себя NSGA-II [18] и NSGA-III [19] [20] .
Преимущество оптимизации Парето в том, что, в отличие от взвешенной суммы, она предоставляет все альтернативы, которые эквивалентны с точки зрения целей, как общее решение. Недостаток в том, что визуализация альтернатив становится проблематичной или даже невозможной, начиная с четырех целей. Более того, усилия увеличиваются экспоненциально с числом целей. [14] Если целей больше трех или четырех, некоторые из них необходимо объединить с помощью взвешенной суммы или других методов агрегации. [13]
С помощью взвешенной суммы общий фронт Парето может быть получен путем подходящего выбора весов, при условии, что он выпуклый . [21] Это иллюстрируется соседним рисунком слева. Точка на зеленом фронте Парето достигается весами и , при условии, что ЭА сходится к оптимуму. Направление с наибольшим приростом приспособленности в наборе решений показано нарисованными стрелками.
Однако в случае невыпуклого фронта невыпуклые фронтальные секции не достижимы с помощью взвешенной суммы. На соседнем изображении справа это секция между точками и . Это можно исправить в ограниченной степени, используя расширение взвешенной суммы, каскадную взвешенную сумму . [14]
Сравнивая оба подхода к оценке, использование оптимизации Парето, безусловно, выгодно, когда мало что известно о возможных решениях задачи и когда число целей оптимизации можно сузить до трех, максимум четырех. Однако в случае повторной оптимизации вариаций одной и той же задачи желаемые линии компромисса обычно известны, и усилия по определению всего фронта Парето больше не оправданы. Это также верно, когда после оптимизации нежелательно или невозможно человеческое решение, например, в автоматизированных процессах принятия решений. [14]
В дополнение к основным целям, вытекающим из самой задачи, может потребоваться включить в оценку вспомогательные цели для поддержки достижения одной или нескольких основных целей. Пример задачи планирования используется для иллюстрации. Цели оптимизации включают не только общую быструю обработку всех заказов, но и соблюдение самого позднего времени завершения. Последнее особенно необходимо для планирования срочных заказов. Вторая цель не достигается примерным начальным графиком, как показано на соседнем рисунке. Последующая мутация не меняет этого, но планирует рабочий шаг d раньше, что является необходимым промежуточным шагом для более раннего начала последнего рабочего шага e заказа. Однако, пока оценивается только самое позднее время завершения, пригодность измененного графика остается неизменной, хотя он представляет собой важный шаг к цели своевременного завершения заказа. Это можно исправить, например, путем дополнительной оценки задержки рабочих шагов. Новая цель является вспомогательной, поскольку она была введена в дополнение к фактическим целям оптимизации для поддержки их достижения. Более подробное описание этого подхода и другой пример можно найти в [22] .
{{cite book}}
: |work=
проигнорировано ( помощь )