Deap python包:创建具有不同范围以及整数和浮点组合的个体

时间:2017-10-18 13:52:56

标签: python deap

我正在尝试使用DEAP来最大化功能。

我理解如何使用基本示例:

toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register("individual", tools.initRepeat, creator.Individual, 
    toolbox.attr_bool, 100)

创建100个随机值或0或1.然后继续创建一个群体并进行变异...

如果您有两个参数,如何构建人口:

parameter 1 integer with range [0,1] 
parameter 2 float with range [0,2]

然后创建一个组合随机抽样参数的个体?或具有任意步长值的参数2样本,例如0.25。

2 个答案:

答案 0 :(得分:3)

您可以按照以下步骤创建多种类型的染色体:

toolbox.register("attr_int", random.randint, 0, 1)
toolbox.register("attr_flt", random.uniform, 0, 2)
toolbox.register("individual", tools.initCycle, creator.Individual,
             (toolbox.attr_int, toolbox.attr_flt),
             n=1)

然后创建一个大小为100的人口:

toolbox.register("population", tools.initRepeat, list, toolbox.individual)
population = toolbox.population(n=100)

答案 1 :(得分:-1)

因此,我创建了由整数和浮点数组成的染色体。现在,在评估了一个世代之后,您便有了mutate和mate运算符,它们可以创建新的染色体。但是,我不知道如何创建这些运算符,使它们同时也是整数和浮点数的混合。 这是创建染色体的功能。

def uniform(float_min, float_max, int_max, N_inputs):
    """ function to create individual """
    integers  = list(numpy.random.randint(0, int_max, N_inputs))    
    floats = list(numpy.random.uniform(float_min, float_max, N_inputs))

    return integers+ floats

我不需要注册mutate和mate:

toolbox.register("mate", deap.tools.???)
toolbox.register("mutate", deap.tools.???)

希望您能帮助我。 干杯 塞巴斯蒂安