Пример кроссовера с имитацией двоичного кроссовера (SBX)
Я работаю в исследовательской группе для решения многоцелевой инженерной задачи и концентрируюсь на алгоритме NSGA-II, но теперь я застрял, мне нужно понять, как кроссовер SBX работает с числовым примером, чтобы я мог реализовать его или даже если есть готовый код Я могу адаптироваться в соответствии с нашей проблемой, но сначала мне нужно увидеть числовой пример, чтобы я мог продолжить, любой ресурс, доступный для этого, я нашел только презентацию на http://www.slideshare.net/, но только уравнения, а не пример.
1 ответ
В эти дни я также провел больше времени на SBX, потому что это лучший выбор для пересечения в проблеме кодирования чисел. Я проверил оригинал бумаги и слайды, которые вы указали. Хотя я не знал всего процесса SBX, я могу рассказать вам, что я узнал, что может помочь вам узнать SBX на следующем этапе.
1: Идея заключается в бинарном кодировании с кроссовером в одной точке. Например, родительские хромосомы p1 и p2, их дети c1 и c2.
2: В двоичном кодировании он имеет свойство: (p1+p2)/2=(c1+c2)/2. Обозначим |(c1-c2)/(b1-b2)| как бета, и b иногда равняется 1 согласно моделированию.
3: Когда мы используем эту идею с числовым кодированием, это свойство должно быть сохранено, для чего решение для c1 и c2 в числовом кодировании:
c1 = (p1 + p2) / 2 + 0,5* бета (p1-p2) и c2 = (p1+p2)/2-0,5* бета (p1-p2) и p1>p2. Далее, значение бета является нашим Цель.
Все вышеизложенное - это то, что я узнал из SBX Извините за это не завершено!
Это старый вопрос, но я рекомендую прочитать академические статьи:
- ДЭБ, Калянмой; АГРАВАЛ, Рам Бхушан. Имитация бинарного кроссовера для непрерывного поиска. Сложные системы, т. 9, п. 2, стр. 115-148, 1995.
- ВАРГАС, Dełnis EC. Um Estudo dos Para‚metros do Algoritmo NSGA-II com o operador SBX em Problemas de Otimização Estrutural Multiobjetivo. Серия материалов Бразильского общества вычислительной и прикладной математики, т. 7, н. 1, 2018.
- CRUZ, Фредерико Родригес Борхес да и др. Abordagem multiobjetivo para otimizaçà £ o de redes de filas finitas. 2012 г.
Статья, доступная по этой ссылке, также может быть полезна.
Существует также реализация https://github.com/msu-coinlab/pymoo NSGA на github, где есть файл simulated_binary_crossover.py, содержащий реализацию, которую вы можете использовать.
Чтобы рассчитать количество детей, необходимо сформулировать:
АЗЕВЕДО (1) использует разные формулы:
Чтобы вычислить функцию бета (β i), используйте распределение вероятностей:
Чтобы вычислить бета (β i):
Î · - индекс определяемого пользователем распределения (не отрицательный)
Шаги для расчета числа с плавающей запятой, полученного в результате кроссовера:
- Установите случайное число µ ~ (0,1);
- Рассчитайте βi для совместного использования по формуле выше;
- Создайте дочерние элементы, используя приведенные выше формулы, используя βi
Дополнительная ссылка:
(1) АЗЕВЕДО, Карлос Ренато Белу. Geraçà £ o de diversidade na otimizaçà £ o dinà ¢ mica multiobjetivo evolucionária por paisagens de nà £ o-dominà ¢ ncia. 2011. Dissertaçà £ o de Mestrado. Федеральный университет Пернамбуку.