我目前在Python中使用DEAP进行遗传算法。我想创建一个长度为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(nodes,no_sensors),但我似乎无法将其纳入代码而不会产生错误。 – meraxes
一个集合不能包含列表,因为它们是可变的,因此不可哈希.'set([[1,2,3],3]) TypeError:不可能的类型:'list'' –
哦,对!我将个人的基础改为列表。即使如此,列表中的列表看起来也是多余的。 – meraxes