问题标签 [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.

0 投票
1 回答
70 浏览

python - 缩放抛物面和导数检查

check_partial_derivatives()我对应用于我之前的问题中显示的问题的方法的输出感到惊讶:抛物面优化需要缩放。当我添加对该方法的调用时:

我得到以下输出:

优化是正确的(即几乎可以肯定地证明导数是正确的),但check_partial_derivatives输出并未显示 fd 和正向/反向方法之间的一致结果。

0 投票
1 回答
41 浏览

openmdao - OpenMDAO:用普通组件替换 ExecComps 更改输出

我正在运行教程中的“Sellar exmaple”代码。根据教程页面上给出的文档,这ExecComp只是声明一个 normal 的简写Component。所以我尝试将示例中的 s 重新定义ExecComp为普通Components 并在同一个示例中使用它们。

示例中的ExecComps 定义如下 -

我定义的正常Components如下-

目标组件

约束 1

约束 2

Component在重写的实现中将这些新声明的 s 实例化为 -

代码中的其他所有内容都与教程中的相同。但是在执行它们之后,当我比较结果时 - 结果不匹配。

我在这里遗漏了一些明显的东西吗?感谢您的时间。

0 投票
1 回答
64 浏览

openmdao - pyOptSparseDriver 中的退出标志

如果出现故障,我需要能够指定退出标志。pyoptsparse_driver 的OpenMDAO文档具有退出标志的选项。但是,当我使用退出标志作为选项运行它时,它会说Option 'exit_flag' has not been added. 此外,我也不确定如何实际指定某事是否失败。我是否需要将标志从在solve_nonlinear() 中失败的组件中传递出去,并以某种方式使用它来设置pyoptsparse_driver 上的选项?我想做这样的事情,但我不确定语法,也找不到示例:

0 投票
2 回答
73 浏览

mpi - OpenMDAO1+:并行变量树

我有大量的模型参数来控制几个不同的组件。该模型正在并行运行。模型参数在运行期间保持不变。问题是我必须IndepVarComp()在并行运行时为每个模型参数添加一个,即使我想通过对象传递它们。在运行模型之前(在设置和运行之间),我需要能够编辑运行脚本中的值。有没有这样做的好方法?我认识到由于在 MPI 下运行而没有参数的“源”而导致的数据传递问题。

如果我IndepVarComp()为每个模型参数添加一个,它就可以工作,只要我不通过对象传递。这是有道理的,如果我告诉 OpenMDAO 我希望能够更改值并跟踪模型如何更改,那么通过对象传递是矛盾的。但是,我需要能够在设置后传入参数值,并且如果不IndepVarComp()为每个模型参数创建一个,我就无法在 MPI 下执行此操作。

我附上了一个基于我想要做的 OpenMDAO 文档中的 Sellar 问题的示例。通过取消注释第 28 行、注释掉第 27 行和取消注释第 139 行src.py,示例可以并行运行。

运行$ mpirun -np 4 python call.py

调用.py

src.py

0 投票
2 回答
101 浏览

openmdao - OPENMDAO:我需要像我在 0.9.5 版中那样激活 openmdao 1.6.3 吗?

我现在正在尝试修改使用 openmdao 的“webcam-pulse-detector”,但它在 openmdao 中针对两个版本都失败了。

在 0.9.5 版本中,它报告导入错误“no module named traits.api”,在最新版本 1.6.3 中,它报告错误“ImportError: No module named datatypes.api”,这是因为 openmdao 没有激活然而。

那么如何通过键入“OPENMDAO/Scripts/activate”来激活 openmdao 1.6.3 版,就像在 0.9.5 版中一样?非常感谢!

0 投票
1 回答
68 浏览

openmdao - 检查偏导数和有限差分误差

关于我之前的问题Scaled paraboroid andderived checks,我看到你修复了与运行一次问题有关的问题。我想尝试,但在以下代码中显示的导数检查和有限差分仍然存在问题:

第一次检查工作正常,但第二次check_partial_derivatives为 FD 给出了奇怪的结果:

并且(可能不相关)当我尝试设置root.fd_options['force_fd'] = True(只是为了查看)时,在第一次检查时出现错误:

我使用 OpenMDAO HEAD (d1e12d4)。

0 投票
1 回答
68 浏览

openmdao - 在 OpenMDAO 1.x 中创建自定义驱动程序/执行程序

我正在使用 OpenMDAO 进行 CNC 车削过程的模拟,并希望为我的 s 实现我自己的“执行程序” Component——就像旧版本 OpenMDAO 中的汽车示例一样,其中SimAcceleration 驱动程序用于实现组件的执行方式。

但是,我不知道如何在 OpenMDAO 1.x 中实现这样的示例,我们可能希望在其中实现自定义逻辑来驱动输入到组件和/或Groups 并从中获取输出。任何指针都会非常有帮助。

PS - 我正在考虑将我的组件包装在 aProblem中,并在另一个 Component 中创建它的实例,并将所有执行逻辑放入其中solve_nonlinear(如建议的here)。但我不确定这是否是处理这个问题的正确方法。

0 投票
1 回答
124 浏览

openmdao - parallel DoE with distributed components in OpenMDAO

I'm trying to run a DoE in parallel on a distributed code, which doesn't seem to work. Below is a simplified example that raises the same error as for the real code.

I run this with

and get this error:

I don't see a test for this use case in the latest master, so does that mean you don't yet support it or is it a bug?

0 投票
1 回答
116 浏览

python - 多学科问题的优化器选择

我正在尝试使用 OpenMDAO 作为验证手段来解决MDO 测试套件中的问题。我面临的问题是为给定问题选择优化器/算法。

以下是通过 IDF 方法制定的套件中丙烷燃烧问题的代码。我尝试使用 pyOptSparseDriver 中提供的 SLSQP 和 NSGA2 来解决。但是两个优化器都给出了次优的解决方案。

SLSQP 解决方案 -

NSGA2 的解决方案 -

我知道问题不在于定义,因为我尝试使用约束 f2、f6、f7 和 f9 作为等式约束 (=0) 而不是下限来运行问题,我得到了最优值。

那么,我应该研究哪些其他优化器?或者是否有任何其他问题让我对优化器的问题感到困惑。

提前致谢。

0 投票
1 回答
213 浏览

python - ScipyOptimizer 给出不正确的优化结果

我在OpenMDAO中运行一个非线性优化问题,我知道它的最佳解决方案(我只想验证解决方案)。我正在使用fromSLSQP的驱动程序配置。ScipyOptimizeropenmdao.api

我有 3 个设计变量 A、B 和 C,它们各自的设计空间(A 的最小最大A 等等)和一个目标函数 Z。正如我所说,我知道所有三个设计变量的最佳值(我们称它们为 A sol、 B sol和 C sol),它们产生 Z 的最小值(称之为 Z sol)。

当我运行这个问题时,我得到的 Z 值大于 Z sol,表明它不是最优解。当我将 C sol分配给 C 并仅使用 A 和 B 作为设计变量来运行问题时,我得到的 Z 值更接近 Z sol并且实际上小于我之前得到的值(在 3 个设计变量场景中)。

为什么我要观察这种行为?在这两种情况下不应该ScipyOptimizer给出相同的解决方案吗?

编辑:添加一些代码..

这段代码给了我不正确的结果。当我desvar_twc从两个类中删除并为其分配最佳值(从我拥有的解决方案中)时,我得到了相当正确的结果,即目标函数的答案小于前一个场景。