Python CMA-ES算法可解决用户定义的功能和约束

kil*_*les 6 python algorithm optimization genetic deap

我正在努力用python 创建CMA-ES优化算法的简单示例。使用CMA-ES算法x**2 + 2*y**2 -4*x*y - 0.5*y,在约束-2<x<2和约束下最优化功能的最简便方法是什么-1<2*(x**2)*y<1

我查看了DEAP库,但无法进行凝聚力的尝试。我发现他们的文档不够直观。我也研究了cma软件包,但是我不清楚如何实现约束。

pau*_*duf 4

在 pythoncma包中,您可以指定绑定约束:

import cma
opts = cma.CMAOptions()
opts.set("bounds", [[-2, None], [2, None]])
cma.fmin(cost_function, x_start, sigma_start, opts)
Run Code Online (Sandbox Code Playgroud)

对于第二个约束,正如之前所说,它并不简单,但您确实可以为域外候选解决方案分配高适应度值。你只需要cost_function在这里调整即可。这些值可能非常高(高于可行域中的任何函数值)或取决于约束违规值。

几种方法可以通过惩罚来处理约束。对于您的情况(小尺寸),您可以尝试使用最简单的一种。