Параллельные генетические алгоритмы
4.7. Коэволюционные ГА
Данный тип ГА заимствует у природы явления кооперации и конкуренции и использует обычно две подпопуляции (в общем случае число подпопуляций может быть и больше). Разработаны несколько видов кооэволюционных ГА, которые разделяются на кооперативные и конкурирующие ГА [6]. Коэволюция между видами достаточно широко распространена в природе.
Рассмотрим известный пример Дж.Холланда [7] коэволюции конкурирующего типа на примере эволюции взаимодействия растения и насекомых. Некоторые виды растений живут в среде, содержащей насекомые, которые поедают эти растения. В этом случае "игра на выживание" содержит две основные компоненты: 1) чтобы выжить, растения используют механизм эволюции для защиты от насекомых; 2) насекомые используют растение в качестве пищи для выживания. И растения и насекомые эволюционируют вместе и стремятся приобрести (или усилить) свойства, которые помогают им выжить. Например, растения могут в результате эволюции приобрести твердую защитную поверхность (кожицу), что ведет к эволюции насекомых с более сильными челюстями. Или насекомые в результате эволюции начинают вырабатывать ядовитые вещества для данного вида насекомых. В этом случае последующие поколения насекомых начинают вырабатывать энзимы, которые нейтрализуют этот яд. Эффект коэволюции заключается в том, что каждое последующее поколение и растений и насекомых становится лучше, что помогает им выживать в окружающей среде. Данный биологический пример представляет коэволюцию конкурирующего вида типа "хищник-жертва", где присутствует обратная отрицательная связь между видами. Здесь победа для одного вида означает поражение для другого вида. Чтобы выжить проигравший вид адаптируется к новым свойствам победителя. В течение этого процесса сложность как хищника, так и жертвы могут сильно возрасти.
Альтернативой является коэволюционный процесс симбиоза, где различные виды не конкурируют, а вступают в кооперацию. В этом случае успех одного вида улучшает способность выживания других видов и достигается это за счет положительной обратной связи.
В стандартных ГА эволюция обычно рассматривается как попытка адаптации в фиксированной внешней среде. Напротив, в коэволюционных ПГА реализуется эволюция во внешней среде, которая изменяется вследствие воздействия других популяций. Кроме этого, коэволюционные ПГА существенно отличаются от стандартных ГА по методу вычисления фитнесс-функции. В обычных ГА используется абсолютные значения фитнесс-функции, определяющие качество особи в популяции. С другой стороны, в коэволюционных ГА не применяются абсолютные значения фитнесс-функции, а используется значения фитнесс-функции относительно некоторых оппонентов.
Как указано ранее, разработаны два основных класса коэволюционных ГА: конкурирующие и кооперативные. Для каждого из них различают согласно [7] ряд подклассов. Для конкурирующей коэволюции это: 1) Конкуренция (Competition), где оба вида соперничают друг с другом. Благодаря отрицательной обратной связи между видами успех одного вида воспринимается как неудача для другого вида. 2) Аменсализм (Amensalism), где неудача одного вида не воздействует на другой вид.
Для кооперативной эволюции различают: 1) мутуализм (mutualism), где оба вида сотрудничают с выгодой для себя и между ними существует положительная обратная связь; 2) комменсализм (commensalism), где выигрывает один вид, в то время как на как второй вид этот процесс не оказывает воздействия; 3) Паразитизм (parasitizm), где один вид (паразиты) выигрывает, в то время как второму виду причиняется вред. Далее мы более подробно рассмотрим только два подкласса: конкурирующая коэволюция типа "хищник-жертва" и кооперативная коэволюция типа мутуализм.
4.7.1. Конкурирующая коэволюция
На практике более распространены кооперативные коэволюционные ГА. Здесь взаимодействие между подпопуляциями осуществляется только за счет оценки значений фитнесс-функций. В этом случае обычно эволюционируют одновременно две популяции. Особи первой популяции представляют решение проблемы, в то время как особи второй популяции представляют тесты для особей первой популяции. Особи первой популяции эволюционируют чтобы решить как можно больше тестовых задач из второй популяции, а эволюция особей тестовой популяции повышает сложность тестовых задач. Значение фитнесс-функции особей основной популяции пропорционально числу тестов, решаемых данной особью. Наоборот, значение фитнесс-функции второй популяции обратно пропорционально числу особей (стратегий), которые решают ее. Таким образом, движущей силой конкурирующей эволюции является относительная фитнесс-функция, которая оценивает характеристики особей основной популяции относительно особей тестовой популяции, в отличие от классичекого ГА, где используется абсолютное значение фитнесс-функции.
Для вычисления значения относительной фитнесс-функции важны, прежде всего, два следующих аспекта: 1) какие особи конкурирующей популяции используются; 2) каким образом эти особи используются для вычисления значения относительной фитнесс-функции
Рассмотрим первый аспект, в котором определяется, как могут отбираться особи конкурирующей популяции для вычисления значений относительной фитнесс-функции. Используются следующие основные методы отбора:
- Все против всех, где каждая особь тестируется относительно каждой особи другой популяции.
- Случайный отбор, где фитнесс-значение каждой особи тестируется относительно случайно выбранной группы особей другой популяции. Очевидно, что этот метод требует меньших вычислительных ресурсов, чем предыдущий.
- Турнирный отбор, который использует значения относительной фитнесс-функции для отбора лучших особей – оппонентов.
- Все против лучшего, при котором все особи тестируются относительно лучшей особи конкурирующей популяции.
- Совместное тестирование, где тест выбирается в виде особи оппонента с максимальной конкурирующей совместной фитнесс-функцией. Этот вид тестирования ведет к выбору оппонентов, которые побеждают (решают тесты) большое число особей из конкурирующей популяции.
Далее рассмотрим второй аспект, где представлены различные варианты относительной фитнесс-функции в которых измеряется относительное фитнесс-значение для каждой особи популяции. Предположим, что две популяции и коэволюционируют и для этого необходимо оценить относительную фитнесс-функцию каждой особи популяции . Наиболее распространенными являются следующие виды задания относительных фитнесс-функций:
- Простая фитнесс-функция, где тестируемые особи берутся из популяции и подсчитывается число особей , для которых является победителем. В этом случае значение относительной фитнесс-функции определяется суммой успешных тестирований для .
- Раздельная фитнесс-функция, которая определяется с учетом подобия особей популяции . При этом значение фитнесс-функции особи делится на сумму его подобий с другими особями этой популяции. Подобие можно определить как число особей, которые также побеждают особи из популяции . Такое определение поощряет необычные особи, непохожие на остальные особи популяции.
- Конкурирующая раздельная фитнесс-функция, где значение фитнесс-функции для особи определяется следующим образом , где определяет тестовую популяцию и -общее число особей в популяции , которые побеждают особь . Эта фитнесс-функция поощряет особи популяции побеждающие особи популяции , которые не могут "побить" другие особи . Это не является необходимым в том случае, когда лучшая особь побеждает большую часть особей .
- Турнирная фитнесс-функция использует для ранжирования особей двоичный турнир с уничтожением одной слабой особи. В результате функция дает дерево турниров с лучшей особью в корне. На каждом уровне дерева случайно выбираются два оппонента этого уровня и лучший из них продвигается на следующий уровень. В случае нечетного числа конкурентов единственная имеющаяся особь этого уровня продвигается на следующий уровень. После турнирного ранжирования любой стандартный оператор может быть использован для выбора родителей.
В стандартных ГА элитизм является механизмом, который обеспечивает выживание лучших родительских особей, которые в результате попадают в следующую популяцию. Чтобы выжить в течение многих поколений, особь должна иметь высокие значения фитнесс-функции почти в каждом поколении. Для коэволюции введен механизм "hall of fame" [8] ("зал славы"), который обобщает элитизм во времени. Здесь в каждом поколении лучшая особь популяции запоминается в этом "зале популярности". Естественно он имеет фиксированный размер, и при пополнении новые лучшие особи вытесняют половину худших старых особей. Особи одной популяции здесь соревнуются с текущей тестовой популяцией и половиной "зала популярности".
Общий алгоритм А4.1 конкурирующей коэволюции предполагает использование двух популяций. Здесь представляет популяцию решений, и - тестовую популяцию. Случай с одной популяцией представлен в алгоритме А4.2.
Характеристики коэволюционных алгоритмов можно улучшить если две конкурирующие популяции сильно отличаются друг от друга. Такое разнообразие можно поддерживать путем ввода механизма, который содействует образованию ниш. В этом случае эффективны раздельное тестирование с применением раздельных фитнесс-функций.