Main Content

物理シミュレーションでの重要な概念と選択肢

この節では、Simscape™ モデルのソルバーや他のシミュレーション設定の構成やテストを行う際に考慮する必要がある、高度な概念やトレードオフについて説明します。推奨設定の概要は、物理シミュレーションに使用するソルバーの最適な選択を参照してください。背景情報は、Simscape モデルによる物理システムの表現およびSimscape でのシミュレーションの仕組みを参照してください。

可変ステップ ソルバーと固定ステップ ソルバー

"可変ステップ ソルバー" は、設計、プロトタイピング、調査用シミュレーション、シミュレーション中の正確なイベントの特定を行う場合に一般に選択されます。リアルタイムのシミュレーションには適しておらず、イベントが多数あると時間のかかる場合があります。

可変ステップ ソルバーは、進行にあわせてステップ サイズを自動的に調整し、よりよくエラーの解決に順応します。可変ステップ解の精度と速度は、ソルバーの許容誤差を調整して制御します。多数の可変ステップ ソルバーを使用する場合は、タイム ステップ サイズの最小値と最大値を制限することもできます。

"固定ステップ ソルバー" は、プラットフォームやオペレーティング システム間でのパフォーマンスを比較する場合、モデルのコード バージョンを生成する場合およびシミュレーションの所要時間を制限または固定する場合に推奨され、あるいは必要となります。代表的な用途はリアルタイム シミュレーションです。詳細は、リアルタイム シミュレーションを参照してください。

固定ステップ ソルバーでは、タイム ステップのサイズを指定してシミュレーションの精度と速度を制御します。固定ステップ ソルバーでは、精度の改善やイベント検索用の自己調整は行われません。こうした制限により、シミュレーションの精度が大幅に低下する場合があります。

陽的ソルバーと陰的ソルバー

モデルにおける剛性の程度と代数拘束の有無によって、"陽的" ソルバーと "陰的" ソルバーのどちらを選択するかが決まります。陽的ソルバーと陰的ソルバーは、システムのシミュレーションに異なる数値メソッドを使用しています。

  • スティッフでない ODE システムでは、陽的ソルバーを選択します。他のシミュレーション特性が固定されている場合、陽的ソルバーで要する計算処理は陰的ソルバーより少なくなります。

    各タイム ステップの解を求めるため、陽的ソルバーは ODE システムのローカルな勾配に基づく数式を使用します。

  • システムがスティッフな場合は、陰的ソルバーを使用します。陽的ソルバーでは計算処理が少なくてすみますが、スティッフな問題に対しては陰的ソルバーの方が精度が高く、解を求めるために必須となることも多くあります。陰的ソルバーでは、シミュレーションが実行されるタイム ステップ内で、ステップごとの反復が必要となります。一部の陰的ソルバーでは、この反復を制限または固定することができます。

    陰的ソルバーは現在のステップでの解から始め、代数ソルバーを用いて次のタイム ステップでの解へと反復的に解決を進めます。陰的アルゴリズムではシミュレーション ステップあたりの作業は増えますが、比較的少数の大きなステップを用いることが可能です。

  • システムに DAE が含まれる場合は、システムがスティッフでなくても陰的ソルバーを使用します。このようなソルバーは代数拘束の解決と微分方程式の積分を同時に実行できるよう設計されています。

非スパースおよびスパース線形代数

システムのシミュレーションを複数の状態で行う場合、ソルバーは行列を使用して数学システムを操作します。状態の数が多い場合は、スパース線形代数方式を大規模な行列に適用するとシミュレーションがより効率的になります。

イベントの検出と特定

多くの場合、イベントはシミュレーションのタイム ステップ間で発生します。

  • 固定ステップ ソルバーはイベントの "ステップ オーバー" 後にイベントを検出しますが、イベントを発生時に特定することはできません。このため、精度が大幅に低下する場合や解が得られない場合があります。

  • 可変ステップ ソルバーは、タイム ステップの時点と長さを調整することにより、イベントの検出とイベント発生のタイミングの推定を同時に行うことができます。

ヒント

シミュレーションでのイベントのタイミングや急激な変化を推定するには、可変ステップ ソルバーを使用してください。

シミュレーションでステップ サイズの変更によりイベントや急激な変化に対応させることが頻繁に必要となる場合は、陽的ソルバーと比較した陰的ソルバーの利点の大部分、あるいはすべてが無意味となります。

制限なし、制限ありおよび固定コスト シミュレーション

場合によっては (リアルタイム シミュレーションなど)、シミュレーションの実行時間を制限するだけでなく、実際に予測可能な値に固定する必要があります。実行時間を固定すると、頻繁なイベントをシミュレーションする場合のパフォーマンスが改善する場合もあります。

可変ステップ シミュレーションのリアルタイムのコストは場合によっては無制限となります。ソルバーは限られたシミュレーション時間を超過しても実際には無期限の時間をかけてシステムの解を求めることができます。これは、タイム ステップの数とサイズがシステムに合わせて調整されているためです。固定ステップ ソルバーの構成により、シミュレーションを完了するための実際の時間を制限することができます。ただし、シミュレーションの前に実際の時間を正確に予測することは難しい場合もあります。固定ステップ ソルバーでも、各タイム ステップで解を得るために複数回の反復を行うことができます。この反復処理は可変で、数は通常、無制限です。そのため、ソルバーは必要な回数だけ反復を行います。

実行時間を固定すると "固定コスト" シミュレーションとなり、タイム ステップを固定して、ステップごとの反復回数も制限できます。固定コスト シミュレーションを実行すると、"実行オーバーラン" の発生を防ぐことができます。これは実行時間がシミュレーションのサンプル時間より長くなる現象です。既知の固定コストがない制限付き実行時間を設定しても、一部のステップがサンプル時間をオーバーランする場合があります。

実際にソルバーで必要な計算処理の量は、その他のさまざまな要因 (モデルの複雑さやコンピューターのプロセッサなど) によっても左右されます。詳細は、リアルタイム シミュレーションを参照してください。

グローバル ソルバーとローカル ソルバー

システムの各部に対して異なるソルバーを使用できます。たとえば、システムのスティッフな部分には陰的ソルバーを使用し、それ以外の部分には陽的ソルバーを使用することができます。このような "ローカル ソルバー" を使用すると、シミュレーションはより効率的になり、計算コストも抑えられます。

このようなマルチソルバー シミュレーションを実行する場合、各ソルバーおよび各サブシステムで使用する個別のタイム ステップの順序を調整し、共有タイム ステップの一部またはすべてにおいて複数のソルバー間でシミュレーションの更新を相互に渡せるようにしなければなりません。