我目前在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