问题标签 [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.
openmdao - 将基因优化器转换为驱动程序
我已经有了我想要优化的功能的组件。但是,OpenMDAO Alpha 1.0 不包含(据我所知)基因优化器的包装器。我自己写了,现在想把它变成一个驱动程序。我在这里有点迷路,我可以寻求任何指导吗?
谢谢!
optimization - OpenMDAO v0.13:仅在尝试并行运行优化时出错“IndexError:列表索引超出范围”
请参阅底部添加的示例,它们比原始错误更准确地指出了错误。
我一直在尝试让附加的代码并行运行。此代码旨在模仿我希望在大型集群上运行的更大优化代码的结构。这里的错误出现在我们尝试过的几个不同的脚本中,其中一个是并行工作的,除非从数组元素的 configure 方法内的循环中启动的组件建立连接。这个例子在串行中运行得很好,但是当我运行命令时,mpirun -n 4 python test2_forParallel_floats.py
我得到以下输出:
谁能给我任何关于为什么这不会并行运行的见解?
脚本
注意:注释掉的q
元素也是我们需要的附加功能。一块一块地在这里
进一步的例子
此示例更好地显示了导致错误的原因。以下脚本针对默认驱动程序以串行或并行方式运行,但在将 SLSLQPdriver 和 pyOptDriver 与 SNOPT 一起使用时会失败。错误如下:
使用 SLSQPdriver():AttributeError: 'SerialSystem' object has no attribute 'options'
将 pyOptDriver() 与 SNOPT 一起使用:IndexError: index 0 is out of bounds for axis 1 with size 0
结果应该是 y* = 0 在 x* = [0, 0, 0]。
编辑:我现在收到一个不同的错误 SNOPT: IOError: Failed to properly open SNOPT_print.out, ierror = 17
。我不确定发生了什么变化
optimization - OpenMDAO v0.13:约束和目标的梯度
我在进行大型优化时遇到了收敛问题,我相信这个问题可能与我声明目标的方式以及与各个组件提供的梯度相关的约束有关。
有没有办法为以下列方式定义的约束或目标提供梯度(在约束/目标语句中使用数学):self.driver.add_constraint('separation/10 > %s/10' % minimum_distance)
当组件仅提供 的梯度时separation
,而不是separation/10
。
multi-level - 如何使用 openmdao 1.x 设置多级 MDO 公式?
由于 openmdao 1.x 问题只处理一个驱动程序,并且优化器仍然应该是驱动程序,所以如何实现多级公式?我应该使用两个问题吗?我应该直接在solve_nonlinear 组件方法中调用优化器吗?谢谢。
optimization - OpenMDAO v0.13:一次运行具有优化器驱动程序的程序集
有没有办法从 OpenMDAO v0.13 中的调用脚本中指定使用优化器驱动程序运行的程序集的单次运行?
openmdao - OpenMDAO v0.13:安装后的 GUI 错误
当我打算按照安装视频所示启动 GUI 时收到错误消息。感谢大家
我正在使用 Ubuntu 14.04 LTS,这是视频 /@9:46:https://www.youtube.com/watch?v=5oWyY_L4Vxc
这是我的错误信息:
openmdao - OpenMDAO 1.2.0 隐式组件
我是 OpenMDAO 的新手,我仍在学习如何制定问题。举个简单的例子,假设我有 3 个具有给定边界的输入变量:
我有 4 个输出,定义为:
我的目标是最小化 f1 * g1,但强制执行约束 f1 = f2 和 g1 = g2。例如,一种解决方案是 x=3、y=4、z=6(不知道这是否是最优的)。
对于这个简单的问题,您可能只需将输出相等约束提供给驱动程序。但是,对于我的实际问题,很难找到满足所有约束的初始起点,因此优化器无法做任何事情。我想也许我可以将 y 和 z 定义为隐式组件中的状态,并让非线性求解器在给定 x 的情况下计算出 y 和 z 的正确值,然后将 x 馈送到优化驱动程序。
这是一种可能的方法吗?如果是这样,在这种情况下,隐式组件会是什么样子?我查看了 Sellar 问题教程,但无法将其翻译为这种情况。
parallel-processing - 在 OpenMDAO 中使用具有底层并行性的代码
我有兴趣为我们的几个 OpenMDAO 组件添加底层并行性。这些组件中的大部分代码都是用 Fortran 编写的。Fortran 代码封装在 python 中,然后在 OpenMDAO 中用作 python 模块。我想使用 OpenMP 或 OpenMPI 并行运行这些 Fortran 代码。我们已经计划使用 OpenMDAO 的内置并行功能,因此这将是第二层并行。这可行吗?如果是这样,您是否有推荐的方法可以很好地与 OpenMDAO 配合使用?
gradient - 我们如何指定给定参数不影响 OpenMDAOv1+ 中组件的梯度?
我们如何指定给定参数不影响 OpenMDAOv1+ 中组件的梯度?在早期版本中我们设置missing_deriv_policy = 'assume_zero'
了 ,但在新的 OpenMDAO1+ 中似乎不存在。我想我可以通过super
在__init__
函数中添加输入而不是将它们包含在其中params
以便它们对 OpenMDAO 不可见,或者可能只是将偏导数返回为 0,但是预期/推荐的方式是什么?如果这是在文档中,我很抱歉,如果是,那么我一定错过了。
recorder - OpenMDAO 1.x:并行记录
在 MPI 下使用 ParallelGroup 中的分布式组件运行分析时,将 DumpRecorder 添加到分析时出现错误。下面是一个小示例来演示这一点(这是使用 2015 年 10 月 28 日的最新主分支提交 aaa67a4d51f4081e9e41b250b0a76b077f6f0c21 运行的):
引发的错误是:
我看到记录器为每个处理器转储一个文件,所以该BaseRecorder._filter_vectors
方法不应该过滤掉特定处理器上不存在的参数吗?我对代码还不够熟悉,无法提出修复建议,所以我希望 OpenMDAO 开发人员可以轻松找出问题所在。
手动指定包含工作,因为 Sliced 参数随后被排除,但如果这不是必需的,并且在引擎盖下处理,那就太好了。
我还想让你们知道我们对新框架有多兴奋。它比0.x版本快得多,并且并行 FD 功能非常受欢迎,并且像魅力一样工作!