首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DEAP的多变量多目标优化

使用DEAP的多变量多目标优化
EN

Stack Overflow用户
提问于 2018-10-11 21:55:26
回答 1查看 1.2K关注 0票数 1

我试图优化仿真软件的两个输出(我使用随机森林来训练一个快速预测输出的模型)。有七个输入变量,三个是连续的,其余的是离散的。我使用DEAP软件包进行多目标优化,但只有一个变量或一组相关变量(类似于背包)。上述七个变量是:

代码语言:javascript
复制
    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之外,对于所有连续变量,都可以定义几个离散数。

我的问题是,我如何为这些输入创造不同的个人来定义人口?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-22 05:21:12

您这样做的方式是注册每个人都可以创建的“属性”。下面是我在代码中使用的内容:

代码语言:javascript
复制
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中注册了它们。在我的例子中,我有两个连续变量和一个整数约束变量。对于您的示例,您将使用以下方式定义属性:

代码语言:javascript
复制
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

代码语言:javascript
复制
toolbox.register("individual", tools.initCycle, creator.Individual, (toolbox.your_attribute, toolbox.next_attribute, ... ), n=1)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52769441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档