问题标签 [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.
recorder - OpenMDAO 1.x:记录反变量、约束和目标
您如何从记录器保存的信息中获取有关哪些变量是设计变量、目标或约束的信息?将此信息打印到文件以在运行期间跟踪优化进度会很有用。看起来目前RecordingManager.record_iteration
并不允许这样做,因为您只传递了root
系统和用于优化器设置的元数据字典。
是否可以在RecordingManager.record_iteration
被调用的 eg中添加一个参数optproblem
,这是一个带有 devars、约束和目标的字典的字典?
然后,一个简单的 OptimizationRecorder 可以转储列格式的文件,其中包含数量,以便在优化期间轻松绘制。
openmdao - 使用不同的初始猜测并行化 openmdao 优化
为了找到更好的最小值,我目前创建并运行了多个具有不同初始猜测的 openmdao 问题实例,然后选择性能最佳的解决方案。为了让这个过程更快,我目前使用 Python 的 multiprocessing 模块,并在一个并行子进程中解决每个 openmdao 问题。
但是,随着我的问题变得更加复杂,我也想并行化优化过程(通过使用 ParallelGroup 和/或分布式组件),我不确定 mpi 是否会以奇怪的方式与 Python 的多处理交互。是否有任何 openmdao 功能可以同时处理解决单个问题和多个问题实例的并行性?
gradient - OpenMDAOv1+:有没有办法对组件中的单个变量进行有限差分?
我很确定我已经知道这个问题的答案,但是有没有办法对已经提供所有其他变量的导数的组件中的单个变量进行有限差分?我能想出的唯一方法是为相关组件中的单个变量硬编码我自己的有限差分梯度,以便 openmdao 将结果视为提供的梯度。
openmdao - OpenMDAOv1+:可以在没有 IndepVarComp 组件的情况下设置组件或组的参数值吗?
有没有办法将设计变量值传递给 OpenMDAOProblem
或Group
不Component
使用IndepVarComp
组件?我发现这样做prob.root.myComp.x = x
不会引发错误,但驱动程序似乎看不到。
其动机是简化使用 OpenMDAO 创建的模型,以便在调用脚本中需要更少的组件和连接语句。
openmdao - 单个设计变量的 FD 步长
我对如何在各个设计变量上指定 FD 步长有点困惑。在旧的 OpenMDAO 中,可以在添加 desvar 时指定步长。在新版本中 add_desvar 没有这个参数,所以我尝试在 IndepVarComp 的 fd_options 上设置它,也不起作用。这对我来说不是那么直观,我必须将它设置在下游组件上。但是如果我不得不这样做,我将如何在设置时将它设置在每个单独的参数上?我可能遗漏了一些东西,但是请您让我知道如何在下面的示例中使用它,我试图在整个问题上设置prob.root.sub.p1
with的步长。force_fd
如果我打印 mydictSystem.fd_jacobian
和我看到的步长:
谢谢!
python - ValueError:形状(6,108)和(36,)未对齐:108(dim 1)!= 36(dim 0)
我从线性化方法中看到了一些尺寸错误。具体来说,
我有一些二维数组,它们为所有输入向量的单个输出向量定义雅可比行列式的一部分。我无法查明错误的确切原因,因为有几种情况符合给定的形状。我想知道问题是否可以通过自己展平阵列来解决。
关于如何解决此错误的任何其他想法将不胜感激。这些渐变在 1.0 之前的版本中运行良好。
完整的错误消息如下:
openmdao - OpenMDAO 1.x+ 是否支持 Brent 驱动程序?
我正在将使用 Brent 驱动程序的代码转换为新的 OpenMDAO 1.x+。但是,我找不到新版本。OpenMDAO 1.x+ 是否支持 Brent 驱动程序?如果尚未转换为新版本,是否可以请求 Brent 驱动程序?
openmdao - OpenMDAO1.x:难以访问通过多个组隐式链接的变量
我无法访问通过多层组隐式链接的变量。根据文档:
在新的 OpenMDAO 中,组不是组件,也没有自己的变量。通过将提升 arg 传递给 add 调用,可以将变量提升到组级别,例如,
这将允许通过 group.params['x'] 访问属于 comp1 的变量 x。
但是,当我尝试访问子子组的变量时,我遇到了错误。请参阅下面的示例,该示例显示了一个工作和非工作示例:
您能否解释一下为什么这不起作用,以及如何在不了解较低级别组的情况下将变量提供给顶层?
parallel-processing - OpenMDAOv1.x:警告:并行派生未在 MPI 下运行
我刚刚在我们的超级计算机上完成了 OpenMDAOv1.3 的安装。安装成功,所有测试都通过或跳过。但是,当我运行测试时,我收到以下警告:
我不确定该怎么做(如果有的话),所以我正在寻找有关警告消息含义的信息。我们计划与 OpenMDAO 的内置 MPI 功能并行运行。我目前在系统上加载了 openmpi-1.8.4。
openmdao - OpenMDAO1.x:为多次运行反馈一个变量(运行列表)
我有两个组件 comp1 和 comp2 形成问题,应该运行几次。为此,我发现我可以使用 UniformDriver(我不知道这是否最适合我的目的)。但是,我想将 comp2 的输出反馈到 comp1。所以在第一次运行之后,我从 comp2 获得输出,下一次运行应该是 comp1 的输入。我认为以下示例使我想做什么更清楚:
基本上,前一次运行的组件 Power3 的输出 x 应连接到组件 Times2Plus 的输入 x。此外,我有一些参数 z,我事先知道,用于组件 Times2Plus,每次运行都不同。包含此更改参数和反馈选项的最佳方式是什么?