2007
НАУЧНЫЙ ВЕСТНИК МГТУ ГА Серия Прикладная математика. Информатика
№ 120
УДК 519.8
МОДИФИЦИРОВАННЫЙ ГЕНЕТИЧЕСКИЙ АЛГОРИТМ УСЛОВНОЙ ОПТИМИЗАЦИИ С БИНАРНЫМ КОДИРОВАНИЕМ
А.В. ПАНТЕЛЕЕВ, Н.П. АПОСТОЛ
Рассмотрен процесс решения задачи условной оптимизации функции многих переменных с помощью генетического алгоритма с бинарным кодированием. Разработана детальная методика его применения.
1. Постановка задачи
Дана целевая функция / (х) = / (х^ х2,..., хп ), определенная на множестве допустимых решений Б с Яп . Требуется найти глобальный условный максимум целевой функции (ЦФ) /(х) на множестве Б, т.е. такую точку х*е Б , что
/ ( х*) = тах / ( х),
хеБ
т
где х = (х1,х2,...,хп) , Б = {х | х[ е [а., ], . = 1,2,...,п}.
2. Стратегия поиска решения
Поясним основную идею генетических алгоритмов (ГеА) и используемые термины.
ГеА имитируют природные способы оптимизации: генетическое наследование и естественный отбор. При этом в упрощенном виде сохраняется биологическая терминология. Суть механизма естественного отбора в том, что в ходе эволюции выживают и размножаются наиболее приспособленные особи. Благодаря механизму генетического наследования, потомки сохраняют основные качества родителей, а, подвергаясь случайным мутациям, приобретают и ряд новых свойств. Если новые свойства полезны, то они также сохраняются и наследуются. Средняя приспособленность особи с каждым поколением при этом будет расти.
Исследуемая целевая функция /(х) эквивалентна природному понятию приспособленности
т
живого организма. Вектор параметров х = (х^х2,...,хп) ЦФ называют фенотипом, отдельные
т
параметры х[ - признаками, . = 1,2,...,п. Каждый вектор х = (хрх2,...,хп) е Б является возможным решением поставленной оптимизационной задачи.
Известно, что любой живой организм может быть представлен своим генотипом и фенотипом. Генотип - это совокупность наследственных признаков, информация о которых заключена в хромосомном наборе, а фенотип - совокупность всех признаков и свойств организма, формирующихся в процессе взаимодействия его генотипа и внешней среды. Каждый ген имеет свое отражение в фенотипе. ГеА ведут поиск решения только на уровне генотипа. Каждую коорди-
т
нату х( вектора х = (хх,х2,...,хп) е Б представляют в некоторой форме я., удобной для использования в Г еА и называемой геном. Для этого необходимо осуществить преобразование, в
т
общем случае не взаимно однозначное, вектора х = (х^х2,...,хп) е Б в некоторую структуру
я = ($1,52,..., яп)т е Я , называемую хромосомой (генотипом, особью): Б —-® Я , где е - функция кодирования, Я - конечное пространство представлений (как правило, Б Ф Я ). Для того чтобы уметь восстановить по хромосоме решение, необходимо задать обратное преобразова-
е-1 _1
ние: Я —е ® Б, где е - функция декодирования.
В пространстве S вводится так называемая функция приспособленности m(s), аналогичная
ЦФ: f (х) на множестве D : S —R, где R - множество вещественных чисел. Это любая
12 1 12 2 12 функция, удовлетворяющая условию: "х , х е D : s = e(х ), s = e(х ), s ф s , если
12 12 * f (х ) > f (х ) , то m(s ) > m(s ) . Тогда решение исходной задачи f (х ) = max f (х) сводится к
хеD
*
поиску решения s * другой задачи оптимизации: ju(s ) = max ju(s) . Затем осуществляется об-
seS
ратное преобразование: х* = e_1(s*) .
Используются конечные наборы I = {sk = (s^,s^,...,sП)T , k = 1,2,...,m}c S возможных ре-
~ k j k
шений, называемые популяциями, где s - хромосома с номером k, m - размер популяции, sf -
ген с номером i. Применение ГеА сводится к исследованию множества S при переходах от одной популяции к другой. Из условия задания функции приспособленности следует, что чем
больше значение jLl(sk), тем более подходит хромосома sk как решение.
Существуют различные способы задания функции приспособленности:
а) в самом простом случае достаточно положить m(s) = f (e_1(s));
б) в некоторых случаях (см. далее виды операторов, используемых в ГА) бывает необходимо, чтобы функция m(s) принимала только положительные значения. Тогда функцию приспособленности можно представить, например, в одном из следующих видов:
m( і1' )=f (xk) +
min f (x )
k=1,2,...,m
+1 или m(ik ) = (f (xk ) - min f (xk ) +1)2, xk = e l(sk ).
k=1,2,...,m
3. Процедуры кодирования и декодирования
Кодирование. Наиболее часто применяются битовые строки, элементы которых принимают
T
значения 0 или 1. Каждой координате xt є [at,b.] вектора x = (x^x2,...,xn) є D ставится в со-
x„,..., x ) є
n
T
ответствие ген - битовая строка яі длины ¡.. Хромосома 5 = (5^s2,...,5п) є S также представ
ляет собой битовую строку, длина которой равна сумме длин строк ее генов: I = ^¡і . Длина
і=1
битовых строк внутри хромосомы в общем случае различная (рис. 1). Рассмотрим описанный процесс на примере смешанного кодирования (рис. 2).
t
І
t
t
ШШ -Ц] вш ...щ ШИ ■■~Ц] ЕШ ш
Рис. 1. Соответствие координат и битовых строк
Рис. 2. Смешанное кодирование
На пространство Б наносится п -мерная решетка. Рассмотрим один из замкнутых интер-
(Ь. _а.)
валов [а.,Ь. ]. Разобьем его на к. _ 1 подынтервалов равной длины: И. =—1------—. Полученные
11 1 к. _ 1
подынтервалы пронумеруем натуральными числами от 1 до к. _1 , левый конец а. замкнутого
П
интервала [а.,Ь. ] - номером 0, правый конец Ь. - номером £..
Сначала координате х{ ставится в соответствие целое число Д е {0,1,...,к{} :
ь
х = а
+1, х є (аі Д.),
, к, , х, =Ъ,,
где [ • ] означает операцию выделения целой части числа.
Далее каждому номеру {0,1,..., £.} ставится в соответствие уникальная бинарная комбинация
длины qi. Величина qi определяется из условия: к. = 2^ — 1.
Преобразование в битовую строку осуществляется с помощью обычного двоичного кодирования (позиционного кода) или рефлексивного кода Грея, который обладает свойством непрерывности бинарной комбинации: изменению кодируемого числа Д на единицу соответствует
изменение бинарной комбинации только в одном разряде.
Правило перевода из позиционного кода в код Грея: каждый разряд в коде Грея равен сумме по модулю два этого и следующего старшего разряда в позиционном коде.
Правило перевода из кода Грея в позиционный код: каждый разряд в позиционном коде равен сумме по модулю два этого и всех более старших разрядов в коде Грея.
Заметим, что самый старший разряд в позиционном коде и в коде Г рея совпадают. Декодирование. Пусть имеется ген si, закодированный с помощью кода Грея. Требуется
найти соответствующее ему значение координаты х[ е [а., ]. В процессе декодирования ген si
сначала заменяется на соответствующую ему обычную битовую строку (табл. 1), которая затем переводится в десятичное представление у. Число у является либо номером одного из подынтервалов, на который был разбит промежуток [а., Ъ1 ], либо номером, соответствующим одному из его концов, т.е. у е {0,1,...,£.} .
Таблица 1
0
Соответствие десятичного кода и кода Г рея (4-битного)
Двоичное кодирование Кодирование Двоичное кодирование Кодирование
(В) по коду Грея (С) ( В) по коду Грея (С)
Десятичный Двоичное Двоичное Десятичный код Двоичное Двоичное
код значение значение значение значение
0 0000 0000 8 1000 1100
1 0001 0001 9 1001 1101
2 0010 0011 10 1010 1111
3 0011 0010 11 1011 1110
4 0100 0110 12 1100 1010
5 0101 0111 13 1101 1011
6 0110 0101 14 1110 1001
7 0111 0100 15 1111 1000
Значение координаты х1 при у = 0 определяется левым концом промежутка [а., Ъ1 ]: х[ = а., при у = к( - правым концом: х[ = Ъ1, а при у = 1,...,к( — 1 - серединой со-
ответствующего подынтервала с номером у. (рис.3)
аг , У = О,
(а, + (Уг - 1) Ъг ) + (аг +угИг)
2
4. Общая схема работы генетического алгоритма
У =1,2,...,к, -1.
Ьг , У = кг .
ГеА имитирует эволюцию 10 ={^и = 1,'2;Декшдирр=ан1ке: 4,...,/)т є Я}
^ ^ | ^ j начальной популя-
ции, где да - размер популяции, как циклический итерационный процесс, во время которого к популяции применяются основные биологические операторы: селекция (отбор), скрещивание (кроссинговер, кроссовер), мутация. В результате она заменяется на новую, к которой, если решение не найдено, опять применяются биологические операторы и т.д. до выполнения условия окончания (рис.4).
Шаг 1. Создание начальной популяции.
1) Задается номер популяции I = 0, максимальное количество популяций ¿тах, номер итерации М = 1, параметр кодирования qi, г = 1,...,п (т.е. длина бинарной комбинации).
2) Задается размер популяции т . Случайным образом формируется начальная популяция 10. Для этого с помощью датчика равномерного распределения на единичном интервале т раз
генерируем последовательность из п случайных точек {Р1°,к}П=1,к = 1,2,...,т на [0,1]. Используя линейное преобразование, отображаем каждую точку на соответствующий ей промежуток [а., Ь. ]: Р'к = (Ь - а. )Р°’к + а., г = 1,2,..., п; к = 1,2,..., т . Составляя векторы из точек последова-
тельности
X
/к к к \ = (х1 , х2 ... хп )
кЛГ
при фиксированных к, получаем
т
начальных векторов
Хк = Рк, і = 1,2,...,п .
г і ’
Рис. 4. Схема работы генетического алгоритма Далее разбиваем промежутки [а,, Ь, ] на подынтервалы в соответствии с параметром кодирования (д.). Определяем, каким из них принадлежат значения хк, т.е. находим /5к . Числа рк кодируем с помощью кода Грея, преобразуя их в битовые строки , из которых состав-
к / к к к\Т к ^ к • 10 тг
ляем т хромосом вида я = яп ) , si <->рг, г = 1,2,...,п . По исполнении
сформирована начальная популяция /0 = {як = (я^,£2,...,яП)Т , к = 1,2,...,т} с 8 .
3) Вычисляется значение функции приспособленности для каждой особи як е /о:
т
1к = 1(як),к = 1,2,..., т, и популяции /0 в целом: ¡1 = Ъ 1к .
к=1
Шаг 2. Селекция.
Селекция - это операция, которая осуществляет отбор особей (хромосом) як в соответствии со значениями функции приспособленности т(як) для последующего их скрещивания. Вероятность участия в скрещивании обычно пропорциональна относительной приспособленности
1(£к) * к о
-------особи £ . Виды селекции:
1
1) «Панмиксия» (случайный равновероятный отбор). Особи-«родители» случайным образом выбираются из всей популяции, причем любая может стать членом нескольких пар. Вероятность участия особи в селекции составляет рк = —. Однако эффективность ГеА, реализуют
щего такой подход, снижается с ростом численности популяции.
2) Селективный (рангово-пропорциональный) отбор. Состоит в том, что «родителями» могут стать только те особи, значение функции приспособленности которых не меньше среднего
значения по популяции, т.е. при выполнении условия 1(як) >т, при равной вероятности тат
ких кандидатов составить брачную пару. Такой подход обеспечивает более быструю сходимость алгоритма. Однако из-за быстрой сходимости селективный выбор родительской пары может быть неэффективным, если задача имеет несколько глобальных экстремумов, поскольку Г еА быстро сойдется к одному из решений. Кроме того, для некоторого класса задач со сложным ландшафтом функции приспособленности быстрая сходимость может превратиться в преждевременную сходимость к локальному максимуму.
3) Рулетка. Отбирает особей с помощью о «запусков» рулетки (если выбирается пара родителей, то о = 2). Колесо рулетки содержит по одному сектору для каждого члена популяции.
р V 1(£к)
Размер к -го сектора пропорционален р, =-------- .
к 1
4) Турнирный отбор. Реализует о турниров, для выбора о особей (если выбирается пара родителей, то о = 2). В каждом турнире случайным образом выбирается V элементов из популяции, а затем лучшая особь среди них. Наиболее известен турнирный отбор с V = 2.
5) Инбридинг. Первый член родительской пары выбирается случайно, а вторым с большей вероятностью будет максимально «близко родственная» к нему особь. Под родством здесь понимается расстояние Хэмминга между членами популяции, т.е. число несовпадающих битов в
П
битовых строках: ^ (я , яр) = Ъ Я - яр . Особи £ , яр будут считаться близкими, если
г=1
(як, яр) < йо , где йо е N - параметр метода, задаваемый пользователем.
6) Аутбридинг. Формирует брачные пары из максимально «далеких» особей.
В Г еА может применяться так называемая стратегия элитизма. Ее суть в том, что небольшое количество особей £к (как правило, одна или две) переходит в следующее поколение без изменений, не участвуя в селекции и последующем скрещивании. Это обычно позволяет уско-
рить сходимость ГеА. Недостаток стратегии - высокая вероятность сходимости к локальному
1 2
максимуму. Результатом шага 2 являются две особи я и я , выбранные в качестве родительской пары с помощью одного из операторов селекции.
Шаг 3. Скрещивание.
Скрещивание - это операция, при которой из нескольких, обычно двух хромосом (особей), называемых родителями, порождается одна или несколько новых, называемых потомками, путем обмена частями родительских хромосом. В простейшем случае скрещивание в Г еА реализуется также, как и в биологии: хромосомы разрезаются в случайной точке (точках) и обмениваются частями между собой.
Виды скрещивания:
1) Одноточечное. Сначала случайным образом формируется одна точка разрыва. Точка разрыва - участок между соседними битами в строке (может разрывать ген). Обе родительские структуры разрываются на два сегмента по этой точке. Затем соответствующие сегменты различных родителей “склеиваются” и получаются два потомка.
Пример. Пусть единственная точка разрыва находится между 4-м и 5-м битами хромосом 12
^ и ^ (рис.5).
2) Многоточечное. Выбираются две (или более) точки разрыва, и родительские хромосомы обмениваются сегментом, находящимся между этими точками.
Пример. Пусть есть две точки разрыва: между 2-м и 3-м , 7-м и 8-м битами (рис.6).
3) Равномерное. Первый потомок наследует каждый бит первого родителя с заданной вероятностью р ., а каждый бит второго родителя с вероятностью 1 - Pj . Из двух битов, находящихся в одинаковых позициях в родительских хромосомах, бит, не унаследованный первым потомком, наследуется вторым. Результатом шага 3 являются два потомка sql и я<?2, полученные по применении оператора скрещивания к хромосомам- родителям я1 и я2.
Шаг 4. Мутация.
Мутация - это преобразование хромосомы, случайно изменяющее один (реже несколько) из ее генов. Оператор предназначен для поддержки разнообразия особей в популяции. При его использовании каждый бит в хромосоме с определенной вероятностью р{ е (0,1),г = 1,...,/.
инвертируется, т.е. нуль меняется на единицу (либо единица на нуль).
Пример. К хромосоме - потомку я<?1 применен оператор мутации, в результате чего инвертировался второй бит (рис.7).
потомок 5^ 00100110 => 01100110 М1 потомок - мутант 5
Рис. 7. Мутация хромосомы
Вместо оператора мутации может быть использован оператор инверсии, действие которого заключается в том, что хромосома делится на две части в случайной точке разрыва, а полученные части затем меняются местами.
Пример. К хромосоме - потомку ^2 применим оператор инверсии. Точка разрыва находится после 3-го бита хромосомы (рис.8).
Результатом шага 4 являются два потомка - мутанта яМ 1 и яМ2, полученные в результате применения оператора мутации или инверсии к хромосомам - потомкам и 5^2 .
2 потомок S 111 10001 => 10001111 M 2 потомок - мутант S
Рис. 8. Инверсия хромосомы
Шаг 5. Формирование новой популяции.
С вероятностью 0,5 из двух потомков-мутантов sM 1 и sM2, полученных на шаге 4, выбирается один. Пусть это будет sM 1. Выбранный потомок вводится в популяцию вместо хромосомы, которой соответствует наименьшее среди элементов популяции значение функции приспособленности, вычисляется значение функции приспособленности m = m(sM 1) .
Проверяются условия:
а) если M < m, то положить M = M +1 и перейти к шагу 2;
б) если M = m , то положить t = t +1 и перейти к шагу 6.
Шаг 6. Проверка условий окончания работы ГеА.
Применяются следующие условия окончания работы Г еА:
1) сформировано заданное число популяций: t = tmax ;
2) популяция достигла заданного качества (например, приспособленность каждой особи превысила некоторый порог);
3) достигнут некоторый уровень сходимости, т.е. особи стали настолько подобны, что их дальнейшее улучшение происходит крайне медленно.
Проверка условий окончания:
а) если ни одно из условий не выполнено, то полагаем M = 1 и переходим к шагу 2;
б) если хотя бы одно условие окончания работы выполнено, то в качестве решения (при-
*
ближенного) задачи ju(s ) = max ju(s) выбирается особь с лучшим значением функции приспо-
seS
* ~ k
собленности из текущей популяции: s @ s * = arg max ju(s ), а по нему с помощью операции
k=1,...,m
декодирования определяется приближенное решение поставленной задачи f (х*) = max f (х) :
xeD
X* @ ~* = e_1(?*) .
Работа алгоритма поясняется рис. 9.
Рис. 9. Процесс формирования новой популяции в соответствии с Г еА
ЛИТЕРАТУРА
1. Пантелеев А.В., Летова Т.А. Методы оптимизации в примерах и задачах.- М.: Высш. шк., 2005.
2. Исаев С. Популярно о генетических алгоритмах. Оптимизация многоэкстремальных функций с помощью генетических алгоритмов. // Сайт в Интернете www.algolist.manual.ru.
3. Цой Ю. Генетические и нейроэволюционные алгоритмы. // Сайт в Интернете http://qai.narod.ru/.
4. Соломка Ю. Исследование применимости генетических алгоритмов для оптимизации нейросетевых систем. // Сайт в Интернете http://www.uran.donetsk.ua/~masters/2004/fvti/solomka/diss/ .
5. Струнков Т. Что такое генетические алгоритмы. // Сайт в Интернете www.neuroproject.ru/genealg.htm.
6. Сайт http://victoria.lviv.ua/html/oio/html/theme10_rus.htm. - Популярно про генетические алгоритмы.
7. Стариков А. Генетические алгоритмы - математический аппарат. BaseGroup Labs. // Сайт в Интернете http://www.basegroup.ru/genetic/math.htm.
8. Паклин Н. Непрерывные генетические алгоритмы - математический аппарат. BaseGroup Labs. // Сайт в Интернете http://www.basegroup.ru/genetic/real_coded_ga.htm.
9. Генетический алгоритм. // Сайт в Интернете http://g-u-t.chat.ru/ga/oper.htm.
MODIFIED GENETIC ALGORITHM OF CONSTRAINED OPTIMIZATION
Panteleyev A.V., Apostol N.P.
The global constrained optimization problem is considered. The efficient application of binary coded genetic algorithm is suggested.
Сведения об авторах
Пантелеев Андрей Владимирович, 1955 г.р., окончил МГТУ им. Н.Э. Баумана (1978), доктор физико-математических наук, профессор, заведующий кафедрой прикладной математики и механики МАИ, автор более 90 научных работ, область научных интересов - синтез оптимальных нелинейных систем управления, методы оптимизации.
Апостол Наталья Петровна, студентка МАИ, область научных интересов - методы оптимизации, численные методы и комплексы программ.