Эволюционное программирование
Эволюционное программирование - является одной из четырех основных парадигм эволюционного алгоритма. Это похоже на генетическое программирование, но структура оптимизируемой программы является фиксированной, а ее числовые параметры могут изменяться.
История
Эволюционное программирование было изобретено доктором Лоренсом Дж. Фогелом в Национальном научном фонде в 1960 году. Ему было поручено представить доклад Конгрессу США на сумму инвестиций в фундаментальные исследования. Одним из вопросов рассмотрения был искусственный интеллект.
В то время искусственный интеллект был ограничен двумя основными направлениями исследований: моделированием человеческого мозга (нейронные сети) и моделированием решения проблем поведения человека (эвристическое программирование). Альтернативный вариант, предусмотренный Фогелом, должен был отказаться от моделирования конечного продукта эволюции, и, скорее, моделировать процесс эволюции, используя себя в качестве транспортного средства для получения разумного поведения (Фогел, 1962, 1963). Фогел рассматривает интеллект как составную часть способности делать предсказания окружающей среды в сочетании с переводом каждого прогноза в подходящий ответ в свете заданной цели (например, для максимизации функции выигрыша). Таким образом, по его мнению прогнозирование является необходимым условием для разумного поведения. Моделирование эволюции как оптимизации процесса явилось следствием опыта Фогела в новых областях «биотехнологии», кибернетики и техники. Фогел провел серию экспериментов, в которых автоматы представляли отдельные организмы. Автоматы - это графические модели, используемые для описания поведения или программного обеспечения и аппаратных средств, поэтому он назвал свой подход эволюционным программированием.
Достоинства эволюционного программирования были изучены Фогелом после его возвращения в Сан-Диего в июле 1961 при обращении к проблемам прогнозирования системы идентификации и контроля в серии исследований, возглавляемых тогда Фогелом и его коллегами, ведущими учеными в области эволюционных вычислений. В некоторых ранних описаниях эволюционного программирования Фогел неправильно утверждал, что оно было ограничено одним родителем и одним потомком.
В 1964 году Фогел получил докторскую степень в области электротехники в Калифорнийском университете в Лос-Анджелесе. Его диссертация «О происхождении интеллекта», была посвящена искусственному интеллекту путём имитации эволюции. Ранние работы также привели Фогела, Аля Оуэнса и Майкла Уолша к созданию решений для Science, Inc в 1965 году. Это была первая компания в мире, занимавшаяся исключительно коммерциализацией эволюционных алгоритмов.
В 1970, благодаря в первую очередь руководству профессора Дональда Дирхолта в Университете штата Нью-Мексико, было опубликовано более широкое исследование вычислений для эволюционного программирования, чем для любых других форм моделируемой эволюции. Большинство этих исследований использовали эволюционные программы для распознавания образов (Root, 1970; Корнетт, 1972; Lyle, 1972; Holmes, 1973; Trellue, 1973; Монтес, 1974; Атмар, 1976; Винсент, 1976; Вильямс, 1977; Dearholt, 1976). В качестве примера для распознавания использовались главным образом рукописные символы. В эксперименты включили параметры адаптивных мутаций. Работа Атмара (1976) — один из ранних примеров имитации эволюции в обстановке искусственной жизни. Атмар (1976), возможно, первый предложил и описал, как эволюционное программирование может быть рассчитано на то, что сейчас известно как «расширенная база оборудования». Ангелине и Поллак (1993) описали, как эволюционное программирование может быть использовано для развития компьютерных программ.
Гипотезы о виде зависимости целевой переменной от других переменных формулируются системой в виде программ на некотором внутреннем языке программирования. Если это универсальный язык, то теоретически на нем можно выразить зависимость любого вида. Процесс построения таких программ строится как эволюция в мире программ (этим метод немного похож на генетические алгоритмы). Если система находит программу, которая точно выражает искомую зависимость, она начинает вносить в неё небольшие модификации и отбирает среди построенных таким образом дочерних программ те, которые повышают точность. Система "выращивает" несколько генетических линий программ, конкурирующих между собой в точности нахождения искомой зависимости. Специальный транслирующий модуль, переводит найденные зависимости с внутреннего языка системы на понятный пользователю язык (математические формулы, таблицы и др.), делая их легкодоступными. Для того, чтобы сделать полученные результаты более понятными для пользователя-нематематика, существует большой арсенал разнообразных средств визуализации выявленных зависимостей.
Поиск зависимости целевых переменных от других проводится в форме функций какого-нибудь определенного вида. Например, в одном из наиболее удачных алгоритмов этого типа - методе группового учета аргументов (МГУА) зависимость ищут в форме полиномов. Причем сложные полиномы заменяются несколькими простыми, учитывающими лишь некоторые признаки (группы аргументов). Обычно используются попарные объединения признаков. Этот метод не имеет больших преимуществ по сравнению с нейронными сетями с готовым набором стандартных нелинейных функций, но, полученные формулы зависимости, в принципе, поддаются анализу и интерпретации (хотя на практике это все-таки сложно).
Современное эволюционное программирование
Изучение эволюционного программирования было продолжено в 1980-х в использовании произвольных представлений данных и применялось к обобщенной проблеме оптимизации. Эволюционное программирование, основанное на случайной изменчивости и отборе, было применено к таким структурам, как вещественные векторы (Фогель и Атмар, 1990; Фогель , 1990; Дэвис, 1994), перестановки (Фогель, 1998), матрицы (Фогель, 1993), векторы переменной длины (Фогель, 1990), бинарные строки (Фогель, 1989) и так далее. Дэвид Фогель (1988) представил форму отбора эволюционного программирования при помощи турнира. Фогель (1991, 1992) также выдвинул идею самостоятельной адаптации изменения параметров, в которых содержится информация о путях решения проблемы, а также информация о том, как создать потомство.
Области применения
Эволюционное программирование было применено к различным инженерным задачам, включая маршрутизацию трафика и планирование (Макдоннелл, 1997), фармацевтические дизайны (Дункан и Олсон, 1996; Фогель, 1996), эпидемиологию (Фогель , 1986), выявление рака (Фогель 1997, 1998), военное планирование (Фогель, 1993), системы управления (Чон, 1997), системы идентификации (Фогель, 1990), обработки сигналов (Порто, 1990), энергетику (Лай Ма, 1996), обучение в играх (Фогель и Бургин, 1969) и т. д.
Литература
- Рутковский Л. Методы и технологии искусственного интеллекта. — М.: Горячая линия-Телеком, 2010. — С. 520. — ISBN 5-9912-0105-6.
- Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы = Sieci neuronowe, algorytmy genetyczne i systemy rozmyte. — 2-е изд.. — М.: Горячая линия-Телеком, 2008. — С. 452. — ISBN 5-93517-103-1.
- J.W. Atmar. «Speculation on the evolution of intelligence and its possible realization in machine form». — 1976.
- F.N. Cornett. «An application of evolutionary programming to pattern recognition». — 1972.
- D.B. Fogel. «Speculation on the evolution of intelligence and its possible realization in machine form». — 1990.
- L.J. Fogel. «Biotechnology: Concepts and Applications». — 1963.