2016-05-31 7 views
1

スケーラ変数を使用して、配列であるデザイン変数をスケーリングしています。しかし、私は残りの要素とは異なる要素の1つをスケールする必要があります。しかし、ときに私は入力配列をスケーラ変数に、私は次のエラーを取得する:配列の個々の要素のスケーリング

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,) 

はそれがスケーラに配列を追加することは可能ですか?あるいは、配列の個々の要素を手動で行うのではなく、別々に拡大する方が良いでしょうか?

答えて

1

あなたは48個の要素の配列を拡大しようとしているようですが、あなたは一つの要素の配列を提供しています。あなたのスケーラは、スカラ(配列全体に均等に影響する)または48要素の配列のいずれかである必要があります。 fooを想定例えば

は、48要素の配列です。働い

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

うん。実際には2次元配列の形状(6,8)だったので、スケーラに同じサイズの配列を渡していました。しかし、一度それを平坦化すると、スケーリングが機能しました。ありがとう! – Ry10

関連する問題