Main Content

シミュレーションのスナップショットを使用した定常状態の操作点探索の初期化

モデルが定常状態の操作点の近傍に到達するおおよその時間を把握している場合は、シミュレーションを使用して、数値最適化に初期値として使用する状態値を取得できます。

定常状態マネージャーを使用した操作点探索の初期化

定常状態マネージャーを使用して操作点を計算するときに、シミュレーションのスナップショットで操作点探索を初期化できます。

  1. Simulink® モデルを開きます。

    sys = 'watertank';
    open_system(sys)

  2. 定常状態マネージャーを開くには、Simulink モデル ウィンドウの [アプリ] ギャラリーで [定常状態マネージャー] をクリックします。

  3. 定常状態マネージャー[定常状態] タブで、[スナップショット] をクリックします。

  4. [スナップショットの操作点を作成] ダイアログ ボックスで、[シミュレーションのスナップショット時間] フィールドに「10」と入力して、このシミュレーション時間の操作点を抽出します。

  5. 指定した時間のシステムのスナップショットを取得するには、Play button をクリックします。

    スナップショット op1[データ ブラウザー][操作点] セクションに表示され、そこには指定時間におけるすべてのシステム状態値が記載されています。

  6. [定常状態] タブで [仕様の平衡化] をクリックします。

  7. 操作点の状態をシミュレーションのスナップショットの値で初期化するには、[仕様] タブで [初期化元] をクリックして [op1] を選択します。

    [spec1] ドキュメントで、表示されている状態値が更新され、インポートされた値が反映されます。

  8. t = 10 での状態を初期値として使用して最適化された操作点を検出するには、[仕様] タブで、[平衡化] Play button をクリックします。モデルが平衡化されて操作点探索レポートが生成されます。

  9. [report1] ドキュメントで、[実際の dx] の値はゼロかゼロに近くなります。これは、操作点が定常状態にあることを示します。

モデル線形化器を使用した操作点探索の初期化

モデル線形化器を使用して操作点を計算するときに、シミュレーションのスナップショットで操作点探索を初期化できます。

  1. Simulink モデルを開きます。

    sys = ('watertank');
    open_system(sys)

  2. Simulink モデル ウィンドウの [アプリ] ギャラリーで、[モデル線形化器] をクリックします。

  3. モデル線形化器[操作点] ドロップダウン リストで、[シミュレーションのスナップショットを撮る] をクリックします。

  4. [線形化するスナップショット時間を入力] ダイアログ ボックスで、[シミュレーションのスナップショット時間] フィールドに 10 と入力して、このシミュレーション時間の操作点を抽出します。

  5. 指定した時間でのシステムのスナップショットを取得するには、[スナップショットを撮る] をクリックします。

    スナップショット op_snapshot1[データ ブラウザー][線形解析ワークスペース] セクションに表示され、そこには指定時間におけるすべてのシステム状態値が記載されています。

  6. [線形解析] タブの [操作点] ドロップダウン リストで、[モデルの平衡化] をクリックします。

  7. 操作点の状態をシミュレーションのスナップショットの値で初期化するには、[モデルの平衡化] ダイアログ ボックスで [インポート] をクリックします。

  8. [初期値および仕様のインポート] ダイアログ ボックスで op_snapshot1 を選択し、[インポート] をクリックします。

    [モデルの平衡化] ダイアログ ボックスで、表示されている状態値が更新され、インポートされた値が反映されます。

  9. t = 10 での状態を初期値として使用して最適化された操作点を検出するには、[平衡化の開始] をクリックします。

  10. 結果の操作点値が仕様を満たしているかどうかを評価するには、[データ ブラウザー][線形解析ワークスペース] セクションで、op_trim1 をダブルクリックします。

    [実際の dx] の値はゼロかゼロに近くなります。これは、操作点が定常状態にあることを示します。

コマンド ラインでの操作点探索の初期化

関数 findop を使用して操作点を計算するときに、シミュレーションのスナップショットで操作点探索を初期化できます。

Simulink モデルを開きます。

sys = 'watertank';
load_system(sys)

定常状態に達するまでモデルをシミュレートし、操作点のスナップショットを抽出します。この例では 10 時間単位を使用します。

opsim = findop(sys,10);

操作点の仕様オブジェクトを作成します。既定では、すべてのモデル状態が定常状態に指定されています。

opspec = operspec(sys);

スナップショット データを使用して操作点探索の初期値を設定します。

opspec = initopspec(opspec,opsim);

これらの仕様を満たす定常状態の操作点を検出します。

[op,opreport] = findop(sys,opspec);
 Operating point search report:
---------------------------------
opreport = 
 Operating point search report for the Model watertank.
 (Time-Varying Components Evaluated at time t=10)

Operating point specifications were successfully met.
States: 
----------
    Min       x       Max    dxMin        dx         dxMax
    ____    ______    ___    _____    ___________    _____

(1.) watertank/PID Controller/Integrator/Continuous/Integrator
    -Inf    1.2649    Inf      0                0      0  
(2.) watertank/Water-Tank System/H
       0        10    Inf      0      -1.0991e-14      0  

Inputs: None 
----------

Outputs: None 
----------

各状態の時間微分 dx は、実質的には 0 です。状態微分のこの値は、操作点が定常状態にあることを示します。

参考

関連するトピック