Using Simulink | ![]() ![]() |
Solverページ
Solver ページは、Simulation メニューから Parameters を最初に選択したとき、あるいは Solver タブを選択したときに表示されます。
シミュレーション時間
新しい値を Start time と Stop time のフィールドに入力することによって、シミュレーションの開始時間と終了時間を変更することができます。デフォルトの開始時間は0.0秒で、デフォルトの終了時間は10.0秒です。
シミュレーション時間と実際のクロック時間は同じではありません。たとえば、10秒間のシミュレーションの実行には通常10秒はかかりません。シミュレーションの実行に必要な時間は、モデルの複雑さ、ソルバのステップサイズ、コンピュータのクロック速度など多くの要素によって異なります。
ソルバ
Simulinkモデルのシミュレーションには、連立常微分方程式(ODE)の数値積分が含まれます。Simulinkは、そのような方程式のシミュレーションに対していくつかのソルバを提供します。ダイナミックシステムの挙動が多様であることから、ソルバの中には、特定の問題を解くために他のソルバより効率的なものがあります。正確かつ高速の結果を得るためには、ソルバを選択し、パラメータを設定する際に注意が必要です。
可変ステップソルバと固定ステップソルバを選択することができます。可変ステップソルバ は、シミュレーション実行中にそのステップサイズを自動的に変更することができます。可変ステップソルバには、エラー制御とゼロクロッシング検出が用意されています。固定ステップソルバ は、シミュレーション実行中に同じステップサイズを使用します。固定ステップソルバには、エラー制御とゼロクロッシング検出機能はありません。ソルバの詳細については Using MATLAB を参照してください。
デフォルトのソルバ ユーザがソルバを選択しないと、Simulinkがモデルの状態に応じてソルバを選択します。
ode45
を使用します。ode45
は、すぐれた汎用ソルバです。ただし、システムがスティッフであることが分かっており、ode45
では適切な結果が得られない場合には、ode15s
を試してみてください。スティッフという言葉の定義については、後のページの注意、可変ステップソルバ を参照してください。discrete
と呼ばれる可変ステップソルバを使用し、ode45
を使用していないことを示すメッセージを表示します。Simulinkは discrete
と呼ばれる固定ステップソルバも提供します。つぎのモデルでは、2つの discrete
ソルバの違いが示されます。0.5および0.75のサンプル時間では、モデルの基本サンプル時間 は0.25秒です。可変ステップと固定ステップの discrete
ソルバの違いは、それぞれが生成する時間ベクトルにあります。
固定ステップ discrete
ソルバは、つぎの時間ベクトルを生成します。
[0.0 0.25 0.5 0.75 1.0 1.25 ...]
可変ステップ discrete
ソルバは、つぎの時間ベクトルを生成します。
[0.0 0.5 0.75 1.0 1.5 2.0 2.25 ...]
固定ステップ discrete
ソルバのステップサイズは、基本サンプル時間です。可変ステップ discrete
ソルバは、可能な最大ステップを使います。
可変ステップソルバ 可変ステップソルバとして、ode45
, ode23
, ode113
, ode15s
, ode23s
および discrete
を選択することができます。デフォルトは、状態をもつシステムの場合は ode45
、状態をもたないシステムの場合は discrete
です。
ode45
は、Dormand-Princeの陽的Runge-Kutta(4,5)公式に基づきます。これは単段階 ソルバです。すなわち、y(t
n
)
の計算では直前の時間点 y(t
n-1
)
における解のみを必要とします。一般に、ode45
は、ほとんどの問題に対して
"最初の試み" として利用すべき最良のソルバです。ode23
もまた、BogackiとShampineの陽的Runge-Kutta(2,3)に基づいています。大まかな許容値で中間のスティッフ性がある場合、ode45
よりも効率的な可能性があります。ode23
は単段階ソルバです。ode113
は、可変次数のAdams-Bashforth-Moulton
PECEソルバです。厳密な許容値においては ode45
よりも効率的な可能性があります。ode113
は多段階ソルバ です。すなわち、現在の解を計算するためには、通常いくつかの過去における解を必要とします。ode15s
は、数値微分公式(NDF)に基づく可変次数ソルバです。これらは、後退微分公式(BDF)(Gear法としても知られている)と関連していますが、より効率的です。ode113
と同様、ode15s
は多段階ソルバです。問題がスティッフな場合、あるいは ode45
がうまくいかない、または効率が悪い場合には、ode15s
を試してみてください。ode23s
は、2次の修正Rosenbrock公式に基づいています。これは単段階ソルバなので、大まかな許容値において ode15s
より効率的な可能性があります。ode15s
では効果的でないある種のスティッフな問題を解くことができます。ode23t
は、"フリー" 補間を利用して台形法を実行します。問題が適度にスティッフで数値的減衰のない解を必要とする場合にこのソルバを利用してみてください。ode23tb
は、第一段階で台形法ステップを用い、第二段階で2次の後退差分公式を利用する陰的Runge-Kutta法、TR-BDF2を実行します。構造により、同じイタレーション行列が両段階での実行に利用されます。ode23s
のように、このソルバは大まかな許容値において ode15s
より効率的な可能性があります。discrete
((可変ステップ)は、モデルが連続状態をもたないことを検出したときに、Simulinkが選択するソルバです。固定ステップソルバ 固定ステップソルバとして、ode5
, ode4
, ode3
, ode2
, ode1
, および discrete
から選択することができます。
ode5
は、Dormand-Prince公式である ode45
の固定ステップバージョンです。ode4
は、4次Runge-Kutta公式であるRK4です。ode3
は、Bogacki-Shampine公式である ode23
の固定ステップバージョンです。ode2
は、改良Euler公式としても知られるHeunの方法です。ode1
は、Eulerの方法です。discrete
(固定ステップ)は、積分を行わない固定ステップソルバです。状態をもたず、ゼロクロッシング検出とエラー制御が重要でないモデルに適しています。シミュレーションで満足できない結果を生じている恐れがある場合には、シミュレーションの性能と精度の改良 を参照してください。
ソルバオプション
デフォルトのソルバパラメータは、ほとんどの問題に対して正確かつ効率的な結果を提供します。しかし、場合によっては、パラメータを調整すると性能が改良されることがあります(パラメータの調整については、シミュレーションの性能と精度の改良)を参照してください)。選択したソルバは、Solver パネルのパラメータ値を変更することによって調整することができます。
ステップサイズ
可変ステップソルバの場合、最大ステップサイズと推奨初期ステップサイズのパラメータを設定することができます。デフォルトでは、これらのパラメータは値 auto
によって示されるように自動的に決定されます。
固定ステップソルバの場合、固定ステップサイズを設定することができます。デフォルトは auto
です。
最大ステップサイズ Max step size パラメータは、ソルバが使うことのできる最大の時間ステップを制御します。デフォルト値は、開始時間と終了時間から決定されます。
一般に、デフォルトの最大ステップサイズで十分です。ソルバの重要な挙動を捉えていない恐れがある場合には、パラメータを変更してソルバがあまり大きなステップを使わないようにすることができます。シミュレーション時間が非常に長い場合、デフォルトのステップサイズは、ソルバが解を見つけるには大きすぎる場合があります。また、モデルに周期的、または周期的に近い挙動が含まれ、その周期がわかっている場合には、最大ステップサイズをその周期の何分の1か(1/4など)に設定してください。
一般に、出力点が多い場合は、最大ステップサイズではなくリファインファクタを変更します。詳細については、リファインファクタ を参照してください。
初期ステップサイズ デフォルトで、ソルバは開始時間における状態の導関数を検討することによって初期ステップサイズを選択します。最初のステップサイズが大きすぎると、ソルバは重要な挙動を飛び越す可能性があります。初期ステップサイズパラメータは、推奨する 最初のステップサイズです。ソルバはこのステップサイズを試みますが、エラー基準が満たされなければそれを小さくします。
誤差許容値
ソルバは、標準のローカル誤差制御法を用いて時間ステップごとに誤差をモニタします。各時間ステップの間、ソルバはステップの終端で状態値を計算し、ローカル誤差、すなわちこれらの状態値の予測誤差も判別します。それから、ローカル誤差を、相対的許容値(rtol )と絶対的許容値(atol )の関数である許容誤差 と比較します。誤差が任意 の状態に対する許容誤差より大きい場合には、ソルバはステップサイズを小さくして再び試みます。
i
番目の状態に対する誤差ei は、次式を満足する必要があります。
下の図は、状態のプロットと、許容誤差が相対的許容値と絶対的許容値で決められる領域を示しています。
auto
(デフォルト)を指定すると、Simulinkは各状態に対する絶対許容誤差の初期値を1e-6に設定します。シミュレーションが進行すると、Simulinkは各状態に対する絶対許容誤差を、状態に対する相対許容誤差と状態とが最もかけ離れると仮定される最大値に再設定されます。従って、状態が0から1に変化し reltol
が1e-3の場合、シミュレーションの終わりに abstol
も1e-3に設定されます。また、状態が0から1000に変化するとき、abstol
は1に設定されます。
計算された設定値が適切でない場合、適切な設定値を指定することができます。絶対的許容値に対する適切な値を決定するには、シミュレーションを複数回実行する必要があります。状態の大きさが幅広く変化する場合、状態に応じて異なる絶対的許容値を指定する方が適切かもしれません。これは、Integratorブロックのダイアログボックスで行うことができます。
ode15sに対する最大次数
ode15s
ソルバは、1次から5次までのNDF公式に基づいています。次数が高い公式ほど精度は高くなりますが、安定性は低くなります。モデルがスティッフで、かつ安定性を必要とする場合は、最大次数を2に設定します(NDF公式がA-安定である最高次数)。ode15s
ソルバを選択すると、ダイアログボックスにこのパラメータが表示されます。
もう1つの方法として、固定ステップの低次(およびA-安定の)ソルバである ode23s
ソルバを使用することもできます。
Multitaskingオプション
固定ステップソルバを選択する場合、Simulation Parameters ダイアログボックスの Solver ページは、Mode オプションリストを表示します。リストを使って、つぎのシミュレーションモードのうちの1つを選択することができます。
MultiTasking. このモードは、ブロック間で不正なサンプルレート遷移、つまり、異なるサンプルレートにおいて機能するブロック間の直接接続を検出した場合にエラーを発生します。リアルタイムマルチタスクシステムでは、タスク間の不正なサンプルレートの遷移により、他のタスクによって要求されたときに、タスクの出力が利用不可能になります。そのような遷移をチェックすることにより、マルチタスクモードは、実世界のマルチタスクシステムの有効なモデル作成に役立ちます。モデルの部分がコンカレントタスクを表わします。
rate transition ブロックを使って、モデルから不正なレート遷移を除去します。Simulinkは、2つのブロック、Unit Delay (Unit Delay を参照)とZero-Order Hold (Zero-Order Hold を参照)を提供します。不正な遅いブロックから速いブロックへの遷移を除去するには、遅いブロックの出力端子と速いブロックの入力端子の間で遅いレートで実行するUnit Delayブロックを挿入してください。不正な速いブロックから遅いブロックへの遷移を除去するには、速いブロックの出力端子と遅いブロックの入力端子の間で遅いレートで実行するZero-Order Holdブロックを挿入してください。詳細は、Real-Time Workshop Users Guide の第7章、"複数のサンプルレートをもつモデル" を参照してください。
SingleTasking. このモードは、ブロック間のサンプルレートの遷移をチェックしません。このモードは、シングルタスクシステムのモデリング時に役立ちます。そのようなシステムにおいて、タスクの同期化は問題ではありません
Auto. このオプションによって、Simulinkは、すべてのブロックが同じサンプルレートで操作される場合はシングルタスクモードを、モデルが異なるレートで操作されるブロックを含む場合はマルチタスクモードを利用します。
出力オプション
ダイアログボックスの Output options 領域では、シミュレーションが生成する出力量を制御することができます。つぎの3つのポップアップオプションから選択することができます。
リファインファクタ シミュレーション出力が粗すぎる場合、Refine output の選択により、追加の出力点を提供します。このパラメータは、時間ステップ間に整数数の出力点を追加します。たとえば、リファインファクタが2の場合、各時間ステップでの出力と共に中間点での出力を提供します。デフォルトのリファインファクタは1です。
出力をスムーズにするには、ステップサイズを小さくする代わりにリファインファクタを変更する方がはるかに高速です。リファインファクタを変更すると、ソルバはそれらの点で連続的な拡張式を評価することによって追加点を生成します。リファインファクタを変更してもソルバが使用するステップは変わりません。
リファインファクタは可変ステップソルバに適用され、ode45
を使用するときに最も有効です。ode45
ソルバは、大きなステップを取ることができます。シミュレーション出力をグラフ化する場合、このソルバからの出力が十分滑らかでないことがあります。この場合には、リファインファクタを大きくしてシミュレーションを再度実行します。値を4にするとよりかなり滑らかな結果が得られるはずです。
追加出力の生成 Produce additional output を選択すると、ソルバが出力を生成する追加的な時間を直接指定することができます。このオプションを選択すると、Simulinkは、Solver ページに Ouput Times を表示します。このフィールドに追加する時間または追加する時間のベクトルを評価するMATLAB表現を入力します。追加出力は、追加する時間における連続拡張式を使って作成されます。リファインファクタと異なり、このオプションは、シミュレーションのステップサイズを変更するので、時間ステップは、追加出力に対してユーザが指定した時間と一致します。
指定出力のみの生成 Produce specified output only を選択すると、指定した出力時間でのみ シミュレーション出力を提供します。このオプションは、シミュレーションのステップサイズを変更するので、時間ステップは出力の生成のためにユーザが指定した時間と一致します。この選択は、異なるシミュレーションと比較するときに、シミュレーションが同時に出力を生成するようにする場合に有効です。
出力オプションの比較 サンプルシミュレーションは、つぎの時間で出力を生成します。
0, 2.5, 5, 8.5, 10
Refine output を選択し、リファインファクタ2を指定すると、つぎの時間で出力を生成します。
0, 1.25, 2.5, 3.75, 5, 6.75, 8.5, 9.25, 10
Produce additional output オプションを選択し、[0:10]
を指定すると、つぎの時間で出力を生成します。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
そして、可変ステップソルバが選択したステップ時間に応じて、追加された時間において、生成する場合もあります。
Produce Specified Output Only オプションを選択し、[0:10]
を指定すると、つぎの時間で出力を生成します。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
![]() | Simulation Parametersダイアログボックス | Workspace I/Oページ | ![]() |