【发布时间】:2019-11-08 10:29:52
【问题描述】:
我正在查看Knapsack example,我想将其转换为个人由列表而不是集合表示的情况。
如果我运行这个 sn-p
from deap import creator, base, tools
import random
creator.create("Fitness", base.Fitness, weights=(-1.0, 1.0))
creator.create("Individual", set, fitness=creator.Fitness)
toolbox = base.Toolbox()
toolbox.register("attr_item", random.randrange, 5)
toolbox.register("individual", tools.initRepeat, creator.Individual,
toolbox.attr_item, 3)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
toolbox.population(n=5)
然后我得到以下输出:
Out: [{0, 1}, {0, 1, 4}, {0}, {0, 1, 2}, {0, 2}]
与长度为 1、2 或 3 的个体。
但是,如果我运行下一个 sn-p,只在第四行将 set 更改为 list
from deap import creator, base, tools
import random
creator.create("Fitness", base.Fitness, weights=(-1.0, 1.0))
creator.create("Individual", list, fitness=creator.Fitness)
toolbox = base.Toolbox()
toolbox.register("attr_item", random.randrange, 5)
toolbox.register("individual", tools.initRepeat, creator.Individual,
toolbox.attr_item, 3)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
toolbox.population(n=5)
那么所有个体的长度都相同。
Out: [[2, 2, 4], [0, 1, 0], [2, 2, 4], [1, 4, 1], [2, 2, 0]]
是否有可能建立一个由不同长度的列表组成的个体群体?
【问题讨论】: