Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


4.10. Эволюционные алгоритмы

Генетические алгоритмы (genetic algorithms) совместно с эволюционной стратегией и эволюционным программированием представляют три главных направления развития так называемого эволюционного моделирования (simulated evolution).

Несмотря на то, что каждый из этих методов возник независимо от других, они характеризуются рядом важных общих свойств. Для любого из них формируется исходная популяция особей, которая в последующем подвергается селекции и воздействию различных генетических операторов (чаще всего скрещиванию и/или мутации), что позволяет находить более хорошие решения.

Эволюционные стратегии - это алгоритмы, созданные в Германии в качестве методов решения оптимизационных задач и основанные на принципах природной эволюции. Эволюционное программирование представляет собой подход, предложенный американскими учеными вначале в рамках теории конечных автоматов и обобщенный позднее для приложений к проблемам оптимизации [13]. Оба направления возникли в шестидесятых годах XX века.

Сконцентрируем внимание на важнейших сходствах и различиях между эволюционными стратегиями и генетическими алгоритмами [33]. Очевидно, что главное сходство заключается в том, что оба метода используют популяции потенциальных решений и реализуют принцип селекции и преобразования наиболее приспособленных особей. Однако обсуждаемые подходы сильно отличаются друг от друга. Первое различие заключается в способе представления особей. Эволюционные стратегии оперируют векторами действительных чисел, тогда как генетические алгоритмы - двоичными векторами.

Второе различие между эволюционными стратегиями и генетическими алгоритмами кроется в организации процесса селекции. При реализации эволюционной стратегии формируется промежуточная популяция, состоящая из всех родителей и некоторого количества потомков, созданных в результате применения генетических операторов. С помощью селекции размер этой промежуточной популяции уменьшается до величины родительской популяции за счет исключения наименее приспособленных особей. Сформированная таким образом популяция образует очередное поколение. Напротив, в генетических алгоритмах предполагается, что в результате селекции из популяции родителей выбирается количество особей, равное размерности исходной популяции, при этом некоторые (наиболее приспособленные) особи могут выбираться многократно. В то же время, менее приспособленные особи также имеют возможность оказаться в новой популяции. Однако шансы их выбора пропорциональны величине приспособленности особей. Независимо от применяемого в генетическом алгоритме метода селекции (например, рулетки или рангового) более приспособленные особи могут выбираться многократно. При реализации эволюционных стратегий особи выбираются без повторений. В эволюционных стратегиях применяется детерминированная процедура селекции, тогда как в генетических алгоритмах она имеет случайный характер.

Третье различие между эволюционными стратегиями и генетическими алгоритмами касается последовательности выполнения процедур селекции и рекомбинации (т.е. изменения генов в результате применения генетических операторов). При реализации эволюционных стратегий вначале производится рекомбинация, а потом селекция. В случае выполнения генетических алгоритмов эта последовательность инвертируется. При осуществлении применении эволюционных стратегий потомок образуется в результате скрещивания двух родителей и мутации. Формируемая таким образом промежуточная популяция, состоящая из всех родителей и полученных от них потомков, в дальнейшем подвергается селекции, которая уменьшает размер этой популяции до размера исходной популяции. При выполнении генетических алгоритмов вначале производится селекция, приводящая к образованию переходной популяции, после чего генетические операторы скрещивания и мутации применяются к особям (выбираемым с вероятностью скрещивания) и к генам (выбираемым с вероятностью мутации).

Следующее различие между эволюционными стратегиями и генетическими алгоритмами заключается в том, что параметры генетических алгоритмов (такие, как вероятности скрещивания и мутации) остаются постоянными на протяжении всего процесса эволюции, тогда как при реализации эволюционных стратегий эти параметры подвергаются непрерывным изменениям (так называемая самоадаптация параметров).

Еще одно различие между эволюционными стратегиями и генетическими алгоритмами касается трактовки ограничений, налагаемых на решаемые оптимизационные задачи. Если при реализации эволюционных стратегий на некоторой итерации потомок не удовлетворяет всем ограничениям, то он отвергается и включается в новую популяцию. Если таких потомков оказывается много, то эволюционная стратегия запускает процесс адаптации параметров, например, путем увеличения вероятности скрещивания. В генетических алгоритмах такие параметры не изменяются. В них может применяться штрафная функция для тех особей, которые не удовлетворяют наложенным ограничениям, однако эта технология обладает многими недостатками.

По мере развития эволюционных стратегий и генетических алгоритмов в течение последних лет существенные различия между ними постепенно уменьшаются. Например, в настоящее время при реализации генетических алгоритмов для решения оптимизационных задач все чаще применяется представление хромосом действительными числами и различные модификации «генетических» операторов, что имеет целью повысить эффективность этих алгоритмов. Подобные методы, значительно отличающиеся от классического генетического алгоритма, по традиции сохраняют прежнее название, хотя более корректно было бы называть их «эволюционными алгоритмами». Проблему терминологии мы будем обсуждать несколько позднее.

Эволюционное программирование, также как и эволюционные стратегии, делает основной упор на адаптацию и разнообразие способов передачи свойств от родителя к потомкам в следующих поколениях. Познакомимся со стандартным алгоритмом эволюционного программирования.

Исходная популяция решений выбирается случайным образом. В задачах оптимизации значений действительных чисел (примером которых может служить обучение нейронных сетей) особь (хромосома) представляется цепью значений действительных чисел. Эта популяция оценивается относительно заданной функции (функции приспособленности). Потомки образуются от входящих в эту популяцию родителей в результате случайной мутации. Селекция основана на вероятностном выборе (турнирный метод), при котором каждое решение соперничает с хромосомами, случайным образом выбираемыми из популяции. Решения-победители (оказавшиеся наилучшими) становятся родителями для следующего поколения. Описанная процедура повторяется так долго, пока не будет найдено искомое решение либо не будет исчерпан лимит машинного времени.

Эволюционное программирование применяется для оптимизации функционирования нейронных сетей. Также как и другие эволюционные методы, оно не требует градиентной информации и поэтому может использоваться для решения задач, в которых эта информация недоступна, либо для ее получения требуются значительные объемы вычислений. Одними из первых приложений эволюционного программирования считаются задачи теории искусственного интеллекта, а самые ранние работы касались теории конечных автоматов [13].

Наблюдается большое сходство между эволюционными стратегиями и эволюционными программированием в их приложениях к задачам оптимизации непрерывных функций с действительными значениями. Некоторые исследователи утверждают, что эти процедуры, в сущности, одинаковы, хотя они и развивались независимо друг от друга [13]. Действительно, оба метода похожи на генетические алгоритмы. Принципиальное различие между ними заключается в том, что эволюционное программирование не связано с конкретной формой представления особей, поскольку оператор мутации не требует применения какого-либо специального способа кодирования.

Первый контакт между научными коллективами, развивавшими эволюционные стратегии и эволюционное программирование, состоялся в начале 1992 г., непосредственно перед первой международной конференцией, посвященной эволюционному программированию. Эти методы развивались независимо на протяжении 30 лет. Несмотря на выделенные различия, они имеют много принципиально сходных свойств.

Все три представленных метода, т.е. генетические алгоритмы, эволюционные стратегии и эволюционное программирование объединяются под общим названием эволюционные алгоритмы (evolutionary algorithms). Также применяется термин эволюционные методы (evolutionary methods).

Эволюционными алгоритмами называются и другие методы, реализующие эволюционный подход, в частности, генетическое программирование (genetic programming) [29], представляющее собой модификацию генетического алгоритма с учетом возможностей компьютерных программ. При использовании этого метода популяция состоит из закодированных соответствующим образом программ, которые подвергаются воздействию генетических операторов скрещивания и мутации, для нахождения оптимального решения, которым считается программа, наилучшим образом решающая поставленную задачу. Программы оцениваются относительно определенной специальным образом функции приспособленности. Интересной представляется модификация эволюционных алгоритмов для решения оптимизационных задач методом так называемой мягкой селекции, которая предложена Р. Галаром [14].

Для обозначения разнообразных алгоритмов, основанных на эволюционном подходе, также применяется понятие эволюционных программ (evolution programs) [33]. Этот термин объединяет как генетические алгоритмы, эволюционные стратегии и эволюционное программирование, так и генетическое программирование, а также другие аналогичные методы.

Эволюционные программы можно считать обобщением генетических алгоритмов. Классический генетический алгоритм выполняется при фиксированной длине двоичных последовательностей и в нем применяются операторы скрещивания и мутации Эволюционные программы обрабатывают более сложные структуры (не только двоичные коды) и могут выполнять иные «генетические» операции. Например, эволюционные стратегии могут трактоваться в качестве эволюционных программ, в которых хромосомы представляются вещественными (не двоичными) числами, а мутация используется как единственная генетическая операция.

Структуру эволюционной программы довольно точно отображает блок-схема, приведенная на рис. 4.3. Она совпадает со структурой генетического алгоритма, поскольку идеи эволюционной программы целиком заимствованы из теории генетических алгоритмов. Различия имеют глубинный характер, они касаются способов представления хромосом и реализации генетических операторов. Эволюционные программы допускают большее разнообразие структур данных, поскольку возможно не только двоичное кодирование хромосом, а также предоставляют расширенный набор генетических операторов.

Согласно З. Михалевичу [33], эволюционная программа - это вероятностный алгоритм, применяемый на -й итерации к популяции особей

.

Каждая особь представляет потенциальное решение задачи, которое в произвольной эволюционной программе может отображаться некоторой (в том числе и достаточно сложной) структурой данных . Любое решение  оценивается по значению его «приспособленности». Далее в процессе селекции на -й итерации из наиболее приспособленных особей формируется очередная популяция. Некоторые особи этой новой популяции трансформируются с помощью «генетических операторов», что позволяет получать новые решения. Существуют преобразования  (типа мутации), которые изменяют конкретные хромосомы , а также трансформации более высокого порядка  (типа скрещивания), создающие новые особи путем комбинирования фрагментов нескольких (двух или более) хромосом, т.е. . От эволюционной программы ожидается, что после смены некоторого количества поколений наилучшая особь будет представлять решение, близкое к оптимальному. Структура эволюционной программы может быть представлена в виде псевдокода [33] так, как это изображено на рис. 4.65 (рекомендуется сравнить ее с рис. 4.3).

203.jpg

Рис. 4.65. Представление эволюционной программы в виде псевдокода.

Рассмотрим обобщенный пример эволюционной программы [33]. Допустим, что ищется граф, который удовлетворяет определенным ограничениям (например, производится поиск топологии коммуникационной сети, оптимальной по конкретным критериям, например, по стоимости передачи и т.п.). Каждая особь в эволюционной программе представляет одно из потенциальных решений, т.е. в данном случае некоторый граф. Исходная популяция графов , формируемая случайным образом либо создаваемая при реализации какого-либо эвристического процесса, считается отправной точкой  эволюционной программы. Функция приспособленности, которая обычно задается, связана с системой ограничений решаемой задачи. Эта функция определяет «приспособленность» каждого графа путем выявления «лучших» и «худших» особей. Можно предложить несколько различных операторов мутации, предназначенных для трансформации отдельных графов, и несколько операторов скрещивания, которые будут создавать новый граф в результате рекомбинации структур двух или более графов. Очень часто такие операторы обусловливаются характером решаемой задачи. Например, если ищется граф типа «дерево», то можно предложить оператор мутации, который удаляет ветвь из одного графа и добавляет новую ветвь, объединяющую два отдельных подграфа. Другие возможности заключаются в проектировании мутации независимо от семантики задачи, но с включением в функцию приспособленности дополнительных ограничений - «штрафов» для тех графов, которые не являются деревьями.

Принципиальную разницу между классическим генетическим алгоритмом и эволюционной программой, т.е. эволюционным алгоритмом в широком смысле, иллюстрируют рис. 4.66 и 4.67.

204-1.jpg

Рис. 4.66. Решение задачи с помощью классического генетического алгоритма.

204-2.jpg

Рис. 4.67. Решение задачи с помощью эволюционного алгоритма (эволюционной программы).

Классический генетический алгоритм, который оперирует двоичными последовательностями, требует представить решаемую задачу в строго определенном виде (соответствие между потенциальными решениями и двоичными кодами, декодирование и т.п.). Сделать это не всегда просто.

Эволюционные программы могут оставить постановку задачи в неизменном виде за счет модификации хромосом, представляющих потенциальные решения (с использованием «естественных» структур данных), и применения соответствующих «генетических» операторов.

Другими словами, для решения нетривиальной задачи можно либо преобразовать ее к виду, требуемому для использования генетического алгоритма (рис. 4.66), либо модифицировать генетический алгоритм так, чтобы он удовлетворял задаче (рис. 4.67). При реализации первого подхода применяется классический генетический алгоритм, а при реализации второго подхода - эволюционная программа. Таким образом, модифицированные генетические алгоритмы можно в общем случае называть эволюционными программами [33]. Однако чаще всего встречается термин эволюционные алгоритмы. Эволюционные программы также могут рассматриваться как эволюционные алгоритмы, подготовленные программистом для выполнения на компьютере. Основная задача программиста заключается при этом в выборе соответствующих структур данных и «генетических» операторов. Именно такая трактовка понятия эволюционная программа представляется наиболее обоснованной.

Все понятия, применяемые в настоящем разделе и относящиеся главным образом к методам, основанным на эволюционном подходе, можно сопоставить главному направлению исследований - компьютерному моделированию эволюционных процессов. Эта область информатики называется Evolutionary Computation, что можно перевести как эволюционные вычисления.

К эволюционным алгоритмам также применяется понятие технология эволюционных вычислений. Можно добавить, что название генетические алгоритмы используется как в узком смысле, т.е. для обозначения классических генетических алгоритмов и их несущественных модификаций, так и в широком смысле - подразумевая любые эволюционные алгоритмы, значительно отличающиеся от «классики».

В июле 1996 г. состоялась первая Всепольская конференция по эволюционным алгоритмам, организованная Институтом основ электроники Варшавского политехнического университета и Клубом эволюционных алгоритмов. На этой конференции обсуждалась классификация эволюционных алгоритмов, согласно которой в их состав входят генетические алгоритмы, эволюционные стратегии, эволюционное и генетическое программирование, а также другие технологии эволюционных вычислений, причем именно последние имеют наибольший удельный вес (около 95 %). Это свидетельствует о появлении множества новых методов, основанных на эволюционном моделировании, но использующих базовые технологии - главным образом классический генетический алгоритм, эволюционные стратегии и эволюционное программирование.

Упомянутая конференция также позволила выработать ряд решений по упорядочению терминологии, применяемой для описания эволюционных алгоритмов. Они касались перевода таких базовых понятий, как fitness function, crossover, steady-state и многих других, которые различные авторы переводили с английского языка по собственному усмотрению.

Терминология, применяемая в настоящем разделе, соответствует рекомендациям этой конференции.

 



<< ПредыдущаяОглавлениеСледующая >>