1

我一直在使用缩放器变量来缩放作为数组的设计变量。但是,我想以不同于其他元素的方式缩放其中一个元素。但是当我将一个数组输入到 scaler 变量中时,我收到以下错误:

  File "/usr/local/lib/python2.7/site-packages/openmdao/core/problem.py", line 1642, in _calc_gradient_ln_solver
Traceback (most recent call last):
    J[item][param][:, i] *= in_scale[param]
ValueError: non-broadcastable output operand with shape (1,) doesn't match the broadcast shape (48,) 

是否可以将数组添加到缩放器?还是有更好的方法来单独缩放数组的各个元素而不是手动进行?

4

1 回答 1

1

看起来您正在尝试缩放一个包含 48 个元素的数组,但您提供的是一个包含一个元素的数组。我相信您的缩放器需要是一个标量(这同样会影响整个数组)或一个 48 个元素的数组。

例如,假设foo是一个 48 元素的数组。

scales = np.ones(48)
scales[0] = 2.0
driver.add_desvar('foo', lower=-10, upper=10, scaler=scales)
于 2016-06-01T11:22:15.313 回答