缩放数组的单个元素

Scaling individual elements of array

我一直在使用 scaler 变量来缩放一个设计变量,它是一个数组。但是,我想以不同于其他元素的方式缩放其中一个元素。但是当我将一个数组输入到 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,) 

是否可以将数组添加到定标器中?或者有没有更好的方法来分别缩放数组的各个元素而不是手动缩放?

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

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

scales = np.ones(48)
scales[0] = 2.0
driver.add_desvar('foo', lower=-10, upper=10, scaler=scales)