问题描述
我有一个包含 11 个设计变量和 9 个约束的模型。我已经运行了 check_partials 并且我对解析导数是正确的感到满意。当我运行 check_totals(或运行 openmdao scaling
脚本)时,我看到 Jacobian 的某些行具有异常大的值(10^13 阶)并且不同意有限差分结果(它们是顺序 1).
我可以通过删除设计变量或添加新约束来“修复”这个问题,即使约束非常“松散”,以至于它永远无法接近边界。然后有限差分和解析导数一致(并且是 1 阶)。 我放弃哪个设计变量似乎并不重要;当我有 10 个设计变量和 9 个约束时,结果是一样的。 同样,我向哪个输出变量添加约束似乎并不重要;当我有 11 个设计变量和 10 个约束时,结果是一样的。
我不认为这是特定驱动程序的结果:我已经在 pyOptSparseDriver
和 IPOPT
以及 ScipyOptimizeDriver
和 SLSQP
中尝试了这一点,并且行为是一样的。
虽然目前我不确定这种行为对我来说是否是一个限制因素,但它确实看起来很奇怪并且可能有害。 这是否表明存在错误、可以通过正确设置修复的行为,或者线性代数的简单结果?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)