Введение

Структура данных и типы для эволюционных вычислений
В компьютерном программировании генетическое представление — это способ представления решений/индивидуумов в методах эволюционных вычислений. Этот термин охватывает как конкретные структуры данных, так и типы данных, используемые для реализации генетического материала кандидатных решений в форме генома, а также взаимосвязь между пространством поиска и пространством задачи. В простейшем случае пространство поиска соответствует пространству задачи (прямое представление). Выбор представления задачи связан с выбором генетических операторов, и оба этих фактора оказывают решающее влияние на эффективность оптимизации. Генетическое представление может кодировать внешний вид, поведение, физические свойства индивидуумов. Различия в генетических представлениях являются одним из основных критериев, разграничивающих известные классы эволюционных вычислений. Терминология часто аналогична терминологии естественной генетики. Блок компьютерной памяти, представляющий одно кандидатное решение, называется индивидуумом. Данные в этом блоке называются хромосомой. Каждая хромосома состоит из генов. Возможные значения конкретного гена называются аллелями. Программист может представлять всех индивидуумов популяции, используя двоичное кодирование, перестановочное кодирование, древовидное кодирование или одно из множества других представлений.

Представления в некоторых популярных эволюционных алгоритмах

Генетические алгоритмы (ГА) обычно используют линейные представления, которые часто, но не всегда, являются бинарными. В целом, и генетические алгоритмы в частности, хотя реализация кроссовера в этом случае более сложна. Стратегия эволюции использует линейные представления с вещественными значениями, например, массив вещественных чисел. В основном применяются гауссова мутация и кроссовер, основанный на смешивании или усреднении. Генетическое программирование (ГП) впервые предложило древовидные представления и разработало генетические операторы, подходящие для них. В ГП древовидные представления используются для представления и эволюции функциональных программ с заданными свойствами. Генетический алгоритм, основанный на человеке (HBGA), предлагает способ избежать решения сложных задач представления, передавая все генетические операторы внешним агентам, в данном случае, людям. Алгоритму не требуется знание конкретного фиксированного генетического представления, пока имеется достаточное количество внешних агентов, способных обрабатывать эти представления, что позволяет использовать генетические представления произвольной формы и подвергать их эволюции.

Различие между поисковым пространством и проблемным пространством

Аналогично биологии, эволюционные алгоритмы (ЭА) различают пространство решений (соответствует фенотипу) и пространство поиска (соответствует генотипу). Пространство решений содержит конкретные решения рассматриваемой задачи, а пространство поиска – их закодированные представления. Преобразование из пространства поиска в пространство решений называется отображением генотип-фенотип. Генетические операторы применяются к элементам пространства поиска, а для оценки элементы пространства поиска преобразуются в элементы пространства решений посредством отображения генотип-фенотип.

Отношения между поисковым пространством и проблемным пространством

Важность правильного выбора пространства поиска для успешного применения эволюционного алгоритма была признана на ранних этапах. К подходящему пространству поиска, а следовательно, и к подходящему отображению генотипа на фенотип, можно предъявить следующие требования:

Полная информация

Все возможные допустимые решения должны содержаться в пространстве поиска.

Избыточность

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

Местность

Локальность генетического представления соответствует степени сохранения расстояний в пространстве поиска в проблемном пространстве после отображения генотипа в фенотип. Иными словами, представление обладает высокой локальностью, если соседи в пространстве поиска являются также соседями в проблемном пространстве. Для того чтобы успешные схемы не разрушались при отображении генотипа в фенотип после небольшой мутации, локальность представления должна быть высокой.

Масштабирование

При отображении генотипа в фенотип элементы генотипа могут масштабироваться (иметь разный вес). Самый простой случай – равномерное масштабирование: все элементы генотипа вносят одинаковый вклад в формирование фенотипа. Распространенным является экспоненциальное масштабирование. Если целые числа представлены в двоичном коде, отдельные цифры полученного двоичного числа имеют экспоненциально различающиеся веса при представлении фенотипа. Например, число 90 в двоичной системе (то есть в системе с основанием 2) записывается как 1011010. Изменение одной из старших цифр в двоичной записи оказывает значительно большее влияние на закодированное число, чем изменение любой из младших цифр (давление отбора экспоненциально сильнее воздействует на старшие цифры). По этой причине экспоненциальное масштабирование приводит к случайной фиксации "задних" позиций в генотипе до того, как популяция приблизится к оптимуму и сможет учесть эти нюансы.

Гибридизация и восстановление в картографировании генотипов и фенотипов

При сопоставлении генотипа с оцениваемым фенотипом, знания в конкретной области могут быть использованы для улучшения фенотипа и/или обеспечения выполнения ограничений. Это распространенный метод повышения эффективности эволюционных алгоритмов с точки зрения времени работы и качества решения. Ниже это проиллюстрировано на примере двух из трех случаев.

Пример прямого представления

Очевидный и широко используемый способ кодирования задачи коммивояжера и связанных с ней задач — последовательная нумерация посещаемых городов и хранение их в хромосоме в виде целых чисел. Генетические операторы должны быть соответствующим образом адаптированы таким образом, чтобы они изменяли только порядок городов (генов), не допуская их удаления или дублирования. Таким образом, порядок генов соответствует порядку городов, и существует простое взаимно однозначное соответствие.

Пример сложного отображения генотипа-фенотипа.

В задаче планирования с гетерогенными и частично альтернативными ресурсами, которые необходимо назначить набору подзадач, геном должен содержать всю необходимую информацию для отдельных операций планирования или возможность её получения из него. Помимо порядка выполнения подзадач, это включает информацию о выборе ресурсов. Фенотип представляет собой список подзадач с указанием времени их начала и назначенных ресурсов. Для его создания необходимо сформировать столько матриц распределения, сколько ресурсов может быть выделено для одной подзадачи. В простейшем случае это один ресурс, например, одна машина, способная выполнить подзадачу. Матрица распределения – это двумерная матрица, одна размерность которой представляет доступные единицы времени, а другая – ресурсы для распределения. Пустые ячейки матрицы указывают на доступность, а запись – на номер назначенной подзадачи. Создание матриц распределения, во-первых, исключает недопустимые множественные назначения. Во-вторых, из них можно определить время начала подзадач и назначенные ресурсы. Распространенным ограничением при планировании ресурсов для подзадач является то, что ресурс может быть выделен только один раз за единицу времени, а резервирование должно быть непрерывным. Для своевременного достижения этой цели, которая является общей задачей оптимизации, а не ограничением, можно использовать простую эвристику: выделять необходимый ресурс на требуемый период времени как можно раньше, избегая дублирования резервирования. Преимущество этой простой процедуры двояко: она позволяет избежать ограничения и способствует оптимизации. Если задача планирования модифицирована для планирования рабочих процессов вместо независимых подзадач, то хотя бы некоторые этапы рабочего процесса должны выполняться в заданном порядке. Если описанная ранее эвристика планирования определяет, что предшественник этапа работы не завершен к моменту его запуска, то может помочь следующий механизм исправления: отложить планирование этого этапа работы до завершения всех его предшественников. Это призвано проиллюстрировать другое применение эвристики в отображении генотипа в фенотип: на прямоугольной поверхности необходимо расположить объекты различных геометрических типов таким образом, чтобы минимизировать неиспользованную площадь. Объекты можно вращать, они не должны перекрываться после размещения и должны полностью находиться на поверхности. Связанной задачей является минимизация отходов при резке деталей из стального листа или ткани. Координаты центров объектов и угол поворота, приведенный к возможным изоморфизмам геометрии объектов, можно рассматривать как определяемые переменные. Если это делать напрямую с помощью генетического алгоритма, вероятно, возникнет много перекрытий. Чтобы избежать этого, генетический алгоритм определяет только угол и координаты одной стороны прямоугольника. Затем каждый объект поворачивается и помещается на край этой стороны, при необходимости смещаясь, чтобы он находился внутри прямоугольника при последующем перемещении. После этого он перемещается параллельно другой стороне, пока не коснется другого объекта или не достигнет противоположного конца прямоугольника. Таким образом, перекрытия исключаются, а неиспользуемая площадь уменьшается при каждом размещении, но не в целом, что остается задачей оптимизации.