Классический генетический алгоритм
Основной (классический) генетический алгоритм состоит из следующих шагов:
1) инициализация, или выбор исходной популяции хромосом;
2) оценка приспособленности хромосом в популяции;
3) проверка условия остановки алгоритма;
4) селекция хромосом;
5) применение генетических операторов;
6) формирование новой популяции;
7) выбор «наилучшей» хромосомы.
Блок-схема основного генетического алгоритма изображена на рис.1. Рассмотрим конкретные этапы этого алгоритма более подробно.
Инициализация,т.е. формирование исходной популяции, заключается в случайном выборе заданного количества хромосом (особей), представляемых двоичными последовательностями фиксированной длины.
Оценивание приспособленностихромосом в популяции состоит в расчете функции приспособленности для каждой хромосомы этой популяции. Чем больше значение этой функции, тем выше «качество» хромосомы. Форма функции приспособленности зависит от характера решаемой задачи.
Рис.1. Блок-схема генетического алгоритма
Проверка условия остановки алгоритма.Определение условия остановки генетического алгоритма зависит от его конкретного применения. В оптимизационных задачах, если известно максимальное (или минимальное) значение функции приспособленности, то остановка алгоритма может произойти после достижения ожидаемого оптимального значения, возможно - с заданной точностью. Остановка алгоритма также может произойти в случае, когда его выполнение не приводит к улучшению уже достигнутого значения. Алгоритм может быть остановлен по истечении определенного времени выполнения либо после выполнения заданного количества итераций. Если условие остановки выполнено, то производится переход к завершающему этапу выбора «наилучшей» хромосомы. В противном случае на следующем шаге выполняется селекция.
Селекция хромосомзаключается в выборе (по рассчитанным на втором этапе значениям функции приспособленности) тех хромосом, которые будут участвовать в создании потомков для следующей популяции, т.е. для очередного поколения. Такой выбор производится согласно принципу естественного отбора, по которому наибольшие шансы на участие в создании новых особей имеют хромосомы с наибольшими значениями функции приспособленности. Существуют различные методы селекции. Наиболее популярным считается так называемый метод рулетки (roulette wheel selection), который свое название получил по аналогии с известной азартной игрой. Каждой хромосоме может быть сопоставлен сектор колеса рулетки, величина которого устанавливается пропорциональной значению функции приспособленности данной хромосомы. Поэтому, чем больше значение функции приспособленности, тем больше сектор на колесе рулетки. Все колесо рулетки соответствует сумме значений функции приспособленности всех хромосом рассматриваемой популяции, каждой хромосоме, обозначаемой chi для i=1,2,.... N (где N обозначает численность популяции) соответствует сектор колеса v(chi), выраженный в процентах согласно формуле
(2)
где
(3)
причем F(chi) - значение функции приспособленности хромосомы chi, a ps(chi) - вероятность селекции хромосомы chi. Селекция хромосомы может быть представлена как результат поворота колеса рулетки, поскольку «выигравшая» (т.е. выбранная) хромосома относится к выпавшему сектору этого колеса. Очевидно, что чем больше сектор, тем больше вероятность «победы» соответствующей хромосомы. Поэтому вероятность выбора данной хромосомы оказывается пропорциональной значению ее функции приспособленности. Если всю окружность колеса рулетки представить в виде цифрового интервала [0, 100], то выбор хромосомы можно отождествить с выбором числа из интервала [a, b], где a и bобозначают соответственно начало и окончание фрагмента окружности, соответствующего этому сектору колеса; очевидно, что 0 ≤ а < b ≤ 100. В этом случае выбор с помощью колеса рулетки сводится к выбору числа из интервала [0, 100], которое соответствует конкретной точке на окружности колеса.
В результате процесса селекции создается родительская популяция, также называемая родительским пулом (mating pool) с численностью N, равной численности текущей популяции.
Применение генетических операторовк хромосомам, отобранным с помощью селекции, приводит к формированию новой популяции потомков от созданной на предыдущем шаге родительской популяции.
В классическом генетическом алгоритме применяются два основных генетических оператора: оператор скрещивания (crossover) и оператор мутации (mutation). Однако следует отметить, что оператор мутации играет явно второстепенную роль по сравнению с оператором скрещивания. Это означает, что скрещивание в классическом генетическом алгоритме производится практически всегда, тогда как мутация - достаточно редко. Вероятность скрещивания, как правило, достаточно велика (обычно 0,5 ≤ рс ≤ 1), тогда как вероятность мутации устанавливается весьма малой (чаще всего 0 ≤ pm ≤ 0,1). Это следует из аналогии с миром живых организмов, где мутации происходят чрезвычайно редко
В генетическом алгоритме мутация хромосом может выполняться на популяции родителей перед скрещиванием, либо на популяции потомков, образованных в результате скрещивания.
Оператор скрещивания.На первом этапе скрещивания выбираются пары хромосом из родительской популяции (родительского пула). Это временная популяция, состоящая из хромосом, отобранных в результате селекции и предназначенных для дальнейших преобразований операторами скрещивания и мутации с целью формирования новой популяции потомков. На данном этапе хромосомы из родительской популяции объединяются в пары. Это производится случайным способом в соответствии с вероятностью скрещивания pc. Далее для каждой пары отобранных таким образом родителей разыгрывается позиция гена (локус) в хромосоме, определяющая так называемую точку скрещивания. Если хромосома каждого из родителей состоит из L генов, то очевидно, что точка скрещивания lk представляет собой натуральное число, меньшее L. Поэтому фиксация точки скрещивания сводится к случайному выбору числа из интервала [1, L-1] В результате скрещивания пары родительских хромосом получается следующая пара потомков:
1) потомок, хромосома которого на позициях от 1 до lk состоит из генов первого родителя, а на позициях от lk + 1 до L - из генов второго родителя;
2) потомок, хромосома которого на позициях от 1 до lk состоит из генов второго родителя, а на позициях от lk + 1 до L - из генов первого родителя.
Оператор мутациис вероятностью pm изменяет значение гена в хромосоме на противоположное (т.е. с 0 на 1 или обратно). Например, если в хромосоме [100110101010] мутации подвергается ген на позиции 7, то его значение, равное 1, изменяется на 0, что приводит к образованию хромосомы [100110001010]. Как уже упоминалось выше, вероятность мутации обычно очень мала, и именно от нее зависит, будет данный ген мутировать или нет. При выборе вероятности pm мутации можно применять, например, случайные числа из интервала [0, 1] для каждого гена и отбор для выполнения этой операции тех генов, для которых разыгранное число оказывается меньшим или равным значению pm.
Формирование новой популяции.Хромосомы, полученные в результате применения генетических операторов к хромосомам временной родительской популяции, включаются в состав новой популяции. Она становится так называемой текущей популяцией для данной итерации генетического алгоритма. На каждой очередной итерации рассчитываются значения функции приспособленности для всех хромосом этой популяции, после чего проверяется условие остановки алгоритма и либо фиксируется результат в виде хромосомы с наибольшим значением функции приспособленности, либо осуществляется переход к следующему шагу генетического алгоритма, т.е. к селекции. В классическом генетическом алгоритме вся предшествующая популяция хромосом замещается новой популяцией потомков, имеющей ту же численность.
Выбор «наилучшей» хромосомы.Если условие остановки алгоритма выполнено, то следует вывести результат работы, т.е. представить искомое решение задачи. Лучшим решением считается хромосома с наибольшим значением функции приспособленности.
В завершение следует признать, что генетические алгоритмы унаследовали свойства естественного эволюционного процесса, состоящие в генетических изменениях популяций организмов с течением времени.
Главный фактор эволюции - это естественный отбор (т.е. природная селекция), который приводит к тому, что среди генетически различающихся особей одной и той же популяции выживают и оставляют потомство только наиболее приспособленные к окружающей среде. В генетических алгоритмах также выделяется этап селекции, на котором из текущей популяции выбираются и включаются в родительскую популяцию особи, имеющие наибольшие значения функции приспособленности. На следующем этапе, который иногда называется эволюцией, применяются генетические операторы скрещивания и мутации, выполняющие рекомбинацию генов в хромосомах.
Операция скрещивания заключается в обмене фрагментами цепочек между двумя родительскими хромосомами. Пары родителей для скрещивания выбираются из родительского пула случайным образом так, чтобы вероятность выбора конкретной хромосомы для скрещивания была равна вероятности pc. Например, если в качестве родителей случайным образом выбираются две хромосомы из родительской популяции численностью N, то pc = 2/N. Аналогично, если из родительской популяции численностью N выбирается 2z хромосом (z ≤ N/2), которые образуют z пар родителей, то pc = 2z/N. Обратим внимание, что если все хромосомы текущей популяции объединены в пары до скрещивания, то pc = 1. После операции скрещивания родители в родительской популяции замещаются их потомками.
Операция мутации изменяет значения генов в хромосомах с заданной вероятностью pm способом, представленным при описании соответствующего оператора. Это приводит к инвертированию значений отобранных генов с 0 на 1 и обратно. Значение pm, как правило, очень мало, поэтому мутации подвергается лишь небольшое количество генов. Скрещивание - это ключевой оператор генетических алгоритмов, определяющий их возможности и эффективность. Мутация играет более ограниченную роль. Она вводит в популяцию некоторое разнообразие и предупреждает потери, которые могли бы произойти вследствие исключения какого-нибудь значимого гена в результате скрещивания.
Основной (классический) генетический алгоритм известен в литературе в качестве инструмента, в котором выделяются три вида операций: репродукции, скрещивания и мутации. Термины селекция и репродукция в данном контексте используются в качестве синонимов. При этом репродукция в данном случае связывается скорее с созданием копий хромосом родительского пула, тогда как более распространенное содержание этого понятия обозначает процесс формирования новых особей, происходящих от конкретных родителей. Если мы принимаем такое толкование, то операторы скрещивания и мутации могут считаться операторами репродукции, а селекция - отбором особей (хромосом) для репродукции.
Задание
В ходе выполнения лабораторной работы необходимо познакомиться с теорией генетических алгоритмов, а также реализовать описанный ниже алгоритм на одном из языков программирования.
Описание алгоритма.
Рассмотрим сильно упрощенный и довольно искусственный пример, состоящий в нахождении хромосомы с максимальным количеством единиц. Допустим, что хромосомы состоят из 12 генов, а популяция насчитывает 8 хромосом. Понятно, что наилучшей будет хромосома, состоящая из 12 единиц. Посмотрим, как протекает процесс решения этой весьма тривиальной задачи с помощью генетического алгоритма.
Инициализация, или выбор исходной популяции хромосом.Необходимо случайным образом сгенерировать 8 двоичных последовательностей длиной 12 битов. Таким образом можно сформировать исходную популяцию:
ch1 = [111001100101] | ch5 = [010001100100] |
ch2 = [001100111010] | ch6 = [010011000101] |
ch3 = [011101110011] | ch7 = [101011011011] |
ch4 = [001000101000] | ch8 = [000010111100] |
Оценка приспособленности хромосом в популяции.В рассматриваемом упрощенном примере решается задача нахождения такой хромосомы, которая содержит наибольшее количество единиц. Поэтому функция приспособленности определяет количество единиц в хромосоме. Обозначим функцию приспособленности символом F. Тогда ее значения для каждой хромосомы из исходной популяции будут такие:
F(ch1) = 7 | F(ch5) = 4 |
F(ch2) = 6 | F(ch6) = 5 |
F(ch3) = 8 | F(ch7) = 8 |
F(ch4) = 3 | F(ch8) = 5 |
Хромосомы ch3 и ch7 характеризуются наибольшими значениями функции принадлежности. В этой популяции они считаются наилучшими кандидатами на решение задачи. Если в соответствии с блок-схемой генетического алгоритма (рис.1) условие остановки алгоритма не выполняется, то на следующем шаге производится селекция хромосом из текущей популяции.
Селекция хромосом.Селекция производится методом рулетки. На основании формул (2) и (3) для каждой из 8 хромосом текущей популяции (в нашем случае - исходной популяции, для которой N = 8) получаем секторы колеса рулетки, выраженные в процентах (рис.2)
Рис.2. Колесо рулетки для селекции
v(ch1) = 15,22 | v(ch5) = 8,70 |
v(ch2) = 13,04 | v(ch6) = 10,87 |
v(ch3) = 17,39 | v(ch7) = 17,39 |
v(ch4) = 6,52 | v(ch8) = 10,87 |
Розыгрыш с помощью колеса рулетки сводится к случайному выбору числа из интервала [0, 100], указывающего на соответствующий сектор на колесе, т.е. на конкретную хромосому.
Допустим, что разыграны следующие 8 чисел:
79 44 9 74 44 86 48 23
Это означает выбор хромосом:
ch7 ch3 ch1 ch7 ch3 ch7 ch4 ch2
Как видно, хромосома ch7 была выбрана трижды, а хромосома ch3 - дважды. Именно эти хромосомы имеют наибольшее значение функции приспособленности. Однако выбрана и хромосома ch4 с наименьшим значением функции приспособленности. Все выбранные таким образом хромосомы включаются в так называемый родительский пул.
Применение генетических операторов.Допустим, что ни одна из отобранных в процессе селекции хромосом не подвергается мутации, и все они составляют популяцию хромосом, предназначенных для скрещивания. Это означает, что вероятность скрещивания pc = 1, а вероятность мутации pm = 0. Допустим, что из этих хромосом случайным образом сформированы пары родителей
ch2 и ch7, ch1 и ch7, ch3 и ch4, ch3 и ch7
Для первой пары случайным образом выбрана точка скрещивания lk = 4, для второй lk = 3, для третьей lk = 11, для четвертой lk = 5. При этом процесс скрещивания протекает так, как показано на рис.3.
Первая пара родителей | Первая пара потомков | |
[001100111010] [101011011011] lk = 4 | скрещивание → | [001111011011] [101000111010] |
Вторая пара родителей | Вторая пара потомков | |
[111001100101] [101011011011] lk = 3 | скрещивание → | [111011011011] [101001100101] |
Третья пара родителей | Третья пара потомков | |
[011101110011] [001000101000] lk = 11 | скрещивание → | [011101110010] [001000101001] |
Четвертая пара родителей | Четвертая пара потомков | |
[011101110011] [101011011011] lk = 5 | скрещивание → | [011101011011] [101011110011] |
Рис.3. Процесс скрещивания хромосом
В результате выполнения оператора скрещивания получаются 4 пары потомков. Если бы при случайном подборе пар хромосом для скрещивания были объединены, например, ch3 с ch3 и ch4 с ch7 вместо ch3 с ch4 и ch3 с ch7, а другие пары остались без изменения, то скрещивание ch3 с ch3 дало бы две такие же хромосомы независимо от разыгранной точки скрещивания. Это означало бы получение двух потомков, идентичных своим родителям. Заметим, что такая ситуация наиболее вероятна для хромосом с наибольшим значением функции приспособленности, т.е. именно такие хромосомы получают наибольшие шансы на переход в новую популяцию.
Формирование новой популяции.После выполнения операции скрещивания мы получаем (согласно рис. 3) следующую популяцию потомков:
Ch1 = [001111011011] | Ch5 = [011101110010] |
Ch2 = [101000111010] | Ch6 = [001000101001] |
Ch3 = [111011011011] | Ch7 = [011101011011] |
Ch4 = [101001100101] | Ch8 = [101011110011] |
Для отличия от хромосом предыдущей популяции обозначения вновь сформированных хромосом начинаются с заглавной буквы С.
Согласно блок-схеме генетического алгоритма (рис.1) производится возврат ко второму этапу, т.е. к оценке приспособленности хромосом из вновь сформированной популяции, которая становится текущей. Значения функций приспособленности хромосом этой популяции составляют:
F(Ch1) = 8 | F(Ch5) = 7 |
F(Ch2) = 6 | F(Ch6) = 4 |
F(Ch3) = 9 | F(Ch7) = 8 |
F(Ch4) = 6 | F(Ch8) = 8 |
Заметно, что популяция потомков характеризуется гораздо более высоким средним значением функции приспособленности, чем популяция родителей. Обратим внимание, что в результате скрещивания получена хромосома Ch3 с наибольшим значением функции приспособленности, которым не обладала ни одна хромосома из родительской популяции. Однако могло произойти и обратное, поскольку после скрещивания на первой итерации хромосома, которая в родительской популяции характеризовалась наибольшим значением функции приспособленности, могла просто «потеряться». Помимо этого, «средняя» приспособленность новой популяции все равно оказалась бы выше предыдущей, а хромосомы с большими значениями функции приспособленности имели бы шансы появиться в следующих поколениях.