Введение

Решатели задач методом проб и ошибок с метаэвристическим или стохастическим характером оптимизации.

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

История

Концепция имитации эволюционных процессов для решения задач возникла задолго до появления компьютеров, например, когда Алан Тьюринг предложил метод генетического поиска в 1948 году. Машины типа B u Тьюринга напоминают примитивные нейронные сети, а связи между нейронами изучались посредством своеобразного генетического алгоритма. Его машины типа P u напоминают метод обучения с подкреплением, где сигналы удовольствия и боли направляют машину к освоению определенных моделей поведения. Однако статья Тьюринга была опубликована лишь в 1968 году, а он умер в 1954 году, поэтому эта ранняя работа оказала незначительное или вообще никакого влияния на область эволюционных вычислений, которая впоследствии получила развитие. Эволюционные вычисления как самостоятельная область начали активно развиваться в 1950-х и 1960-х годах. В 1962 году Лоуренс Дж. Фогель начал исследования в области эволюционного программирования в Соединенных Штатах, которые рассматривались как попытка создания искусственного интеллекта. В этой системе конечные автоматы используются для решения задач прогнозирования: эти автоматы подвергаются мутациям (добавление или удаление состояний, либо изменение правил перехода между состояниями), а лучшие из мутировавших автоматов подвергаются дальнейшей эволюции в последующих поколениях. Полученный конечный автомат может использоваться для генерации прогнозов по мере необходимости. Метод эволюционного программирования успешно применялся к задачам прогнозирования, идентификации систем и автоматического управления. Впоследствии он был расширен для обработки данных временных рядов и моделирования эволюции игровых стратегий. Изначально эта техника оптимизации выполнялась без использования компьютеров, вместо этого для определения случайных мутаций использовались игральные кости. К 1965 году вычисления полностью перешли к машинному выполнению. В то время как другие подходы были сосредоточены на решении конкретных задач, Голланд в первую очередь стремился использовать генетические алгоритмы для изучения адаптации и определения способов ее моделирования. Популяции хромосом, представленных в виде битовых строк, преобразовывались посредством процесса искусственного отбора, отбирая определенные биты "аллели" в битовой строке. Среди других методов мутации использовались взаимодействия между хромосомами для моделирования рекомбинации ДНК между различными организмами. В отличие от предыдущих методов, отслеживавших только один оптимальный организм за раз (где потомки конкурировали с родителями), генетические алгоритмы Голланда отслеживали большие популяции (где множество организмов конкурировало в каждом поколении). К 1990-м годам появился новый подход к эволюционным вычислениям, получивший название генетического программирования, одним из сторонников которого был Джон Коза. Еще одним пионером в 1950-х годах был Алекс Фрейзер, опубликовавший серию статей о моделировании искусственного отбора. С ростом академического интереса, значительное увеличение вычислительной мощности компьютеров позволило реализовать практические приложения, включая автоматическую эволюцию компьютерных программ. Эволюционные алгоритмы теперь используются для решения многомерных задач более эффективно, чем программное обеспечение, разработанное людьми, а также для оптимизации проектирования систем.

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

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

Эволюционные алгоритмы и биология

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