
- •Глава 5
- •5.1. Модель искусственного нейрона
- •5.2. Модели нейронных сетей
- •5.3. Построение нейронной сети
- •5.4. Обучение нейронных сетей
- •Глава 6
- •6.1.2. Разновидности генетических алгоритмов
- •6.1.4. Краткий обзор программных средств
- •6.2.1. Генетическое программирование
- •6 2 2 Эволюционное программирование
- •6.2.3. Эволюционные стратегии
- •Глава 7
- •7.1.1. Характеристики интеллектуальных агентов
- •7.1.2. Архитектуры мультиагентных систем
- •7.2. Коллективное поведение агентов
- •7.3. Примеры мультиагентных систем
- •Глава 8
- •101000, Москва, ул. Покровка, 7
- •182100, Великие Луки, ул. Полиграфистов, 78/12
6.2.1. Генетическое программирование
Методы генетического программирования были разработаны в начале 1990-х гг. Дж. Козой [27 — 29]. Генетическое программирование — это способ создания компьютерных программ для задач с неизвестным алгоритмом решения. Объектом эволюции является программа, а популяция содержит множество различных программ. Совершенствование объекта осуществляется на основе отбора в соответствии с определенной функцией ценности (fitness function). Программы строятся из блоков, которые представляют собой примитивные функции и терминалы. В качестве примитивных функций обычно рассматриваются арифметические и логические операции, математические функции и функции специального вида, характерные для класса решаемых задач. Множество терминалов содержит разнообразные данные, не создаваемые программой. Цель состоит в построении наилучшей программы в пространстве программ, которые могут быть составлены из заданных функций и терминалов с учетом определенных правил синтаксиса.
Технология генетического программирования включает cле-дующие этапы.
292
Этап 1. Формирование множества терминалов, множества примитивных функций, синтаксических правил и критериев оценки создаваемых программ.
Этап 2. На основе закона случайности создается начальная популяция компьютерных программ, ориентированных на решение поставленной задачи.
Этап 3. Каждая программа выполняется, а результаты ее работы оцениваются с помощью fitness function (целевой функции).
Этап 4. Формируется новая популяция программ, в которую сгенерированные программы могут попасть с вероятностью, пропорциональной значению целевой функции.
Этап 5. Реализуются генетические операторы репродукции, скрещивания и мутации. В результате репродукции осуществляется копирование уже созданных программ с хорошими значениями целевой функции. Оператор скрещивания создает новые программы путем комбинирования фрагментов существующих программ. Мутация заключается в замене некоторого фрагмента программы случайно порожденным символьным выражением.
Этап 6. Производится тестирование программ-членов новой популяции и принимается решение о продолжении процесса эволюции. Продолжать генерацию новых популяций имеет смысл тогда, когда максимальные и средние значения целевой функции улучшаются.
Рассмотрим
пример [27] модификации программы на
языке LISP,
где в качестве терминалов используются
переменные логического
типаа
для их обработки применяются логические
операции
Пусть
на некотором шаге имеется следующее
множество допустимых выражений:
Эти выражения можно представить в виде деревьев (рис. 6.9). В процессе эволюции на уровне поддеревьев осуществляется рекомбинация и получаются потомки (рис. 6.10). Первый из этих
293
Результатом применения оператора мутации является замена части дерева другим выражением, сгенерированным случайным образом. Точка мутации также выбирается случайно.
Идеи генетического программирования положены в основу программ, которые называются симуляторами «искусственной жизни». В работе Дж. Козы [27] приводится следующий пример подобной программы. На тороидальной сетке размером 32x32, в 89 ячейках помещается «пища». Существуют некие препятствия, мешающие «насекомым» добраться до «пищи». «Насекомые» попадают на сетку из одной точки, и каждое движется согласно командам своей программы. В начальной популяции эти программы формируются случайным образом из операторов, которые проверяют наличие препятствий и предписывают движение прямо, влево или вправо. Задается время жизни популяции (400 ша-
Рис. 6.9. Представление символьных выражений языка LISP в виде деревьев
294
Рис. 6.10. Потомки от скрещивания родителей на уровне поддеревьев
гов). Цена каждой программы определяется числом шагов, которые необходимо совершить, чтобы обойти все ячейки с «пищей». Каждая следующая популяция формируется из предыдущей с помощью генетических операторов репродукции, скрещивания и мутации с учетом ценности программ предыдущей популяции. Решение для популяции из 4000 «насекомых» было найдено за 20 итераций.
Последователи Дж. Козы исследовали в своих работах возможность использования ГП для синтеза сложных автоматов, а также для структурной идентификации динамических систем [19].
В примере построения экономической балансовой модели [13] поставлена цель уточнения эконометрического уравнения обмена, связывающего уровень цен, валовой национальный продукт (ВНП), запас денег и скорость оборота денег в экономике.
В качестве терминалов здесь используются следующие переменные: ВНП82 - уровень ВНП за 1982 г.; GD - дефлятор ВНП (выходная переменная модели), нормализованный к единице для 1982 г.; FM- ежемесячная величина запаса денег. Приведенные переменные являются функциями времени. Их значения определяются на основе статистических данных в виде временных рядов. Кроме того, используется множество обобщенных констант действительного типа R.
295
Для обработки переменных предусмотрены следующие операции: сложение (+); вычитание (-); умножение (*); защищенное деление (%), результатом которого является единица при попытке разделить на 0; защищенное логарифмирование (RLOG), дающее 1 при нулевом значении аргумента; вычисление экспоненты (ЕХР).
Грубая оценка пригодности сгенерированных уравнений вычисляется как сумма квадратов отклонений расчетных значений от фактических в заданных экспериментальных точках:
Значениемасштабируется
в целях получения нормированной
оценки пригодности
которая
изменяется
на
интервале [0, 1] и позволяет перейти к
задаче максимизации. На
основевычисляется
относительная нормированная
оценка
пригодности
которая
имеет более
высокие
значения для лучших членов популяции
и обладает свойствомдопускающим
вероятностную интерпре-
тацию.
Критерием окончания процесса эволюции является достижение заданного числа генераций (50) или достижение наилучшего значения целевой функции. Численность популяции была принята равной 500. В процессе генерации новых поколений скрещивание проводилось на 9Q% численности популяции, т.е. из каждого поколения выбиралось 225 пар родителей с вероятностью, равной относительной оценке их пригодности. Кроме того, для каждой новой популяции осуществлялась репродукция 10% лучших представителей поколения.
Генерируемые модели (программы) удобно представить в виде древовидных структур (рис. 6.11).
296
Рис. 6.11. Древовидное представление компьютерных моделей, отобранных для скрещивания: а - родитель 1; б - родитель 2
Представленные
на рис. 6.11 модели соответствуют
выражениямОперацияскрещивания
начинается со случайного и независимого
выбора точки
кроссинговера в каждой из двух
моделей-родителей. Отсеченные
фрагменты программ-родителей, обозначенные
пунктиром,
меняются местами, и в результате
образуются две модели-потомка
(рис. 6.12). Потомкам соответствуют
уравнения
Рис. 6.12. Модели-потомки, полученные в результате скрещивания
297
Оператор
мутации в данном примере выполнялся
путем замены
функций в узлах деревьев либо путем
случайного изменения значений констант.
Используя
статистические данные за 30 лет (заметим,
что в примере
исследовалась экономика США в период
с 1959 по 1988
г.), генетический алгоритм за 50
последовательных генераций
выдал наилучшее решениекоторое
хорошо
согласуется с известным эконометрическим
уравнением обмена
гдеР
—
уровень цен; М
—
запасы денежной массы;
V—
скорость
обращения денег в экономике; Q
—
валовой национальный
продукт.