Main Content

ソルバーのリセット

ソルバーのリセットによって計算コストが発生するため、ソルバー プロファイラーはソルバーに自身のパラメーターをリセットさせるイベントを記録します。リセットの総数に加え、リセット イベントのタイプ別に内訳を確認することもできます。

メモ

ソルバーのリセット イベントには、複数の原因が考えられます。その結果、[統計] ペインの [ソルバーのリセットの総数] イベントの数は、各タイプのソルバーのリセットの和より小さい場合があります。

ゼロクロッシング

信号の不連続点で、いくつかのゼロクロッシング イベントが発生します。ゼロクロッシング イベントセクションからの跳ねるボールのモデル例を考えます。

ソルバー プロファイラーは、モデルの Switch ブロックからのゼロクロッシングによって発生した 67 個のソルバーのリセットを記録します。ステップサイズおよび [ソルバーのリセット] の強調表示を、Second-Order Integrator ブロックの出力 x (ボールの地面からの高さ) と比較します。ボールが地面から跳ねるときにソルバーのリセットが発生することを観察します。

離散信号

ソルバーのリセットは、このモデル例でみられるような、連続状態をもつブロックを駆動する離散信号がモデルにある場合にも発生します。

離散 Sine Wave ブロックは、離散サンプル時間 ts = 2 の 1 rad/s の正弦波を出力します。

ソルバー プロファイラー レポートは、連続ブロックを駆動する離散信号に起因して、4 つのソルバーのリセットが発生していることを示します。これらのリセットは、Sine Wave ブロックを実行するたびに発生します。

ZOH 信号

このタイプのソルバーのリセットは、試行またはマイナー タイム ステップ中にブロック出力が実行されない場合に発生し、積分またはメジャー タイム ステップ中のみ更新されます。その結果、ブロック出力は、あるメジャー タイム ステップから別のメジャー タイム ステップへ不連続に変化します。結果としてソルバーはリセットされます。マイナー ステップに固定のサンプル時間を参照してください。

このモデル例は、正弦波基準信号を追跡する簡単なプラントおよびコントローラーを示します。この信号のソースは、サンプル時間が固定マイナー ステップとなるように指定される Sine Wave ブロックです。

80 個の [ZOH Signal] ソルバーのリセットがシミュレーションにあるプロファイル セッションの結果から観察します。

メモ

ログの [連続状態] を選択するか、SaveStates パラメーターを有効にする場合、固定マイナー ステップ信号によって駆動される連続ブロックの微分は NaN です。

これは、駆動する マイナー ステップに固定 ブロックがその値を各メジャー タイム ステップでのみ更新するためです。したがって、連続ブロックに駆動される信号は不連続であり、状態は微分不可能です。

プロットは、モデル例の Sine Wave ブロックおよび Integrator ブロックの出力を示します。

ヒント

ZOH 信号に起因して発生するソルバーのリセットは、離散信号によって発生するソルバーのリセット イベントと比較して深刻であり、シミュレーションの速度が大幅に低下する可能性があります。これは、ZOH 信号のリセット イベントがソルバーの各メジャー ステップで発生するためです。これらのリセットを回避するために、必要に応じてシミュレーションを再設定します。

ブロック信号

ブロックの実行中に特定の条件が満たされる場合に、ソルバーをリセットするようにブロックを構成することもできます。Memory ブロックによる跳ねるボールの速度の取得の例にある、跳ねるボールのモデル sldemo_bounce を考えます。

130 個のソルバーのリセットがブロックによってトリガーされていることをプロファイリング結果から観察します。ソルバーのリセット イベントには、複数の原因が考えられます。この場合、ゼロクロッシングおよびブロックの変更によりソルバーのリセット イベントが発生します。

[Block Change] ソルバーのリセット イベントを発生させる設定の 1 つは、[x が飽和に達したときに dx/dt を再初期化] パラメーターです。この設定は、跳ねるボールのダイナミクスを適切にシミュレーションするために必要です。

初期リセット

シミュレーションを実行するとき、ソルバーは最初に自身のパラメーターをリセットする必要があります。このイベントは、ソルバー プロファイラー レポートでは [Initial Reset] イベントとして表示されます。これは、シミュレーションの開始時に一度発生します。

内部

Simulink® エンジンの内部で発生するリセット イベントにはいくつかあります。これらのリセット イベントは、エンジンが正確なシミュレーションのためにエンジン自体を正確に構成するために必要です。