Jer*_*oen 0 optimization openmdao
我正在使用 SLSQP 优化器。我记得在某处读到过,有一个目标函数或设计变量的最佳大小(或者可能是两者之间的比率?)来搜索设计空间。例如,如果我的目标函数大一个数量级,那么设计空间的跳跃似乎也大一个数量级。
如果这个跳跃太小,它可能会限制它搜索的设计空间的数量,或者可能需要很长时间才能到达某个点。然而,太大的跳跃也不好。
任何帮助,将不胜感激。如果有不清楚的地方,请告诉我。谢谢!
小智 9
我不认为我们可以谈论一个 最佳幅度的缩放。缩放只是将您的问题表述转换为更容易解决的问题的好方法。通常,缩放设计变量、约束和目标以提高优化器的收敛性是一种很好的做法。缩放目标和约束是有意义的,因为它们都出现在雅可比矩阵中。通常使用初始值进行缩放是一个很好的猜测。如果您的初始值接近于零,这是有问题的,在这种情况下,选择一些其他合理值或给定数量的限制值也有效。对于设计变量缩放以获得下限和上限的 0 和 1 也很常见。如果一切都在 1 的数量级内就好了。一些优化算法和非线性求解器也使用目标值来猜测线搜索步骤。
如果您使用有限差分来计算梯度,这也是缩放的第二个原因。如果设计变量具有高数量级,则它们的微小有限差异可能只会导致目标发生不明显的变化(或者这些变化被截断误差吞没了)。例如,如果您的设计变量的长度为 10000 毫米,而您的有限差分步长为 0.001,则扰动变量将为 10000.001,这可能不会对您的目标产生太大影响。
一些外部代码采用有限浮点精度的输入文件,不正确的缩放可能导致有效数字没有变化,因此输出没有变化。
在 OpenMAO 中的实现:
您可以通过缩放幅度 ( scaler)、偏移值 ( adder) 或设置两个将其缩放为 0 或 1 (ref和ref0) 的参考值,轻松地在 OpenMDAO 中缩放变量。scaler, adder, ref, ref0 的文档(包括优先级,如果你使用多个):http :
//openmdao.org/twodocs/versions/3.0.0/features/core_features/adding_desvars_objs_consts/index.html
您还可以在 OpenMDAO 中缩放所有其他变量以改进求解器的行为。更多关于 OpenMDAO 中的缩放变量:http ://openmdao.org/twodocs/versions/3.0.0/theory_manual/scaling.html
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |