ISSN 1810-0198 Вестник ТГУ, т.17, вып.1, 2012 УДК 519.95 ГЕНЕТИЧЕСКИЙ АЛГОРИТМ С ЗАПАЗДЫВАНИЕМ Д.О. Квашенкин Ключевые слова: генетический алгоритм; запаздывание; селекция; скрещивание; мутация. В работе представлена модификация многомерного генетического алгоритма. В генетический алгоритм было введено запаздывание. Приведены результаты вычислительного эксперимента. Генетические алгоритмы возникли в результате наблюдения и попыток копирования естественных процессов, происходящих в мире живых организмов, в частности, эволюции и связанной с ней селекции (естественного отбора) популяций живых существ. Следует обратить внимание на большую длительность протекания упоминаемых естественных процессов. Однако при компьютерном моделировании эти различия оказываются несущественными. Идею генетических алгоритмов высказал Дж. Холланд в конце 60-х – начале 70-х гг. ХХ в. Он заинтересовался свойствами процессов естественной эволюции (в т. ч. фактом, что эволюционируют хромосомы, а не сами живые существа). Голландец был уверен в возможности составить и реализовать в виде компьютерной программы алгоритм, который будет решать сложные задачи так, как это делает природа – путем эволюции. Поэтому он начал трудиться над алгоритмами, оперировавшими последовательностями двоичных цифр (единиц и нулей), получившими название хромосом. Эти алгоритмы имитировали эволюционные процессы в поколениях таких хромосом. В них были реализованы механизмы селекции и репродукции, аналогичные применяемым при естественной эволюции. Так же как и в природе, генетические алгоритмы осуществляли поиск хороших хромосом без использования какой-либо информации о характере решаемой задачи. Требовалась только некая оценка каждой хромосомы, отражающая ее приспособленность. Механизм селекции заключается в выборе хромосом с наивысшей оценкой, т. е. наиболее приспособленных, которые репродуцируют чаще, чем особи с более низкой оценкой (хуже приспособленные). Репродукция означает создание новых хромосом в результате рекомбинации генов родительских хромосом. Рекомбинация – это процесс, в результате которого возникают новые комбинации генов. Для этого используются две операции: скрещивание и мутация, позволяющие создать две совершенно новые хромосомы потомков путем комбинирования генетического материала пары родителей, а также мутация, которая может вызывать изменения в отдельных хромосомах. В генетических алгоритмах применяется ряд терминов, заимствованных из генетики, прежде всего гены и хромосомы, а также популяция, особь, аллель, генотип, фенотип. Генетические алгоритмы применяются при разработке программного обеспечения, в системах искусственного интеллекта, оптимизации, искусственных нейронных сетях и в других отраслях знаний. Следует отметить, что с их помощью решаются задачи, для которых ранее использовались только нейронные сети. В этом случае генетические алгоритмы выступают просто в роли независимого от нейронных сетей альтернативного метода, предназначенного для решения той же самой задачи. Примером может служить задача коммивояжера, изначально решавшаяся при помощи сети Холфилда. Генетические алгоритмы часто используются совместно с нейронными сетями. Они могут поддерживать нейронные сети или наоборот, либо оба метода взаимодействуют в рамках гибридной системы, предназначенной для решения конкретной задачи. Генетические алгоритмы также применяются совместно с нечеткими системами [1–6]. ОСНОВНЫЕ ПОНЯТИЯ ГЕНЕТИЧЕСКОГО АЛГОРИТМА При описании генетических алгоритмов используются определения, заимствованные из генетики. Например, речь идет популяции особей, а в качестве базовых понятий применяются ген, хромосома, генотип, фенотип, аллель. Также используются соответствующие этим терминам определения и из технического лексикона, в частности, цепь, двоичная последовательность, структура. Популяция – это конечное множество особей. Особи, входящие в популяцию, в генетических алгоритмах приставляются хромосомами с закодированными в них множествами параметров задачи, т. е. решений, которые иначе называются точками в пространстве поиска (search points). В некоторых работах особи называются организмами. Хромосомы (другие названия – цепочки или кодовые последовательности) – это упорядоченные последовательности генов. Ген (также называемый свойством, знаком или детектором) – это атомарный элемент генотипа, в частности, хромосомы. Генотип или структура – это набор хромосом данной особи. Следовательно, особями популяции могут быть генотипы либо единичные хромосомы (в до179 ISSN 1810-0198 Вестник ТГУ, т.17, вып.1, 2012 вольно распространенном случае, когда генотип состроит из одной хромосомы). Фенотип – это набор значений, соответствующих данному генотипу, т. е. закодированная структура или множество параметров задачи (решение, точка пространства поиска). Аллель – это значение конкретного гена, также определяемое как значение свойства или вариант свойства. Локус или позиция указывает место размещения данного гена в хромосоме (цепочке). Множество позиций генов – это локи. Очень важным понятием в генетических алгоритмах считается функция приспособленности (fitness function), иначе называемая функцией оценки. Она представляет меру приспособленности данной особи в популяции. Эта функция играет важнейшую роль, поскольку позволяет оценить степень приспособленности конкретных особей в популяции и выбрать из них наиболее приспособленные (т. е. имеющие наибольшие значения функции приспособленности) в соответствии с эволюционным принципом выживания «сильнейших» (лучше всего приспособившихся). Функция приспособленности также получила свое название непосредственно из генетики. Она оказывает сильное влияние на функционирование генетических алгоритмов и должна иметь точное и корректное распределение. В задачах оптимизации функция приспособленности, как правило, оптимизируется (точнее говоря, минимизируется) и называется целевой функцией. В задачах минимизации целевая функция преобразуется, и проблема сводится к минимизации. В теории управления функ- ция приспособленности может принимать вид функции погрешности, а в теории игр – стоимостной функции. На каждой итерации генетического алгоритма приспособленности каждой особи данной популяции оценивается при помощи функции приспособленности, и на этой основе создается следующая популяция особей, составляющих множество потенциальных решений проблемы, например, задачи оптимизации. Очередная популяция в генетическом алгоритме называется поколением, а к вновь создаваемой популяции особей применяется термин «новое поколение» или «поколение потомков». КЛАССИЧЕСКИЙ ГЕНЕТИЧЕСКИЙ АЛГОРИТМ С ОПЕРАТОРОМ ЗАПАЗДЫВАНИЯ Основной (классический) генетический алгоритм с оператором состоит из следующих шагов: 1) инициализация, или выбор исходной популяции хромосом; 2) оценка приспособленности хромосом в популяции; 3) проверка условия остановки алгоритма; 4) селекция хромосом; 5) применение генетических операторов; 6) применение оператора запаздывания; 7) формирование новой популяции; 8) выбор наилучшей хромосомы. Блок-схема основного генетического алгоритма изображена на рис. 1. Рис. 1. Блок-схема классического генетического алгоритма с оператором запаздывания 180 ISSN 1810-0198 Вестник ТГУ, т.17, вып.1, 2012 Рис. 2. Иллюстрация действия оператора запаздывания Рассмотрим оператор запаздывания более подробно. На рис. 2 показан принцип действия оператора запаздывания, где Сh1 и Сh2 – это 2 фенотипа, соответствующих хромосомам ch1 и ch2 . После применения генетических операторов к хромосомам ch1 и ch2 получаем их потомков chi и ch2 , которым соответствуют фенотипы Сh1 и Сh2 . Через точки Сh1 , Сh1 и Сh2 , Сh2 построим две прямые, как это показано на рис. 2 и сделаем шаг h вдоль этих прямых, в направлении от фенотипов родителей к фенотипам потомков. В результате получим два фенотипа t1 и t2 , которые после преобразования к двоичному виду дадут две хромосомы, являющиеся результатом действия оператора запаздывания. АЛГОРИТМ ОПЕРАТОРА ЗАПАЗДЫВАНИЯ Уравнение прямой, проходящей через 2 заданные точки, будет иметь вид: y y1 x x1 = y2 y1 x2 x1 потомка; t i – i -й фенотип потомка после применения к нему оператора запаздывания. xi , yi – значения i -го фенотипа родителя. xi , yi – значения i -го феноти- па потомка. xit , yit – значения i -го фенотипа потомка после применения к нему оператора запаздывания. Введем следующие обозначения: Chi x – xi Chi y – yi Chi x – xi Chi y – yi ti x – xit ti y – yit . Получим следующий алгоритм для каждой из прямых, изображенных на рис. 2. Шаг 1 Преобразуем хромосомы chi и chi к их фе нотипам Chi и Сhi . chi chi chi Chi Выразим из него x и y : y x2 x1 + x1 y2 x2 y1 x= y1 y2 y= где Chi – i -й фенотип родителя; Chi – i -й фенотип x y1 y2 + x1 y2 x2 y1 . x2 x1 Фенотипы, показанные на рис. 2, имеют следующий вид: Chi = xi , yi Chi = xi , yi ti = xit , yit , Шаг 2. Вычисляем величины aix и aiy . aix = Chi x Chi x aiy = Chi y Chi y Шаг 3. Смотрим, выполняется ли хотя бы одно из условий aix > 0 или aiy > 0 . Если выполняется, то переходим к шагу 4. Если aix = 0 и aiy = 0 , то при- 181 ISSN 1810-0198 Вестник ТГУ, т.17, вып.1, 2012 сваиваем фенотипу t i значения фенотипа Chi : ti x = Chi x , Шаг 6. Приводим фенотип ti к двоичному виду ti = ti x ,ti y ch = 00110110 . Полученная хромосома ch является результатом действия оператора запаздывания, примененного к i -му потомку. ti y = Chi y , после чего переходим к шагу 6. Шаг 4. Выбираем шаг h. Вычисляем hx и h y . ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ ТЕСТИРОВАНИЕ НА ФУНКЦИИ РОЗЕНБРОКА hx = h, если Chi x < Chi x , Значения параметров: диапазон изменения x от –15 до 15; диапазон изменения y от –15 до 15; hy = h, если Chi y < Chi y , hx = h, если Chi x > Chi x , hy = h, если Chi y > Chi y , максимальное число итераций iter = 5000; количество запусков, по которым усредняем результат, равно 1000. Функция Розенброка имеет следующий вид: Шаг 5. Если a x a y , то ti x = Chi x+ hx . ti x Chi y Chi y + ti y = Chi x Chi x . Если a x < a y , то ti y Chi x Chi x + ti x = . Chi x Chi y Chi x Chi y Chi y Chi y f x, y = 100 y x 2 + 1 x2 . Chi x Chi y Chi x Chi y ti y = Chi y + hy . количество особей N = 30; вероятность скрещивания pc = 100 %; Рассмотрим график зависимости времени выполнения алгоритма от величины запаздывания для разных вероятностей мутации (рис. 3). По шкале абсцисс показаны величины шага, где h = x 0,01 , а по шкале ординат показано время в миллисекундах. Синим цветом обозначена кривая изменения времени выполнения алгоритма в зависимости от величины шага, при вероятности мутации, равной 5 %. Красным цветом обозначена кривая изменения времени выполнения алгоритма в зависимости от величины шага, при вероятности мутации, равной 10 %. Желтым цветом обозначена кривая изменения времени выполнения алгоритма в зависимости от величины шага, при вероятности мутации, равной 15 %. Рис. 3. Время выполнения алгоритма в зависимости от величины запаздывания для функции Розенброка 182 ISSN 1810-0198 Вестник ТГУ, т.17, вып.1, 2012 Рис. 4. Время выполнения алгоритма в зависимости от величины запаздывания, для функции Растригина Зеленым цветом обозначена кривая изменения времени выполнения алгоритма в зависимости от величины шага, при вероятности мутации, равной 20 %. Коричневым цветом обозначена кривая изменения времени выполнения алгоритма в зависимости от величины шага, при вероятности мутации, равной 25 %. Черным цветом обозначено время выполнения градиентного метода для сравнения эффективности выполнения алгоритма. На рис. 3 мы видим, что генетический алгоритм при некоторых значениях параметров выполняется быстрее градиентного метода. Применяя оператор запаздывания при вероятностях мутации 5, 10, 15 %, мы можем значительно повысить эффективность алгоритма, что можно увидеть, наблюдая за изменением синей, красной и желтой кривых. При увеличении вероятности мутации на каком-то шаге, мы получаем оптимальную для данной задачи вероятность мутации. Как видно из графиков, оптимальной вероятностью мутации является величина мутации, равная 20 %, что соответствует зеленой кривой. При величине мутации 20 % и выше применение оператора запаздывания для данной задачи нецелесообразно, что мы можем заметить, наблюдая за изменениями зеленой и коричневой кривых. ТЕСТИРОВАНИЕ НА ФУНКЦИИ РАСТРИГИНА Значения параметров: диапазон изменения x от –5 до 5; диапазон изменения y от –5 до 5; количество особей N = 50; вероятность скрещивания pc = 100 %; максимальное число итераций iter = 15000; количество запусков, по которым усредняем результат, равно 100. Функция Растригина имеет следующий вид: f x, y = 20 + x 2 + y 2 10cos2πx + cos2πy . Рассмотрим график зависимости времени выполнения алгоритма от величины запаздывания для разных вероятностей мутации (рис. 4). При малых вероятностях мутации запаздывание позволяет значительно сократить время выполнения алгоритма. ЗАКЛЮЧЕНИЕ На основании всего сказанного выше можно сделать вывод о том, что управляемое запаздывание позволяет сократить время выполнения генетического алгоритма. ЛИТЕРАТУРА 1. 2. 3. 4. 5. 6. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы / пер. с польск. И.Д. Рудинского. М.: Горячая линия – Телеком, 2006. 452 с.: ил. Емельянов В.В., Курейчик В.В., Курейчик В.М. Теория и практика эволюционного моделирования. М.: Физматлит, 2003. 432 с. Вороновский Г.К., Махотило К.В., Петрашев С.Н., Сергеев С.А. Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности. Х.: Основа, 1997. 112 с. Генетические алгоритмы. URL: http://qai.narod.ru/GA/index.html (дата обращения 11.06.2011). Генетические алгоритмы – математический аппарат. URL: http://www.basegroup.ru/library/optimization/ga_math/ (дата обращения 11.06.2011). Батищев Д.И., Исаев С.А. Оптимизация функций с помощью ГА. URL: http://www.rema44.ru/resurs/study/ai/ materials/GA3.html (дата обращения 11.06.2011). Поступила в редакцию 16 ноября 2011 г. Kvashenkin D.O. GENETIC ALGORITHM WITH DELAY The work presents the modification of multi-dimension genetic algorithm. The delay was brought into genetic algorithm. The results of calculation experiment are given. Key words: genetic algorithm; delay; selection; intersecting; mutation. 183