2016-03-29 4 views
-1

Я только что узнал о базовом (более введении) генетического алгоритма. Для назначения мы должны найти значение x, которое максимизирует f (x) = sin (x * pi/256) в интервале 0 < = x < = 256.Создание популяции для генетического алгоритма в C

Хотя я понимаю, как получить фитнес человека и как нормализовать физическую форму, я немного теряюсь в генерации населения. В тексте, в целях выполнения кроссовера и мутации, каждый пользователь использует 8 бит. Пример:

189 = 10111101

35 = 00100011

Мои вопросы это:

  1. Используя с, что является лучшим способом для создания населения? Я просмотрел его, и все, что я мог найти, это использовать uint8_t. Я собираюсь создать его как массив, а затем найти способ преобразования в его целочисленное представление.

  2. В каких целях нормализует фитнес?

  3. Как я первый раз при написании программы, использующей генетический алгоритм, есть ли какие-либо советы, которые я должен иметь в виду?

Благодарим вас за внимание.

+0

Начальное население должно быть случайным. –

+0

«интервал 0 <= x <= 256" исключает использование 'uint8_t', так как' 256' выходит за пределы допустимого диапазона. Работайте с натуральным размером 'int' или' unsigned', если только не повод для этого. –

+0

Чтобы создать случайную совокупность, я думал использовать rand() для генерации случайной совокупности, скрывать ее до 8-битного представления и затем хранить в массиве. Проблема заключается в части преобразования. – Mog

ответ

0

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

Очень часто используют гибридные алгоритмы, когда GA смешивается с altoritmsh как PSO, имитируемый отжиг и так далее.

Смежные вопросы