Python CMA-ES算法,用于解决用户定义的函数和约束

我正在努力在
python中创建一个简单的
CMA-ES优化算法示例.优化函数x ** 2 2 * y ** 2 -4 * x * y – 0.5 * y的最简化方法是什么,受约束条件-2 their documentation不够直观.我也查看了
cma包,但我不清楚如何实现约束. 最佳答案 我看到你与DEAP文档的斗争.尽管如此,我已经编写了自己的进化计算库,最近我一直在使用DEAP进行许多概念验证,我认为它们做得很好.

接下来,让我们来看看the complete example.如果你阅读文档,你会很容易看到代码.问题大小是变量的数量,因此在您的情况下,如果我理解正确,您将具有N = 2(x和y).

你需要你的自定义健身功能而不是benchamrks.rastrigin:

toolbox.register(“evaluate”,myownfunction)

约束没有实现,但是一项简单的任务.在适应度函数中,您可以使违反约束的个体无效(例如,通过指定非常高的适应度,如果最小化),并且在几代中,您的群体应该没有残留物.

这是DEAP最简单的方法,但是可以扩展deap.cma.Strategy class以覆盖/扩展任何方法,例如,生成方法,以便初始种群中的所有个体都有效.

点赞