Что-то довольно раздражающее в эволюционных вычислениях - то, что мягко различные и перекрывающиеся понятия имеют тенденцию выбирать существенно различные имена. Мой последний беспорядок из-за этого состоит в том, что программирование экспрессии гена кажется очень похожим на декартово генетическое программирование.
Ну, похоже, что есть некоторая разница между программированием экспрессии генов (GEP) и картезианским генетическим программированием (CGP или то, что я считаю классическим генетическим программированием), но эта разница может быть более раздута, чем это действительно должно быть. Обратите внимание, что я никогда не использовал GEP, поэтому все мои комментарии основаны на моем опыте работы с CGP.
В CGP нет различия между генотипом и фенотипом, другими словами - если вы смотрите на "гены" CGP, вы также смотрите на их выражение. Здесь нет кодирования, т.е. дерево экспрессии является самим геном".
В GEP генотип выражается в фенотипе, поэтому, если вы смотрите на гены, вы не сможете легко узнать, как будет выглядеть экспрессия. Изобретательница" GP, Кандида Феррейра, написала действительно хорошую статью, и есть несколько других ресурсов, которые пытаются дать краткий обзор всей концепции.
Ферриера говорит, что преимущества "очевидны", но я действительно не вижу ничего, что обязательно сделало бы GEP лучше, чем CGP. По-видимому, GEP является мультигенным, что означает, что в выражении признака участвуют несколько генов (т.е. дерево экспрессии). В любом случае, пригодность рассчитывается по дереву экспрессии, поэтому не похоже, что GEP делает что-то для увеличения пригодности. Автор утверждает, что GEP увеличивает скорость достижения пригодности (т.е. за меньшее число поколений), но, честно говоря, вы можете увидеть значительные изменения в производительности по сравнению с CGP, просто используя другой алгоритм отбора, другую структуру турнира, разбив популяцию на племена, перемещая особей между племенами, включая разнообразие в пригодность и т.д.
Отбор:
Частота турнира:
Структура турнира:
Племена
Популяция может быть разделена на племена, которые развиваются независимо друг от друга:
Фитнес разнообразия
Включить разнообразие в фитнес, где вы подсчитываете, сколько особей имеют одинаковое значение фитнеса (таким образом, вероятно, имеют одинаковый фенотип), и штрафуете их фитнес на пропорциональную величину: чем больше особей с одинаковым значением фитнеса, тем больше штраф для этих особей. Таким образом, особи с уникальными фенотипами будут поощряться, поэтому в популяции будет гораздо меньше застоя.
Это лишь некоторые из вещей, которые могут сильно повлиять на производительность CGP, и когда я говорю "сильно", я имею в виду, что это в том же порядке или больше, чем производительность Ferriera. Так что если Ферриера не слишком много возилась с этими идеями, то она могла наблюдать гораздо более медленную работу CGP... особенно если она ничего не делала для борьбы с застоем. Поэтому я бы был осторожен, читая статистику производительности GEP, потому что иногда люди не учитывают все имеющиеся там "оптимизации".