В настоящее время я использую DEAP для генетического алгоритма в Python. Я хочу создать начальную популяцию лиц, имеющих длину no_sensors
. Моя проблема заключается в том, что из-за функции random.choice(nodes)
некоторые узлы оказываются одинаковыми, а начальная длина заканчивается менее чем no_sensors
. Мне было интересно, если есть способ исправить это:DEAP Генетический алгоритм
creator.create("FitnessMax", base.Fitness, weights=(2.0, -1.0))
creator.create("Individual", set, fitness=creator.FitnessMax)
toolbox = base.Toolbox()
toolbox.register("attr_item", random.choice, nodes)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_item, n=no_sensors)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
В принципе, мне нужен фиксированная длина уникальных элементов из списка nodes
. Я думал об использовании random.sample(nodes, no_sensors)
, но я не могу включить это в код без ошибок.
Вы можете проверить другой пример here.
Проблема заключается в том, что если random.choice дважды выбирает одно и то же значение, я хочу, чтобы он считался одним. В принципе, мне нужна фиксированная длина уникальных элементов из списка: узлы. Я думал об использовании random.sample (node, no_sensors), но я не могу включить это в код без ошибок. – meraxes
набор не может содержать списки, потому что они изменяемы и, следовательно, не являются хешируемыми. 'set ([[1,2,3], 3]) ТипError: unhashable type: 'list'' –
О, правильно! Я изменил базу Individual в список. Даже до сих пор список в списке выглядит излишним. – meraxes