Преподаватель кафедры ИВТ Семигузов Д.А.

advertisement
Эволюционные алгоритмы
Автор: Семигузов Д.А.
Аннотация: В лекции рассматриваются алгоритмы решения задач оптимизации на
основе механизмов, используемых в природе, таких как естественный отбор, селекция и
репродукция.
Эволюционные методы вычислений возникли в результате наблюдения и попыток
копирования процессов происходящих в среде живых организмов. Они основаны на идее
селекции
живых
существ
по
принципу
естественного
отбора.
Эволюционное
программирование является модификацией генетических алгоритмов для решения задач
оптимизации.
Генетический алгоритм – это процедура поиска в пространстве решений некоторой
задачи, где в качестве эвристических правил используется механизм естественного отбора, а
в качестве операций над множествами решений – модели естественных биологических
процессов, таких как скрещивание и мутация.
Основные идеи генетических алгоритмов высказал американский ученый Джон
Холланд в начале 70-х годов 20 века. Он отмечал тот факт, что в процессе эволюции
подвергаются не сами живые существа, а их хромосомы. Он предложил решать сложные
задачи, так как это делает природа – путем эволюции. Для этого решение задачи
представляется в виде последовательности двоичных цифр, которая получила название
хромосома. Алгоритм, манипулирующий такими хромосомами, имеет механизмы селекции и
репродукции. Алгоритм осуществляет поиск лучших хромосом, не имея информации о
решаемой задаче, только на основании некоторой оценки каждой хромосомы, отражающей
ее приспособленность. Репродукция новых хромосом осуществляется путем рекомбинации
частей более приспособленных хромосом.
Для решения какой-либо задачи необходимо ее возможные решения (фенотипы)
закодировать в виде хромосом (генотипы) – наборов двоичных цифр. Например, если
требуется найти оптимальную последовательность действий, каждое действие нумеруется
двоичным числом, а любая последовательность действий будет представлена как хромосома,
состоящая из номеров этих действий. Кроме того для данной задачи необходимо задать
функцию приспособленности (фитнесс-функция), которая будет получать в качестве
параметра хромосому, и выдавать в качестве значения некоторое число, которое тем больше,
чем решение закодированное с помощью хромосомы окажется оптимальней. Также может
быть задано значение функции приспособленности, при котором решение считается
достигнутым.
Операции над хромосомами в процессе репродукции предполагают изменение части
хромосомы. Наиболее важна для работы алгоритма операция скрещивания (кроссинговер).
Скрещивание представляет собой обмен частями двух хромосом. Оно может быть
однопозиционным, когда в хромосоме выбирается случайным образом номер позиции,
начиная с которой в хромосому копируется содержимое другой хромосомы. Так, например,
если скрестить две хромосомы 011100 и 110001 начиная с позиции 3, то в результате
получим две хромосомы 010001 и 111100. При многопозиционном скрещивании задается
последовательность позиций в хромосоме, в которых начинается и заканчивается обмен
генами. Поскольку хромосома кодирует решение задачи, обмен частями хромосом
предполагает вероятность получить новую хромосому, содержащую более хорошее решение,
чем ее предки, получив от каждого из них лучшие части решения.
Другими, часто используемыми, генетическими операциями являются мутация и
инверсия. Мутация – это операция изменения в хромосоме значения одного разряда на
противоположное в случайно взятой позиции. Например, мутация хромосомы 100011 в
позиции 4 дает нам хромосому 100111. Инверсия осуществляет циклический сдвиг в
хромосоме на один или более разрядов. Примером инверсии хромосомы 010011 на 1 разряд
вправо будет хромосома 101001.
Классический генетический алгоритм представлен на рисунке 1. В начале алгоритма
генерируется
случайным
образом
популяция
хромосом,
которые
представляют
закодированные решения. Количество хромосом в популяции может варьироваться и обычно
достигает несколько десятков. Далее для каждой хромосомы вычисляется значение функции
приспособленности и проверяется условие завершения алгоритма. В качестве условия
завершения может быть достижение определенного значения функции приспособленности,
если оно задано. Также алгоритм может завершаться, когда на протяжении нескольких
популяций
максимальное
значение
функции
приспособленности
в
популяции
не
увеличивается. Если условие выполнено, выбирается хромосома с лучшим значением
функции приспособленности и декодируется в фенотип, иначе происходит репродукция
новой популяции. Для репродукции новой популяции проводится селекция среди текущей
популяции по значению функции приспособленности. Наиболее популярен «метод
рулетки», в котором каждой хромосоме сопоставляется сектор рулетки, величина (угол)
которого пропорциональна значению функции приспособленности. После чего используются
случайные числа, которые моделируют попадание в какой-либо сектор рулетки, и
хромосому, сопоставленную этому сектору выбирают для репродукции. Очевидно, что
хромосомы с большими значениями функции приспособленности могут дублироваться в
выборке, а с малыми вообще не попасть в нее.
Рис. 1. Генетический алгоритм
Применение генетических операций скрещивания, мутации и инверсии происходит
последовательно, при этом скрещиванию подвергается большая часть выборки, а мутации и
инверсии обычно менее 10% от нее. Из хромосом, полученных в результате генетических
операций, формируется новая популяция с числом хромосом равным начальной популяции.
Генетические алгоритмы отличаются от традиционных методов оптимизации тем, что
используют вероятностные, а не детерминированные правила выбора и используют поиск
решения не из одной точки, а из некоторой популяции. Оптимизация целевой функции
достигается использованием операции скрещивания, которая комбинирует новые решения из
лучших на текущем шаге, а другие генетические операции, такие как мутация и инверсия,
позволяют алгоритму вырваться из областей локального минимума.
Эволюционное программирование отличается от генетических алгоритмов тем, что
оперирует не двоичными векторами, а вещественными. Кроме того в эволюционном
программировании при репродукции новой популяции в нее могут войти наиболее
приспособленные особи из предыдущей популяции. Эволюционное программирование и
генетические алгоритмы имеют общее название эволюционные алгоритмы.
Эволюционные
алгоритмы
применяются
в
задачах
оптимизации,
позволяя
оптимизировать функцию с большим количеством переменных, благодаря механизму
естественного отбора. Также генетические алгоритмы полезны для задач, наилучшее
решение которых возможно получить только при полном переборе всех решений. Например,
задача коммивояжера и задача составления расписания. При этом наилучшее решение может
быть не достигнуто, но будет достигнуто приемлемое решение, которое можно в дальнейшем
улучшить с помощью детерминированных алгоритмов.
Download