Историческая справка.
Одним из методов нахождения экстремумов сложных функций сегодня есть генетические алгоритмы
(ГА). ГА есть одной из составляющих эволюционного моделирования как научного направления, базирующегося
на принципах природного отбора по Ч. Дарвину (см. напр. [1,2]). Генетический алгоритм впервые
был предложен в 1975 году в Мичиганском университете John Holland [3] (Джоном Холландом). Он получил
название репродуктивный план Холланда и в дальнейшем активно использовался в качестве базового
алгоритма в эволюционных вычислениях. Дальнейшее развитие ГА, как собственно и свое название,
получили в работах Goldberg D.E. (Гольдберга) в лаборатории ГА Иллинойса, De Jong K.A. (Кеннет
Де Йонг) в университете Джорджа Мейсона, Вирджиния и их учеников. Ссылки на их работы, а также
работы других ученых приведены здесь>>>.
Базовый алгоритм. Рассмотрим
базовый ГА [3,4]. Я переписал его с сайта лаборатории BaseGroup. Адрес здесь>>>.
- Инициировать начальный момент времени t=0. Случайным
образом сформировать начальную популяцию, состоящую из k особей. B0 = {A1,A2,…,Ak)
- Вычислить приспособленность каждой особи
FAi = fit(Ai) , i=1…k и популяции в целом Ft = fit(Bt)
(также иногда называемую термином фиттнес). Значение этой функции определяет насколько
хорошо подходит особь, описанная данной хромосомой, для решения задачи.
- Выбрать особь Ac из популяции. Ac
= Get(Bt)
- С определенной вероятностью (вероятностью кроссовера
Pc) выбрать вторую особь из популяции Аc1 = Get(Bt) и произвести
оператор кроссовера Ac = Crossing(Ac,Ac1).
- С определенной вероятностью (вероятностью мутации
Pm) выполнить оператор мутации. Ac = mutation(Ac).
- С определенной вероятностью (вероятностью инверсии
Pi) выполнить оператор инверсии Ac = inversion(Ac).
- Поместить полученную хромосому в новую популяцию
insert(Bt+1,Ac).
- Выполнить операции, начиная с пункта 3, k раз.
- Увеличить номер текущей эпохи t=t+1.
- . Если выполнилось условие останова, то завершить
работу, иначе переход на шаг 2.
Для того, кому этот алгоритм знаком, он полностью прозрачен.
Для того, кто видит его впервые, я приведу основные понятия и постановку задачи, для решения которой
он может быть использован.
Пусть S - некоторая система или процесс. Ее атрибутами есть
X - вектор входных и внутренних параметров, Y - вектор выходных переменных. Пусть закон
Y=f(X) идентифицирован (об этом мы поговорим позже) и зависимость f достаточно сложная.
Известны также пределы возможных изменений составляющих вектора X. Необходимо найти такие значения
вектора X, чтобы значение Y было оптимальным.
Я не хочу сказать, что такая задача неразрешима другими методами,
но в случае достаточно сложной, возможно разрывной, полиэкстремальной функции f думаю,
что сделать это очень и очень сложно. Впрочем, можно обсуждать.
Как решается задача с использованием ГА? Функция f называется
фитнесс-функцией. Возможные значения элемента вектора X есть его фенотипом. Двоичное представление
фенотипа есть генотип (напр. 12,345->100011). Генотип имеет определенное количество элементов
(об этом позже). Один или несколько генотипов (по количеству элементов X) представляют хромосому.
Кроссовером называют деление двух хромосом и обмен частями (напр. 1100 и 1010 ->1110 и 1000).
Мутация - инвертирование одного из элементов хромосомы (напр. 0000->0100). Инверсия - изменение
порядка следования частей хромосомы (напр. 1100->0011).
Продолжение в следующем выпуске.