小编Jer*_*oen的帖子

SLSQP 优化算法如何工作?

我在 openMDAO 中使用 SLSQP 算法,但我无法理解它的实际工作原理。我只是看常见的抛物面示例,它有 2 个设计变量,旨在最小化 f,没有任何限制。通过打印每次迭代的 x、y 和 f 的值(迭代可能不是正确的词),我可以看到有时使用每个设计变量(x,y)的前向有限差​​分来评估一阶导数。然后使用这些导数来查找下一个 x 和 y 值,但是我看不到该模式。

另外,当我读到 SLSQP 方法时,还需要二阶导数。但是,我没有看到它被计算出来。让我举一个我的输出的例子:

iteration 1:
x = 0
y = 0
f = 22

iteration 2:
x = 0.01
y = 0
f = 21.9401

iteration 3:
x = 0
y = 0.01
f = 22.0801
Run Code Online (Sandbox Code Playgroud)

从最后 2 次迭代中,我们可以计算出 df/dx = 5.99 , df/dy = -8.01

下一次迭代恰好是:

x = 5.99
y = -8.01
f = -25.9597
Run Code Online (Sandbox Code Playgroud)

然后从这一点再次进行两次有限差分计算找到: df/dx = 2.02 , df/dy = 2.02 …

optimization mathematical-optimization scipy openmdao scipy-optimize

6
推荐指数
1
解决办法
2万
查看次数

OpenMDAO:是否有每个设计变量或目标函数的最佳大小来搜索设计空间?

我正在使用 SLSQP 优化器。我记得在某处读到过,有一个目标函数或设计变量的最佳大小(或者可能是两者之间的比率?)来搜索设计空间。例如,如果我的目标函数大一个数量级,那么设计空间的跳跃似乎也大一个数量级。

如果这个跳跃太小,它可能会限制它搜索的设计空间的数量,或者可能需要很长时间才能到达某个点。然而,太大的跳跃也不好。

任何帮助,将不胜感激。如果有不清楚的地方,请告诉我。谢谢!

optimization openmdao

0
推荐指数
1
解决办法
93
查看次数