スケーリングメカニズム

DvResponseの両方をmsolveでスケーリングできます。

スケーリング用の追加のプロパティ(Dvfactor、mean、scaleBySen、およびResponsefactor)が用意されているので、コードの残り部分を変更する必要はありません。

Dvのスケーリング

factormeanを指定している場合は、次の式によってDvが計算されます。(1) D v = D v . b × f a c t o r + m e a n MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamiraiaadA hacqGH9aqpcaWGebGaamODaiaac6cacaWGIbGaey41aqRaamOzaiaa dggacaWGJbGaamiDaiaad+gacaWGYbGaey4kaSIaamyBaiaadwgaca WGHbGaamOBaaaa@4869@

scaleBySenは、自動スケーリングでDvをどのようにスケーリングするかを指定するブーリアンフラグです。デフォルト値がtrueの場合は、目的関数の感度によってDvがスケーリングされます。

次の例は、スケーリングしたDvを剛体の質量として使用する方法を示しています。

>>> # Create a scaled Dv
>>> dv   = Dv(b=1.0, mean=1.0, factor=2.0)

>>> # Create a Part with designable mass; the current value of mass is 3.0
>>> part = Part(mass=dv, ip=[10,10,10], cm=Marker())

応答のスケーリング

factorを指定している場合は、すべての応答クラスをスケーリングできます。スケーリングした応答の値と感度は、元の応答の値と感度にスケーリングファクターを乗算した値になります。

次の例は、スケーリングしたRMS2を作成する方法を示しています。
>>> # Create RMS2 and scale it by 0.01
>>> dx_coupler = "DX({marker})".format(marker=m.coupler.cm.id) 
>>> a2x        = RMS2(targetValue=xy, measuredValue=dx_coupler, factor=0.01)

スケーリングすると、最適化問題が収束しやすくなることがあります。詳細については、高度なトピックのセクションをご参照ください。