发布于 2019-06-26 11:32:50
在python cma包中,可以指定绑定约束:
import cma
opts = cma.CMAOptions()
opts.set("bounds", [[-2, None], [2, None]])
cma.fmin(cost_function, x_start, sigma_start, opts)对于第二个约束,正如前面已经说过的,它并不简单,但是您确实可以为领域外的候选解决方案分配高适应度值。你只需在这里调一下cost_function。这些值可以非常高(高于可行域中的任何函数值),也可以依赖于约束违反值。
有几种方法来处理带有惩罚的约束。在你的情况下(小尺寸)你可以尝试使用最简单的。
发布于 2016-09-22 14:48:27
我看到你和DEAP医生的斗争了。尽管如此,我还是写了我自己的进化计算库,最近我用DEAP做了很多概念的证明,我认为他们做得很好。
继续,让我们来看看完整的例子。如果你读了这些文档,你就可以查看代码了。问题的大小是变量的数量,所以在您的情况下,如果我正确理解,您将得到N = 2 (x和y)。
您需要您的自定义健身功能,而不是benchamrks.rastrigin。
toolbox.register("evaluate", myownfunction)
这些约束不是实现的,而是一项简单的任务。在健身函数中,您可以使违反约束的个体无效(例如,通过分配非常高的适应度,如果最小化的话),并且在几代的时间内,您的人口应该没有残疾人。
这将是DEAP中最简单的方法,但是可以扩展班级以覆盖/扩展任何方法,例如,generate方法,以便初始人口中的所有个体都是有效的。
https://stackoverflow.com/questions/37302917
复制相似问题