繁体   English   中英

使用DEAP的具有多个变量的多目标优化

[英]python - Multi-Objective optimization with multiple variables using DEAP

我正在尝试优化模拟软件的两个输出(我使用随机森林来训练用于快速预测输出的模型)。 有七个输入变量,三个是连续的,其余是离散的。 我已经使用DEAP软件包进行多目标优化,但是只使用了一个变量或一组相关变量(例如背包)。 提到的七个变量是:

    n_rate = [0.1:0.5]
    estim = [1000, 1500, 2000]
    max_d = [1:20]
    ft = [None, "rel"]
    min_s = [2:1000]
    min_m = [1:1000]
    lim = [0:1]

除了ft ,对于所有连续变量,可以定义几个离散数。

我的问题是如何为这些输入创建不同的个人来定义总体?

完成此操作的方法是注册可以创建每个人的“属性”。 这是我在代码中使用的:

toolbox.register("attr_peak", random.uniform, 0.1,0.5)
toolbox.register("attr_hours", random.randint, 1, 15)
toolbox.register("attr_float", random.uniform, -8, 8)

toolbox.register("individual", tools.initCycle, creator.Individual,
                 (toolbox.attr_float,toolbox.attr_float,toolbox.attr_float,
                  toolbox.attr_hours,
                  toolbox.attr_float, toolbox.attr_float, toolbox.attr_float,
                  toolbox.attr_hours,toolbox.attr_peak
                  ), n=1)

在我的代码中,我在toolbox注册了三个不同的“基因”或“属性”。 在我的示例中,我有两个连续变量和一个整数约束变量。 对于您的示例,这是定义属性的方式:

toolbox.register("n_rate", random.uniform, 0.1, 0.5)
toolbox.register("estim", random.choice, [1000,1500,2000])
toolbox.register("max_d", random.randint, 1, 20)
toolbox.register("ft", random.choice, [None, 'rel'])
toolbox.register("min_m", random.randint, 1, 1000)
toolbox.register("min_s", random.randint, 2, 1000)
toolbox.register("lim", random.randint, 0, 1)

然后,您将像构造initCycle一样构建您的个人。

toolbox.register("individual", tools.initCycle, creator.Individual, (toolbox.your_attribute, toolbox.next_attribute, ... ), n=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM