【问题标题】:Dymos: Is it possible to optimise a design_parameter?Dymos:是否可以优化设计参数?
【发布时间】:2021-04-06 13:15:55
【问题描述】:

例如在“赛车”示例中,我是否可以为“质量”设计参数设置下限和上限,然后在解决最优控制问题的同时优化车辆质量?

我看到 phase.add_design_parameter() 有一个“opt”参数,但是当我使用 opt=True 运行问题时,该值保持不变。我是否需要求解器的另一层来优化此值?

此功能对于将预算分配给设计决策(例如购买更轻的底盘)以及调整齿轮比等参数很有用。

【问题讨论】:

    标签: openmdao


    【解决方案1】:

    这绝对有可能,事实上这就是设计参数上opt 标志的意图。

    为了确保事情按预期工作,当您有一个带有opt=True 的设计参数时,通过在run_model 之后对问题实例调用list_problem_vars,确保它显示为优化器的设计变量之一。 list_problem_vars 的文档是here

    如果它显示为设计变量但优化器拒绝更改它,则可能是它认为该变量没有敏感性。这可能是由于

    • 模型中的导数定义不正确(部分错误)
    • 缩放不良(目标/约束相对于设计参数的敏感性在优化器的单位中可能微乎其微
    • 有时由于问题的性质,某个输入对结果几乎没有影响(这可能是最不可能的)。

    你可以尝试的事情:

    • 运行problem.check_totals(确保首先调用problem.run_model)并查看是否有任何总导数看起来不正确。
    • 运行problem.driver.scaling_report 并验证这些值在优化器看到它们的单位中是不可忽略的。如果它们在开始时真的很小,那么将设​​计参数缩放得更小(将 ref 设置为更小的数字,如 0.01)可能是合适的,这样从优化器的角度来看,微小的变化会导致模型发生更大的变化。

    如果在尝试此操作后似乎无法正常工作,我会与您一起解决这个问题。

    【讨论】:

    • 我没有为 M 定义任何偏导数,但现在我已经完美地工作了。谢谢。
    猜你喜欢
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2011-06-16
    • 2022-01-22
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多