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

OpenMDAO中np_check与np的约束配置方法问询

OpenMDAO飞艇优化模型约束设置方案

在OpenMDAO中,这类依赖设计变量动态值的约束建议在Optimization类外部(即Problem实例的驱动配置阶段)添加——优化问题的设计变量、目标与约束属于顶层配置逻辑,和模型组件的计算逻辑解耦,且能支持动态引用设计变量值作为约束上下限,避免组内设置时无法实时跟踪设计变量更新的问题。

完整模型代码示例

import openmdao.api as om
import numpy as np

class AirshipModel(om.ExplicitComponent):
    def setup(self):
        # 输入设计变量np
        self.add_input('np', val=100.0)
        # 输出计算得到的np_check
        self.add_output('np_check', val=100.0)

    def compute(self, inputs, outputs):
        # 模拟飞艇模型的实际计算逻辑(此处为示例,替换为你的真实计算代码)
        outputs['np_check'] = inputs['np'] * np.random.uniform(0.9, 1.1)

class Optimization(om.Group):
    def setup(self):
        # 添加飞艇计算子系统
        self.add_subsystem('airship', AirshipModel())

if __name__ == "__main__":
    # 初始化优化问题
    prob = om.Problem()
    prob.model = Optimization()

    # 设置优化驱动(使用Scipy的SLSQP优化器)
    prob.driver = om.ScipyOptimizeDriver()
    prob.driver.options['optimizer'] = 'SLSQP'

    # 定义设计变量np的取值范围
    prob.model.add_design_var('airship.np', lower=50.0, upper=200.0)

    # 定义优化目标(示例:最小化np_check,可根据你的需求修改)
    prob.model.add_objective('airship.np_check')

    # 核心:添加动态约束,确保np_check处于np的95%~105%范围内
    # 使用表达式引用设计变量值,OpenMDAO会在优化过程中动态计算约束上下限
    prob.driver.add_constraint('airship.np_check', lower='0.95*airship.np', upper='1.05*airship.np')

    # 运行优化流程
    prob.setup()
    prob.run_driver()

    # 输出结果验证
    np_opt = prob.get_val('airship.np')[0]
    np_check_opt = prob.get_val('airship.np_check')[0]
    print(f"优化后设计变量np: {np_opt:.2f}")
    print(f"计算输出np_check: {np_check_opt:.2f}")
    print(f"约束满足状态: {0.95*np_opt <= np_check_opt <= 1.05*np_opt}")

关键说明

  1. 约束设置位置:通过prob.driver.add_constraint添加约束是最优选择,它支持用字符串表达式动态关联设计变量,确保优化过程中约束上下限随np的更新而实时调整。
  2. 组内设置的局限性:若尝试在Optimization组内部用self.add_constraint设置,只能使用初始值定义上下限,无法跟踪设计变量的动态变化,会导致约束逻辑失效。
  3. 代码解耦:将模型计算(AirshipModel)与优化配置(设计变量、目标、约束)分离,让代码结构更清晰,便于后续维护和修改模型逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:57:40