設計感度解析

入力uに対する出力y(u)の感度は、uの単位変化に起因するyの変化として定義されます。

(1)
Δ y Δ u = ( y u )   +  higher order terms

数量 ( y u ) は、入力uに対する数量yの1次感度と呼ばれます。

感度解析は、数学的なモデルまたはシステム(y)の出力の変化や不確定性を、その入力(u)の変化や不確定性のさまざまな発生源にどのように帰結できるかについての研究です。

設計感度解析の場合、数量uは入力ではなく、設計bが入力です。ここで明らかにしようとしているのは、設計bの特定の変化分に対して、応答yがどのように変化するのかということです。

マルチボディシミュレーションでは、応答 y は一般に、明らかに設計bに関するシステム状態 x および x ˙ の関数です。システム状態 x の構成要素は、(a)変位、(b)速度、(c)Lagrange乗数(または拘束反力)、(d)ユーザー定義の微分方程式、(e)変数とLSE/GSE/TFSISOの出力から得られるユーザー定義の代数方程式、および(f)計算を簡素化する内部で作成された中間状態です。システム状態 x (システム応答)は、暗黙的にbに依存しています。したがって、 x = x ( b ) となります。

数学的には次のとおりです: (2)
y = y ( x ( b ) , x ˙ ( b ) , b ) Δ y Δ b = ( y x ) x b + ( y x ˙ ) x ˙ b + y b  + higher order terms

運動方程式によって、(xb)と(< x ˙ />と(x, b))の間の暗黙的な関係が得られます。数量 x b x ˙ b  and  y b が最初に計算される必要があります。これらが求まると、設計感度 Δ y Δ b を計算できます。

Δ y Δ b の計算は、MotionSolveではDSA(Design Sensitivity Analysis)と呼ばれます。これはMotionSolveにおける新しい解析手法です。これは常に、静解析、準静解析、運動学解析、動解析、線形解析など、通常の解析に伴って実行されます。通常の解析の役割は、特定の設計bについて、状態z z ˙ と出力yを計算することです。これらが求まったら、DSA解析によって感度 Δ y Δ b が計算されます。Ny個の応答とNb個の設計変数が存在する場合、 [ Δ y Δ b ] Ny x Nb次元のマトリックスです。

設計感度を計算するためのよく知られた手法が3つあります。これらについて以下で簡単に説明します。

有限差分

その名前が示すように、この手法では有限差分を使用して Δ y Δ b を計算します。最初に、 b の変化分、 Δ b が選択されます。次に、出力の変化分 Δ y Δ b が次のように計算されます。(3)
Δ y Δ b     y ( x ( b + Δ b ) , x ˙ ( b + Δ b ) , b + Δ b ) y ( x ( b ) , x ˙ ( b ) , b ) Δ b

この手法はHyperStudyで使用されるものであり、小規模な設計感度解析(通常は20~30個の変数)のみに使用できます。Nb個の設計変数があるシステムの場合、この手法では、 ( N b + 1 ) 回のシミュレーションが必要になります。 y ( x ( b ) , x ˙ ( b ) , b ) を計算するために1回のシミュレーションが必要です。1回のシミュレーションが、 y ( x ( b + Δ b k ) , x ˙ ( b + Δ b k ) , b + Δ b k ) , k = 1... N b を計算するために必要です(つまり、設計変数ごとに1回)。

この手法の大きな問題は、正しい Δ b k を選択することです。この値が小さすぎると、解における数値エラーにまぎれて感度が失われます。これらの値が大きすぎると、解の非線形性が見落とされます。摂動 Δ b k もシステムの規模と単位に依存しています。要約すると、この手法は小規模な問題のみに適用可能であり、摂動 Δ b がどうあるべきかに関しては、解決できない問題も存在します。

直接微分

この手法では、運動方程式は各設計変数bi, i=1... Nbに対して解析的に微分されます。各時点において、解析ステップが完了した後に、Nbセット分のDAEが数値的に求められ、必要な値 Δ y Δ b が得られます。この手法は非常に堅牢であり、設計変数の数Nbが多すぎない場合に使用されます。設計変数の数が増えるほど、解析のコストも増大します。

随伴手法

これも有限差分が使用されない解析手法です。ただし、この手法のコストはモデル内の応答変数の数に比例します。設計変数の数はコストに影響を与えません。この手法は非常に堅牢であり、設計変数の数Nbが多い場合に使用されます。

次の例は、MotionSolve Pythonインターフェースを使用してDSAを実行する方法を示しています。dsa="AUTO"という設定を使用すると、問題の特性に基づいて最善の手法が選択されます。
if __name__ == "__main__": 
m = sliding_block("lugre1")
m.simulate (type=" STATIC ", dsa="AUTO", end=4, dtout=.01)

m.lugre.mus=0.5
m.simulate (type="STATIC", dsa="AUTO", end=8, dtout=.01)
現時点では、MotionSolveでDSAがサポートされているのは、運動学解析、静解析、および準静解析の場合のみです。
重要: DSAは、動解析や線形解析ではサポートされていません。

また、感度を計算するためには、設計変数の内容、これらの設計変数を使用してモデルがどのようにパラメータ化されているのか、および応答変数の内容をMotionSolveが認識している必要があります。DSAによって正しい解が得られるのは、モデルが“設計可能”である場合のみです。非設計可能モデルの場合は、DSAによってゼロという解が返されます。