【问题标题】:How to set upper and lower bounds to a gene in an individual in DEAP?如何在 DEAP 中设置个体基因的上限和下限?
【发布时间】:2018-12-12 21:02:47
【问题描述】:

我在 python 中通过 DEAP 包使用遗传算法。 在这个过程中,我想为个体中的每个基因设置不同的上限和下限。

我想知道如何做到这一点? 如需更多说明, 假设我的个体有两个基因,那么我想给出以下界限

gene1: 应该限制在 0,1 基因2:应该限制在2,3

【问题讨论】:

  • 界限只适用于初始种群,还是适用于所有世代?
  • 也送给所有的后代

标签: python nonlinear-optimization genetic-programming deap


【解决方案1】:

有关有限初始种群的创建,请参阅this StackOverflow question

有关在后续代中强制执行边界,请参阅this DEAP documentation example

【讨论】:

  • 感谢您的及时回复。但是,我有一个查询。而不是使用装饰器,如果在产生后代之后,我手动检查后代中每个基因的上限和下限并将其限制在界限内,那么它会妨碍算法吗?
  • 代码:offspring = toolbox.select(pop, len(pop)) # Clone the selected individuals offspring = list(map(toolbox.clone, offspring)) for child in offspring: for i in range(len(child)): if child[i] > dic[i][1]: child[i] = random.randint(dic[i][0],dic[i][1]) elif child[i] < dic[i][0]: child[i] = random.randint(dic[i][0],dic[i][1]) 这个代码会妨碍算法的随机性吗?
猜你喜欢
  • 1970-01-01
  • 2019-07-06
  • 2018-08-17
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多