2013-12-18 3 views
0

Я должен решить эту проблему: найти все числа от 0 до 255, которые имеют двоичное представление с одинаковым числом 0 и 1 с. Например, 240 - 11110000, а 153 - 10011001. Мне нужно использовать генетические алгоритмы.Генетический алгоритм с цифрами

У меня есть кодировка в наборе из 8 бит [0,0,0,0,0,0,0,0] и функция качества (число 1 в X похоже на число 0s) ,

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

И еще одно: этого будет достаточно или мне нужно что-то еще?

Я нацелен на свою проблему в порядке? Или я должен изменить другие функции, которые я определил?

Спасибо за ваше время!

+2

Обратите внимание, что это просто список всех перестановок '00001111'. – twalberg

+0

Я знаю, но мне нужно сделать это с помощью генетических алгоритмов :) – Elseine

ответ

0

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

Во-первых, принять два родителя:

parent1 = [0 0 0 1 1 1 1 1] 
parent2 = [1 1 1 0 0 0 0 0] 

Затем получить случайную точку среза, скажем 3. Вырезать родители в этот момент:

parent1 = [0 0 0] [1 1 1 1 1] 
parent2 = [1 1 1] [0 0 0 0 0] 

А теперь рекомбинировать двух родителей, чтобы получить два новых Дети. Первая часть Parent1 с последней части parent2 (и так далее ...):

child1 = [0 0 0 0 0 0 0 0] 
child2 = [1 1 1 1 1 1 1 1] 
Смежные вопросы