手册中的示例代码如下。
如果vectorize = True存在,则会出现错误:
comp:对ExecComp()的调用中的arg'vectorize'在表达式['y = 3.0 * x + 2.5']中未引用任何变量
我认为最新版本没有此标志? 我可以在execcomp中使用np.diff
import numpy as np
from openmdao.api import IndepVarComp, Group, Problem, ExecComp
p = Problem()
model = p.model
model.add_subsystem('indep', IndepVarComp('x', val=np.ones(5)))
model.add_subsystem('comp', ExecComp('y=3.0*x + 2.5', vectorize=True, x=np.ones(5), y=np.ones(5)))
model.connect('indep.x', 'comp.x')
p.setup()
p.run_model()
J = p.compute_totals(of=['comp.y'], wrt=['indep.x'], return_format='array')
print(J)
答案 0 :(得分:0)
vectorize选项是在最新的OpenMDAO版本发布后添加的,因此要使用它,您必须等到下一个版本,或者使用对OpenMDAO github存储库的最新提交进行安装。
要回答第二个问题,ExecComp中当前不提供np.diff命令。如果您希望使问题可用,可以将问题提交到(https://github.com/OpenMDAO/OpenMDAO/issues)的OpenMDAO github存储库。