You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenMDAO中pyoptsparse IPOPT驱动收敛异常及目标函数缩放问题

OpenMDAO pyoptsparse IPOPT驱动收敛问题与缩放疑问

使用OpenMDAO的pyoptsparse IPOPT驱动时,出现收敛至不可行点的问题,当前采用有限差分偏导数(finite difference partials),怀疑问题根源在于变量、目标函数及约束的缩放:驱动会朝某变量大幅步进,虽能优化目标函数,但同时加剧了约束违例。

初始缩放报告显示,初始点的变量与约束均被缩放至0-1区间,但目标函数缩放后的值为3.4。手动调整adder和scaler将其缩放至1.7后,约束违例情况有所降低。

我的缩放流程

  • 运行om.DOEDriver(om.LatinHypercubeGenerator())获取非线性(非解析)约束的范围;
  • 记录变量边界,通过变量的极端组合计算目标函数的最小、最大值(目标函数为解析形式,计算简便);
  • 设置adder为目标函数最小值的相反数,scaler为取值范围(最大值-最小值)的倒数。

目标函数缩放手动计算过程

未缩放的成本值:

  • 模型目标函数最小值:89673.8
  • 模型目标函数最大值:275506.5
  • Adder = -89714.7404
  • Scaler = 5.369e-6
  • 驱动目标函数最小值 = (89673.8 + (-89714.7404)) × 5.369e-6 = -2.199e-4
  • 驱动目标函数最大值 = (275506.5 + (-89714.7404)) × 5.369e-6 = 0.998

按照上述手动计算,目标函数应恰好缩放至0-1区间,但实际缩放报告输出值为1.7。

相关截图

初始缩放报告
调整后的缩放报告

求助问题

  • 我的adder和scaler计算流程是否正确?若不正确,推荐何种缩放方法?
  • OpenMDAO为何会将目标函数缩放至1.7?
    恳请提供优化建议。

内容的提问来源于stack exchange,提问作者Kasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:35:17