Main Content

固定ステップ ソルバーの選択

この例は、モデルの適切な固定ステップ ソルバーを選択するアルゴリズム手法を示しています。Simulink® のシミュレーション ワークフローでは、モデル コンフィギュレーション パラメーターの [ソルバー] パラメーターの既定の設定は auto です。可変ステップのソルバーを選択するために Simulink によって使用されるヒューリスティックな方法を下の図に示しています。

固定ステップ ソルバーを使用する場合

固定ステップ ソルバーを使用する一般的なケースの 1 つが、モデルからコードを生成して、そのコードをリアルタイム システムで実行することを計画しているワークフローです。

可変ステップ ソルバーでは、モデルのダイナミクスに応じ、ステップ サイズをステップごとに変えられます。特に、可変ステップ ソルバーでは、指定された許容誤差内に収まるようにステップ サイズの増減を行います。そのため、可変ステップ サイズをターゲット システムのリアルタイム クロックにマッピングすることはできません。

Simulink 製品の固定ステップ連続ソルバーは、十分に小さなステップ サイズを提供することによって、望む精度レベルのシミュレートが可能です。残念ながら、連続状態に対して許容可能な結果が生ずるソルバーとステップ サイズの組み合わせを、最小の時間で試すことなく決定することは、不可能もしくは非実際的です。特定のモデルに対して最適なソルバーを決定する場合は、一般に試してみることが必要です。

モデル例は、航空機の縦運動の飛行を対象とした飛行制御アルゴリズムを表しています。

可変ステップ ソルバーを使用したベースライン結果の確立

シミュレーションを開始する前に、可変ステップ ソルバーの受け入れ可能な許容誤差を決定します。モデルは現在、それぞれ 1e-6 および 1e-4 の絶対許容誤差と相対許容誤差の既定値を使用して設定されています。

これらの値が許容可能である場合は、この例を続行します。そうでない場合は、モデル コンフィギュレーション パラメーターを使用して、仕様に合わせて値を変更できます。

モデル コンフィギュレーション パラメーターの [ソルバー] ペインにある [ソルバー] ドロップダウンで、ソルバーのリストから可変ステップ ソルバーを選択して、モデルをシミュレーションします。Simulink における [ソルバー] パラメーターの既定の設定は VariableStepAuto です。Simulink は、モデルのコンテンツとダイナミクスに基づいて、ソルバーおよびシミュレーションの最大ステップ サイズを選択します。

auto ソルバーを使用してモデルのシミュレーションを実行するか、別のソルバーを選択します。さらに、モデル コンフィギュレーション パラメーターの [データのインポート/エクスポート] ペインで、[状態の保存][時間の保存]、および [出力の保存] パラメーターを有効にします。モデルのログ形式を Dataset に設定して、シミュレーション データ インスペクターによる信号の記録を許可します。

この実行のシミュレーション結果は、このタスクのベースライン結果に指定されます。モデルには 13 個の信号が含まれていますが、この例では下の図に示している一部の信号にのみ焦点を当てます。

ソルバー プロファイラーを使用してモデルをプロファイリングして、モデルの固定ステップ シミュレーションの候補に適切なステップ サイズを特定します。ツールの起動方法と使用方法の詳細については、ソルバー プロファイラーを参照してください。コマンド ラインで使用する場合は、solverprofiler.profileModelを参照してください。

ソルバー プロファイラーによって返される最大ステップ サイズと平均ステップ サイズに注意してください。

             solver: 'ode45'
             tStart: 0
              tStop: 60
             absTol: 1.0000e-06
             relTol: 1.0000e-04
               hMax: 0.1000
           hAverage: 0.0447
              steps: 1342
        profileTime: 0.0665
           zcNumber: 0
        resetNumber: 600
     jacobianNumber: 0
    exceptionNumber: 193

モデルの固定ステップ シミュレーションの実行

モデルの可変ステップ シミュレーションの結果を取得したら、1 つ以上の固定ステップ ソルバーを使用してそれをシミュレートします。この例では、モデルはノンスティッフなすべての固定ステップ ソルバー (ode1ode2ode3ode4ode5、および ode8) を使用してシミュレートされます。また、モデル コンフィギュレーション パラメーターの [ソルバー] ドロップダウンから特定のソルバーを選択して、可変ステップのベースラインに対して実行することもできます。

固定ステップ サイズを選択する際の考慮事項

モデルの固定ステップ シミュレーションに最適なステップ サイズは、コード生成の目的、モデルの物理特性またはダイナミクス、使用されるモデル化パターンなどの制約を前提として、速度と精度のバランスをうまくとっています。たとえば、コード生成では、ステップ サイズがプロセッサのクロック速度 (CPU 周波数の逆数) 以上でなければならないことが指定されます。本来のシミュレーションの目標では、ステップ サイズはモデル内の個々のブロックによって指定される離散サンプル時間より小さくなければなりません。周期信号をもつモデルの場合、ステップ サイズは、信号が最大周波数の 2 倍の周波数でサンプリングされるようなサイズでなければなりません。これは、ナイキスト周波数として知られています。

この特定の例については、ソルバーの固定ステップ サイズを 0.1 (ソルバー プロファイラーによって検出された最大ステップ サイズ) に設定します。ここでは、Dryden Wind-Gust ブロックの離散サンプル時間 0.1、およびスティックの動きの周期的性質、航空機の応答が考慮されます。

モデルの状態、出力、シミュレーション時間のログが有効化されていること、そしてそのログ形式がモデル コンフィギュレーション パラメーターで Dataset に設定されていることを確認します。

ソルバーの [タイプ]Fixed-step に設定されている場合は、モデル コンフィギュレーション パラメーターの [ソルバー] ドロップダウンからノンスティッフな固定ステップ ソルバーをいずれか 1 つまたはすべて選択することで、モデルをシミュレーションします。

Simulink.sdi.Run オブジェクトは固定ステップ ソルバーのシミュレーション用に作成され、ベース ワークスペースの fsRuns struct に格納されます。

固定ステップ シミュレーションと可変ステップ ベースラインの比較

シミュレーション データ インスペクターを使用して、モデルのログ信号を可視化および検証します。また、比較機能を使用して、複数のシミュレーションまたは実行間で信号を比較することもできます。シミュレーション データ インスペクターの使用の詳細については、シミュレーション データ インスペクターを参照してください。シミュレーション データ インスペクターを使用してシミュレーションを比較する方法の詳細については、シミュレーション データの比較を参照してください。

信号を比較するには、シミュレーション データ インスペクター[比較] タブに切り替えます。[ベースライン] 実行を可変ステップのシミュレーションに設定し、[比較対象] ドロップダウンから固定ステップのシミュレーションを選択します。要件に基づいて [グローバルな絶対許容誤差][グローバルな相対許容誤差]、および [グローバルな時間の許容誤差] を設定します。

この例では、[グローバルな絶対許容誤差]0.065 に設定され、[グローバルな相対許容誤差] は 0.005 に設定され、[グローバルな時間の許容誤差]0.1 に設定されています。

比較プロットには最も低次数の固定ステップ ソルバーのシミュレーション結果が表示されます。ベースラインの可変ステップ シミュレーションと比較して、すべての信号が許容誤差内に収まっています。選択したソルバーについて、いくつかの信号の比較結果が下にプロットされています。

すべての信号が許容誤差内に収まっている最も低い次数は ode4 であると判定されます。固定ステップ ソルバー ode1 の結果について考えます。比較結果によって、11 個の信号が許容誤差の範囲外にあることが示されています。信号比較パラメーターが次のように設定されている場合に 11 個の信号が許容誤差の範囲外にあることがわかります。

  • 信号の絶対許容誤差:0.065

  • 信号の相対許容誤差:0.065

  • 信号の時間の許容誤差:0.1