Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ブロックレベルの変数の初期化

モデルのシミュレーションに向けたブロック変数の初期化

シミュレーションの開始時点 (t = 0) で、ソルバーは初期条件を計算してシミュレーションの開始点を決定します (初期条件の計算を参照)。解を見つけることは、すなわちすべてのシステム変数の初期値を見つけることです。"ブロックレベルでの変数の初期化" により、初期条件の計算に影響を与えることができます。具体的には、対応するブロック ダイアログ ボックスの [変数] タブで、特定の変数の優先順位とターゲットの初期値を指定します。

ブロックレベルでの変数初期化で指定する値は、各変数の実際の値ではなく、シミュレーション開始時 (t = 0) におけるターゲット値です。求解の結果によっては、これらのターゲットのいくつかが満たされることも、満たされないこともあります。

ソルバーは次の要件を満たす解を見つけようとします。

  • モデルのすべての方程式を厳密に満たす。

  • 優先順位の高いすべてのターゲットを厳密に満たす。

  • 優先順位の低いターゲットをできるだけ近い値に近似する (その結果、優先順位の低いターゲットのうち、一部は厳密に一致し、残りは近似される)。

優先順位の高いターゲットをすべて厳密に満たす解が見つけられない場合、ソルバーは警告を送出し、求解プロセスの第 2 段階に入ります。ここでは、優先順位の高いターゲットと低いターゲットの両方をそれぞれできるだけ近い値に近似して、解を見つけようとします。

Solver ブロック ダイアログ ボックスの [定常状態からシミュレーションを開始] チェック ボックスをオンにしている場合、ソルバーは定常状態 (システム変数が時間とともに変化しない) を見つけようとします。定常状態の解決が成功した場合、検出される状態は何らかの (許容誤差範囲内の) 定常状態ですが、所定の初期条件で想定されている状態であるとは限りません。言い換えると、シミュレーションを定常状態から開始した場合、シミュレーションの開始時点で、優先順位の高い変数のターゲットでも満たされなくなっている可能性があります。ただし、モデルに定常状態が複数ある場合、指定する変数のターゲットにより、ソルバーが選択する定常状態の解に影響を与えることできます。

ブロック変数を初期化した後、モデルのシミュレーションを開始する前に変数ビューアーを開いて、どの変数のターゲットが満たされているか確認することができます。変数ビューアーは、求解の結果として得られた変数の実際の初期値と、変数のターゲット値、優先順位、変数に関するその他の情報を表示します。詳細は、変数ビューアーを参照してください。

変数初期化の優先順位

ブロックレベルの変数初期化では、変数の開始値、単位および初期化の優先順位を指定します。優先順位には、次のいずれかを設定できます。

  • None — 変数の優先順位がない場合、初期化アルゴリズムはこの変数の開始値から開始しますが、方程式系を解く際に開始値を記憶しません。優先順位のない変数については、ソルバーは特定の初期値を満たそうとはしません。

  • Low — 変数の優先順位が低い場合、開始値がアルゴリズムのターゲット値となり、アルゴリズムは値をターゲット値の近くに収めようとします。ソルバーは解を見つけるときに、この変数のターゲット値をできるだけ近い値に近似しようとします。優先順位の高い変数の求解の結果により、優先順位の低いターゲットのうち、一部は厳密に一致することもあり、残りのターゲットは近似されます。

  • High — 変数の優先順位が高い場合、開始値がアルゴリズムのターゲット値となり、アルゴリズムはターゲット値に厳密に一致させようとします。ソルバーは、優先順位の高いすべての変数における実際の初期値が厳密にそれぞれのターゲット値を満たす解を見つけようとします。

各ブロック変数の既定の初期化優先順位、開始値および単位は、基となる Simscape™ コンポーネント ファイルから取得されます。モデルのそれぞれのブロックで、ブロックのダイアログ ボックスの [変数] タブを開き、変数名の隣にある [オーバーライド] チェック ボックスを選択して、その変数に独自の値を指定することで、既定の設定をオーバーライドできます。

システム変数に指定する優先順位の高いターゲットの個数が多すぎる場合、モデルが指定過剰になることがあります。この場合、優先順位の高いすべてのターゲットを厳密に満たす解をソルバーで見つけられないことがあり、解をまったく求められないこともあります。変数ビューアーを使用して変数の優先順位とターゲットを変更することにより、指定過剰を処理する方法の例は、マス-バネ-ダンパー システムの変数の初期化を参照してください。

ブロック ダイアログ ボックスで変数の優先順位とターゲットを指定する方法についての詳細は、ブロック変数の優先順位と初期ターゲットの設定を参照してください。

推奨ワークフロー

  1. 対応するブロック ダイアログ ボックスの [変数] タブで、初期化の変数ターゲットを指定します。そのためには、モデルの必要に応じて、ブロック変数の優先順位、ターゲット値および単位を設定します。

  2. 変数ビューアーを開いて更新し、どの初期ターゲットが満たされているかを確認します。変数ビューアーはモデルのシミュレーションは実行しませんが、シミュレーションを 0 秒実行して初期化するので、モデルは実行可能な状態でなければなりません。

  3. 初期化に失敗した場合あるいは結果に満足しない場合は、ブロック変数のターゲット値と優先順位を変更してやり直し、その後 変数ビューアーを更新します。

  4. 初期化に満足した場合は、シミュレーションを実行して結果を表示します。

関連するトピック