Dymos:是否可以优化 design_parameter?

Dymos: Is it possible to optimise a design_parameter?

比如'racecar'的例子,我可以给'mass'设置一个下限和上限design_parameter,然后在求解最优控制问题的同时优化车辆质量吗?

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

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

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

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

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

  • 模型中错误定义的导数(错误的部分)
  • 缩放比例不佳(objective/constraints 设计参数的灵敏度在优化器的单位中可能微不足道
  • 有时根据问题的性质,某个输入对结果几乎没有影响(这可能是最不可能的)。

您可以尝试的事情:

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

如果在尝试此操作后似乎没有效果,我会与您一起解决这个问题。