Я пытаюсь найти квадратный корень числа с плавающей запятой, используя генетический алгоритм.
Я инициализировал популяцию случайных чисел и функцию пригодности. Как мне осуществить отбор родителей из популяции и равномерный кроссовер?
ВЫБОР
Функция, которую дает gilad (та, которую вы используете), выглядит хорошо. Почему бы просто не следовать стандартной процедуре? Вы можете найти некоторые идеи на википедия
Кроссовер
Если вы рассматриваете кандидата как 32-битный вектор (на самом деле 31), то выполнение равномерного кроссовера состоит в выборе битов любого из родителей с половинной вероятностью.
Идея будет:
Программно эффективным способом создания ребенка от 2 родителей будет генерирование случайного 32-битного числа. r
и дано родителям a
а также b
делать :
child = (r & a) | (~r & b);
Других решений пока нет …