我想约束(未绑定)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.]))
答案 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.]))