强制设计变量界限的最严格方法是什么?

What is the most strict way to enforce the bounds for design varibles?

我可以看到我的设计变量超出了它的限制。 (在这种情况下使用 COBYLA)

我有一个具有单一设计变量的示例设置,其中最佳值在 0 左右。

我设置了'lower=0'。

我希望这是一个非常严格的限制,因为负值对我的求解器产生 NaN。

优化器即 1, 2, 0, -0.125000000e-01, -1.56250000e-02, -1.95312500e-03, -2.44140625e-04 -3.05175781e-05, -3.81469727e-06, -5.00000000e-07

我猜这是依赖于优化器类型?但是有没有办法更严格地执行。

不幸的是,COBYLA 并不严格遵守变量边界 (see scipy docs) 您可以做的最好的事情是将它们添加为线性约束,并且它会尝试在最佳点强制执行它们。

不过你可以试试 SLSQP。它确实严格遵守界限。