Какой эволюционный алгоритм оптимизации бинарных задач?

В нашей программе мы годами используем генетический алгоритм для решения задач с n переменными, каждая из которых имеет фиксированный набор из m возможных значений. Обычно это хорошо работает для ~ 1000 переменных и 10 возможностей.

Теперь у меня есть новая задача, в которой для каждой переменной существуют только две возможности (вкл./выкл.), но мне, вероятно, придется решать системы с 10 000 или более переменными. Существующий GA работает, но решение улучшается очень медленно.

Все советники, которые я нашел, предназначены скорее для непрерывных или целочисленных/плавающих задач. Какой из них лучше всего подходит для бинарных задач?


person RED SOFT ADAIR    schedule 31.10.2011    source источник
comment
Можете ли вы предоставить более подробное описание проблемы, которую необходимо решить?   -  person socha23    schedule 31.10.2011
comment
Вы можете думать об этом как о ряде «переключателей» в электронных схемах, которые необходимы для выполнения некоторых критериев безопасности. Определяем расположение цепей и количество возможных положений переключателя. Затем мы хотим свести к минимуму количество необходимых переключателей.   -  person RED SOFT ADAIR    schedule 31.10.2011


Ответы (3)


Как сказал ДонАндре, канонический ГА был в значительной степени разработан для бинарных задач.

Однако...

Ни один эволюционный алгоритм не является волшебным средством (если только он не рассчитан на миллиарды лет). Что важнее всего, так это ваше представление и то, как оно взаимодействует с вашими операторами мутации и кроссовера: вместе они определяют «интеллект» того, что по сути является замаскированным эвристическим поиском. Цель состоит в том, чтобы у каждого оператора был справедливый шанс произвести потомство с такой же приспособленностью, как и у родителей, поэтому, если у вас есть знания в предметной области, которые позволяют вам добиться большего успеха, чем случайное переворачивание битов или соединение битовых строк, используйте это.

Рулетка, выбор турниров и элитарность — хорошие идеи (может быть, сохранение более 1, это черная магия, кто может сказать...). Вы также можете извлечь выгоду из адаптивной мутации. Старое эмпирическое правило состоит в том, что 1/5 часть потомства должна быть лучше родителей — следите за этим количеством и соответствующим образом меняйте скорость мутаций. Если потомство получается хуже, то меньше мутируют; если потомство постоянно лучше, то мутируйте больше. Но скорость мутаций нуждается в компоненте инерции, чтобы он не адаптировался слишком быстро, и, как и в случае с любым другим метапараметром, установка этого параметра является чем-то вроде черной магии. Удачи!

person Sideshow Bob    schedule 01.11.2011
comment
Правило 1/5 успеха было изобретено для эволюционных стратегий Рехенбергом. Он был рассчитан путем анализа некоторой математической функции и показал, что математическое ожидание улучшения детей составляет примерно 1/5 числа родителей во всем пространстве поиска. Более современными схемами адаптивной мутации являются сигма-самоадаптация и ковариационная матрица-адаптация, однако они снова разработаны в основном для действительнозначной оптимизации с помощью стратегии эволюции. Для ГА мутация обычно рассматривается как беспристрастное случайное возмущение, которое добавляет некоторое разнообразие к быстро сходящимся эволюционным поискам. - person Andreas; 01.11.2011

Что ж, генетический алгоритм в его канонической форме является одним из наиболее подходящих метаэвристик для решения бинарных задач. Конфигурация по умолчанию, которую я бы попробовал, представляет собой такой генетический алгоритм, который использует 1-элитарность и настроен на выбор колеса рулетки, кроссовер с одной точкой (скорость кроссовера 100%) и мутацию переворота бита (например, вероятность мутации 5%). Я бы посоветовал вам попробовать эту комбинацию со скромным размером популяции (100-200). Если это не сработает, я бы предложил увеличить размер популяции, а также изменить схему отбора на схему турнирного отбора (начните с бинарного турнирного отбора и увеличьте размер турнирной группы, если вам нужно еще большее давление отбора). Причина в том, что при большем размере популяции схема отбора, пропорциональная пригодности, может не оказывать необходимого давления отбора, чтобы вести поиск в направлении оптимальной области.

В качестве альтернативы мы разработали расширенную версию GA и назвали ее person Andreas    schedule 01.11.2011


Почему бы не попробовать линейную/целочисленную программу?

person usul    schedule 03.11.2011
comment
Если у меня всего 32 коммутатора, это дает 4 294 967 295 возможностей. Если предположить, что машина оценивает 100 комбинаций в секунду, общее время работы составит 42 949 672 секунды, что составляет более 497 дней работы. Если вы хотите попробовать все комбинации из 10 000 переключателей, я думаю, будет даже сложно написать целое число для общего количества возможностей: 2 ** 10000. - person RED SOFT ADAIR; 03.11.2011
comment
Целочисленное программирование — это не поиск методом грубой силы. Он учитывает ограничения вашей задачи, чтобы быстро находить вещи, и всегда находит глобальный минимум. К сожалению, не все проблемы могут быть решены эффективно, однако на удивление многие из них могут быть решены. Возможно, стоит попытаться переформулировать вашу проблему как таковую. - person Eponymous; 29.03.2015