问题标签 [openmdao]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
inheritance - OpenMDAO 中的继承单元
我在一个组中有一系列组件,其中一些组件被编写为通用目的,而不是特定于我的应用程序。我想让这些通用组件的输入和输出从它们在其父组中连接的参数继承单位。这可能吗?我不确定这是否真的有必要,而且一切似乎都运行良好,但我不断收到以下警告:
我可以预见一个问题,传递给 GeneralComp 的单位应该在某个时候转换,但不是因为单位丢失了。
openmdao - DOE 驱动程序结果可以提供元模型组件吗?
我有兴趣探索基于代理的优化。我还没有编写 opendao 代码,只是想弄清楚 OpenMDAO 将在多大程度上支持这项工作。
我看到它有一个 DOE 驱动程序来生成训练数据(http://openmdao.readthedocs.org/en/1.5.0/usr-guide/tutorials/doe-drivers.html),我看到它有几个代理模型可以添加到元模型(http://openmdao.readthedocs.org/en/1.5.0/usr-guide/examples/krig_sin.html)。然而,我还没有找到将 DOE 的结果作为训练数据传递给元模型的示例。
在许多示例/教程/论坛帖子中,似乎训练数据是直接在元模型上或元模型内创建的。所以目前还不清楚这些东西是如何协同工作的。
开发人员能否解释训练数据如何从 DOE 传递到元模型?谢谢!
openmdao - 在 OpenMDAO 中实现 AMMF
我对探索多保真 (MF) 优化方法很感兴趣。我试图弄清楚 OpenMDAO 将如何支持这项工作。我不想深入研究 OpenMDAO 代码,除非我确信它可以完成这项工作。
一种简单的 MF 方法是 AMMF。它基本上通过一阶校正优化了信任区域内的低保真模型,因此结果类似于高保真方法。基本算法如下:
我认为在 OpenMDAO 中 high_fidelity() 和 low_fidelity() 可以与适当的驱动程序组合在一起,我可以调用线性化方法来获取渐变。
然后优化阶段是一个基本的 OpenMDAO 优化问题,就像教程中的那些对包含低保真分析的组以及纠正该分析输出的附加组件的组一样。
然后外部循环可以实现为纯python。我真的看不出哪里需要 OpenMDAO。也许有人可以对此发表评论?
问题:
这是用 OpenMDAO 实现 AMMF 的明智方法吗?
在纯 python 中使用循环时我可以看到的一个问题是在记录器中。我需要为外部循环添加一个额外的迭代变量。我如何配置记录器以了解这个额外的循环?
要评估收敛性并调整信任区域,您需要使用拉格朗日乘数。对于基于梯度的方法,这些通常在优化解决方案中计算。OpenMDAO 包装器有提取这些值的方法吗?还是我必须创建自己的意大利面条代码来从优化输出文件中检索值?
谢谢您的帮助!
如果我得到这个工作,我会很乐意将它作为 OpenMDAO 1.x 文档的教程传递。我个人认为更复杂的例子会对社区有所帮助。
openmdao - 在 OpenMDAO 中如何为 IndepVarComp 或其他组件指定值?
我只是在玩 OpenMDAO 中的抛物面教程。我尝试了一些简单的方法,基本上将输入值更改为抛物面组件。请参阅以下代码。但是,当我运行它时,它会打印相同的结果,就好像什么都没发生一样。那么发生了什么?如果我有一个组,我将如何修改输入?
openmdao - 从哪里发布来自 openMDAO 的错误
我在 openMDAO 中发现了一个错误。没什么大不了的,但是我找不到在哪里发布错误。有人知道是否有错误跟踪器或其他东西吗?
openmdao - OpenMDAO 从 openmdao 组中提取和设置参数
我在 openMDAO 中设置了几个问题,我想为一个提取“参数”向量,并使用它来设置另一个的输入。基本上第一个优化了一些东西,然后我想在另一个问题中使用该解决方案来做其他事情(请参阅在 OpenMDAO 中实现 AMMF)。
我试图在不必明确命名需要交换的变量的情况下做到这一点。这样,如果这两个问题采用相同的变量作为输入,它应该可以工作......
现在,当我运行问题时,我可以访问组中的 params 成员,但该 params 是使用默认值初始化的。不是上次运行的值。那么我如何得到那个向量呢?
我想这个问题的第二部分是如何在一次操作中“设置”所有参数。
- 堆栈溢出的愚蠢限制是我不能在标题中使用单词问题。我明白了,但是如果我想引用一个名为问题的 openMDAO 对象怎么办?
python - 如何将整数变量添加到 openmdao 驱动程序?
我对这个 openmdao 错误感到困惑。为什么要提出这个问题?我可以以某种方式告诉 openmdao 我没有渐变并使用有限差分吗?为什么这是针对 childWeight 而不是 eta 提出的?
我可以通过将我的所有变量初始化为浮点数(例如root.add('childWeight', IndepVarComp('x',100))
-> root.add('childWeight', IndepVarComp('x',100.0))
)来解决这个问题,但我想了解为什么会引发此错误。
引发错误
python - 需要缩放的抛物面优化
我想使用缩放器并最终使用 OpenMDAO 1.x 测试OpenMDAO 0.x文档中的抛物面示例,但无论是否使用缩放器,我都会得到奇怪的结果。这是代码:
当我在我的系统上运行它时,它给出:
我错过了什么?
openmdao - 新旧 OpenMDAO 之间的有限差异
所以我将代码从旧的 OpenMDAO 转换为新的 OpenMDAO。所有输出和部分梯度已被验证为正确。起初这个问题根本没有优化,然后我意识到旧代码有一些不提供梯度的组件,所以它们是自动有限差分的。所以我在这些组件中添加了 fd_options['force_fd'] = True ,但它仍然没有优化到正确的值。我检查了总导数,它仍然不正确。与旧的 OpenMDAO 相比,每次迭代也需要更长的时间。我可以让我的新代码优化到与旧 OpenMDAO 代码相同的值的唯一方法是将每个组件设置为有限差分,即使在提供渐变的组件上也是如此。
- 当旧的 OpenMDAO 进行自动有限差分时,它是只对优化所需的输出和输入进行计算,还是计算所有输入和输出的整个雅可比行列式?当您将“force_fd”设置为 True 时,新的 OpenMDAO 也会出现同样的问题。
- 您能否提供组件的雅可比行列式的某些部分,并使其其余部分具有有限差分?在旧的 OpenMDAO 中,除非您输入 missing_deriv_policy = 'assume_zero',否则没有提供任何梯度的有限差分吗?
openmdao - 带 PBO 的有限差分群时出错
所以我试图在一组之间进行有限差分,但我遇到了错误
我已经将其追溯到它试图对 pass_by_obj 变量进行有限差分这一事实。当您对一个组件进行有限差分时,有限差分和 pbo 有效,但当您跨组进行有限差分时则失败。这是一个例子: