首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OpenMDAO中实现AMMF

在OpenMDAO中实现AMMF
EN

Stack Overflow用户
提问于 2016-02-12 17:47:44
回答 1查看 118关注 0票数 0

我有兴趣探索多忠诚(MF)优化方法.我正在努力弄清楚OpenMDAO将如何支持这项工作。我不想深入到OpenMDAO代码中去,除非我确信它能够完成这项工作。

一种简单的MF方法是AMMF。该方法对一阶修正的信任区域内的低保真度模型进行了基本优化,结果与高保真方法相似。基本算法如下:

代码语言:javascript
复制
X=X_0
While not converged
    Calculate y_hf = high_fidelity(X)
    Calculate y_lf = low_fidelity(X)
    Calculate grad_y_hf = grad_high_fidelity(X)
    Calculate grad_y_lf = grad_low_fidelity(X)
    set_low_to_high_transfer_function(y_hf,y_lf,grad_y_hf,grad_y_lf)
    optimize on corrected_transfer_function within |X-X0|<rho
    based on solution, lagrange multipliers adjust rho
    X=X_opt_solution
repeat

我认为在OpenMDAO中,high_fidelity()和low_fidelity()可以是具有适当驱动程序的组,我可以调用线性化方法来获得梯度。

然后,优化阶段是一个基本的OpenMDAO优化问题,就像教程中的那些在包含低保真度分析的组上操作的问题一样,还有一个额外的组件来校正分析的输出。

然后,外部循环可以实现为纯python。我不知道在哪里需要OpenMDAO。也许有人能对此发表评论?

问题:

这是一种用OpenMDAO实现AMMF的明智方法吗?

在纯python中拥有循环的一个问题是在记录器中。我需要为外部循环增加一个迭代变量。我如何配置记录器来了解这个额外的循环?

要评估收敛和调整信任区域,您需要拉格朗日乘数。对于基于梯度的方法,通常在最优解中进行计算。OpenMDAO包装器有提取这些值的方法吗?或者我需要创建自己的意大利面代码来从优化输出文件中检索值?

谢谢你的帮助!

如果我能做到这一点,我将很乐意将它作为OpenMDAO 1.x文档的教程来传递。我个人认为更复杂的例子会对社会有所帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-13 02:35:12

在OpenMDAO中将类似的东西设置为单一的单块模型是不可能的。到目前为止,最简单的方法是使用三个独立的问题实例。

  1. 高忠实问题
  2. 低真实度问题
  3. 低-高转移函数问题(可选)

您将使用前两个问题实例来计算分析结果和梯度。第三个问题可能是可选的,因为我预计它会更简单,并且可以用一个简单的函数手工实现。我会编写一个标准python脚本来循环您的伪代码所建议的方式。

因此,您可以使用OpenMDAO来构建分析模型,并从它们获得衍生产品要简单得多。但是,然后围绕它构建一个自定义python脚本来实现AMMF。

至于拉格朗日乘数,我们当前的优化器中没有一个将这些作为结果公开,所以您要么必须滚动您自己的优化器,要么修改我们其中的一个源代码。这不是开刀包装的问题。python包装器还没有公开这些信息,这是个问题。

尝试完全在OpenMDAO中构建一个完整且非常复杂的过程是很有诱惑力的。有时候,这是正确的决定。但在这种情况下,高级算法的组装非常简单,您也不需要计算整个算法的导数。因此,不需要直接在OpenMDAO中实现顶级进程。相反,使用OpenMDAO作为工具来制作这个部分:

代码语言:javascript
复制
Calculate y_hf = high_fidelity(X)
Calculate y_lf = low_fidelity(X)
Calculate grad_y_hf = grad_high_fidelity(X)
Calculate grad_y_lf = grad_low_fidelity(X)

更简单,并且做了更传统类型的编码来实现顶层算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35369053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档