Как реализовать отбор и кроссовер при использовании генетического алгоритма для нахождения квадратного корня числа в C

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

7

Решение

ВЫБОР
Функция, которую дает gilad (та, которую вы используете), выглядит хорошо. Почему бы просто не следовать стандартной процедуре? Вы можете найти некоторые идеи на википедия

Кроссовер
Если вы рассматриваете кандидата как 32-битный вектор (на самом деле 31), то выполнение равномерного кроссовера состоит в выборе битов любого из родителей с половинной вероятностью.

Идея будет:

  • Бросить монету
  • Если голову взять на себя родительскую,
  • Если хвосты возьмут на родителя два

Программно эффективным способом создания ребенка от 2 родителей будет генерирование случайного 32-битного числа. rи дано родителям a а также b делать :

 child = (r & a) | (~r & b);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]