OpenMDAO为常量a,b和数组X添加< = X< = b约束

时间:2017-02-13 18:45:06

标签: arrays openmdao

我想约束(未绑定)z设计变量,以便每个条目被约束为小于或等于5且大于或等于-5:{ {1}}。我尝试通过定义约束来仅返回z(-5<=Z<=5)的值,然后将约束定义为self.add('con_cmp1', ExecComp('con1 = z'), promotes=['z', 'con1'])的上限和下限5.0({{ {1}})。

当我这样做时,我收到错误-5.0。这个错误是什么意思?如何正确设置此约束?

top.driver.add_constraint('con1', lower=np.array([-5., -5.]), upper=np.array([5.,5.]))

1 个答案:

答案 0 :(得分:2)

基本问题是ExecComp假设一切都是标量,除非你另有说明。因此,如果您提供一些大小信息,您可以制作您可以使用的代码。

self.add('con_cmp1', ExecComp('con1 = z', inits={'z':np.zeros(2), 'con1': np.zeros(2)}), promotes=['z', 'con1'])

但是,实际上根本不需要ExecComp。您可以直接约束设计变量,如下所示:

top.driver.add_constraint('z', lower=np.array([-5., -5.]), upper=np.array([5.,5.]))