操作点探索の最適化設定の変更
Simulink® モデルを平衡化するときに、最適化アルゴリズムを設定して、操作点探索の精度を制御することができます。通常は、操作点探索レポートに基づいて最適化設定を調整します。このレポートは検索のたびに自動的に作成されます。
定常状態マネージャーまたはモデル線形化器を使用して対話的に、あるいは関数 findop
を使用してプログラムにより操作点を計算するときに、最適化の設定を変更できます。
仕様に基づく操作点の計算の詳細については、仕様からの定常状態の操作点の計算を参照してください。
プログラムによる最適化設定の変更
関数 findop
を使用して操作点計算のための最適化設定を構成するには、findopOptions
オブジェクトを作成します。たとえば、オプション オブジェクトを作成して非線形最小二乗の最適化手法を指定します。
options = findopOptions('OptimizerType','lsqnonlin');
最適化手法ごとにオプションを指定するには、オプション オブジェクトの OptimizationOptions
パラメーターを、関数 optimset
(Optimization Toolbox) を使用して作成された、対応する構造体に設定します。
最適化にカスタムのコスト関数と制約関数を指定するには、operspec
オブジェクトを作成して CustomObjFcn
、CustomConstrFcn
、および CustomMappingFcn
プロパティを指定します。詳細については、カスタムの制約と目的関数を使用した操作点の計算を参照してください。
対話形式による最適化設定の変更
同じ平衡化のオプションのダイアログ ボックス インターフェイスを使用して、定常状態マネージャーまたはモデル線形化器を使用して操作点を対話的に計算するための最適化の設定を構成できます。
定常状態マネージャーの [仕様] タブで、[平衡化オプション] をクリック。次に、[平衡化オプション] ダイアログ ボックスで、最適化の設定を指定します。
モデル線形化器で、[線形解析] タブの [操作点] ドロップダウン リストで、[モデルの平衡化] をクリックします。次に、[モデルの平衡化] ダイアログ ボックスの [オプション] タブで、最適化の設定を指定します。
操作点探索のオプションを設定するには、次のようにします。
[最適化手法] セクションで、最適化手法およびアルゴリズムを選択します。詳細については、最適化手法の指定を参照してください。
[最適化オプション] セクションで、選択した最適化手法のオプションを指定します。これらのオプションには、検索アルゴリズムの許容誤差および停止条件が含まれています。詳細については、最適化オプションの構成を参照してください。
[カスタム最適化関数] セクションで、最適化にカスタムのコスト関数や制約関数の指定もできます。詳細については、カスタム最適化関数の定義を参照してください。
最適化手法の指定
操作点に部分的な情報または仕様を与えると、最適化手法で操作点値の探索を行います。次のいずれかの手法から、最適化手法を選択できます。
勾配降下
シンプレックス探索
非線形最小二乗
最適化ソルバーの選択の詳細については、アルゴリズムの選択 (Optimization Toolbox)を参照してください。
勾配降下
勾配降下の最適化手法は、関数 fmincon
(Optimization Toolbox) に基づいています。勾配降下の 3 つのアルゴリズムはすべて、出力信号 (y) に関する制約および等式の制約を適用し、状態の時間微分を強制的にゼロにします (dx/dt = 0, x(k+1) = x(k))。
勾配降下
— 状態 (x)、入力 (u)、および出力 (y) の操作点値と既知の値の間の誤差を最小化します。x、u、または y に関する制約がない場合、操作点探索は x および u の初期推定と平衡値の間の偏差を最小化しようとします。関数の許容誤差を排除した勾配降下
—勾配降下
アルゴリズムと似ていますが、変数の最適化を許可しないことにより、既知の状態と入力の固定も行います。関数の許容誤差を投影した勾配降下
—勾配降下
アルゴリズムと似ていますが、目的関数および制約関数の評価ごとにモデルの初期条件の一貫性を強制的に適用し、Simscape™ モデルの平衡化の結果を改善できます。この手法には Optimization Toolbox™ ソフトウェアが必要です。
3 つのすべての勾配降下手法に対して、次のいずれかのアルゴリズムを使用できます。
有効制約法
— 有効な不等式制約をより単純な等式制約に変換し、この単純な等式制約の部分問題を解きます。このアルゴリズムが既定の設定であり、ほとんどの場合に使用できます。内点法
— 一連の近似最小化問題を解くことで最適化します。このアルゴリズムを使うと、非常に多くの状態をもつモデルではパフォーマンスが向上します。Trust-Region-Reflective 法
— 現在の点の領域内の簡単な関数でコスト関数を近似して最適化します。このアルゴリズムを使うと、非常に多くの状態をもつモデルではパフォーマンスが向上します。逐次二次計画法 (SQP)
— 一連の最適化部分問題を解くことで最適化します。各部分問題は、制約の線形化に従って目的の二次モデルを最適化します。
これらのアルゴリズムの詳細については、制約付き非線形最適化アルゴリズム (Optimization Toolbox)を参照してください。
シンプレックス探索
[シンプレックス探索]
手法は、変数の最適化を許可しないことにより、既知の状態 (x) と入力 (u) を固定します。次に、このアルゴリズムは関数 fminsearch
(Optimization Toolbox) を使用して、状態微分 (dx/dt = 0) と出力 y の誤差を最小化します。
非線形最小二乗
[非線形最小二乗]
手法は、変数の最適化を許可しないことにより、既知の状態 (x) と入力 (u) を固定します。次に、このアルゴリズムは関数 lsqnonlin
(Optimization Toolbox) を使用して、状態微分 (dx/dt = 0) と出力 y の誤差を最小化します。この最適化手法は、Simscape Multibody™ モデルのように、代数関係をもつ状態を含む操作点を計算する際にしばしば効果を発揮します。
[関数の許容誤差を投影した非線形最小二乗]
手法は、目的関数および制約関数の評価ごとにモデルの初期条件の一貫性をさらに強制的に適用し、Simscape モデルの平衡化の結果を改善できます。この手法には Optimization Toolbox ソフトウェアが必要です。
どちらの非線形最小二乗最適化手法でも、アルゴリズムの選択項目は次のとおりです。
レーベンバーグ・マルカート
— このアルゴリズムが既定の設定であり、ほとんどの場合に使用できます。このアルゴリズムの詳細については、レーベンバーグ・マルカート法 (Optimization Toolbox)を参照してください。Trust-Region-Reflective 法
— 現在の点の領域内の簡単な関数でコスト関数を近似して最適化します。このアルゴリズムを使うと、非常に多くの状態をもつモデルではパフォーマンスが向上します。このアルゴリズムの詳細については、信頼領域 Reflective 法の最小二乗アルゴリズム (Optimization Toolbox)を参照してください。
最適化オプションの構成
次の表のオプションを使用して、操作点探索を構成できます。
オプション | 動作 |
---|---|
最大変化量 — 有限差分の勾配計算での状態値または入力値の最大絶対変化量を指定します。 |
[最大変化量] と [最小変化量] を適切に調整することによって、最適化で不連続の領域を除外させることができます。 このオプションは |
最小変化量 — 有限差分の勾配計算での状態値または入力値の最小絶対変化量を指定します。 |
[最小変化量] と [最大変化量] を適切に調整することによって、最適化で不連続の領域を除外させることができます。 このオプションは |
関数の許容誤差 — 関数値の終了許容誤差を指定します。 | 連続する反復時の関数値が [関数の許容誤差] より小さくなると、最適化は終了します。
このオプションは |
制約の許容誤差 — 等式の制約関数の終了許容誤差を指定します。 | 連続する反復計算による等式の制約関数値が [制約の許容誤差] より小さい場合、最適化は終了します。
このオプションは以下ではサポートされていません。
|
最大の関数実行 — 最適化が終了するまでのコスト関数評価の最大実行回数を指定します。 |
ヒント 反復ごとに評価関数の複数の評価が存在することがあります。その結果、[最大反復回数] フィールドを変更すると、計算時間に影響を与えることもあります。 |
最大反復回数 — 最適化を終了するまでの最大反復回数を指定します。 |
ヒント 各反復に複数の評価関数評価が含まれる場合があります。その結果、[最大の関数実行] フィールドを変更すると、計算時間に影響を与えることもあります。 |
パラメーターの許容誤差 — 状態値および入力値の終了許容誤差を指定します。 | 状態値および入力値の最大変化量が、連続する反復の間に [パラメーターの許容誤差] より小さい量だけ変化する場合、最適化は終了します。
|
解析ヤコビアンを有効化 — 平衡化中にヤコビアンの計算に使用する手法を指定します。 | 反復ごとに、操作点探索アルゴリズムは現在の操作点について線形化することでシステムのヤコビアンを計算します。
このオプションは以下ではサポートされていません。
|
結果を表示 — 表示する最適化の進捗状況を指定します。 |
|
カスタム最適化関数の定義
一部のシステムやアプリケーションでは、最適化探索のパラメーター定義においてさらに柔軟性が必要となります。その場合、カスタムの制約または追加の目的関数、あるいはその両方を定義して指定できるようにします。
そのために、カスタム関数を現在の作業フォルダー内または MATLAB パス上で定義できます。その後、対応するカスタム関数のフィールドに関数名を指定します。
目的関数 — 定常状態の操作点の計算に、標準の状態、入力、および出力仕様に加えてカスタムの目的関数が適用されます。
制約関数 — 定常状態の操作点の計算に、標準の状態、入力、および出力仕様に加えてカスタムの制約が適用されます。
マッピング関数 —複雑なモデルの平衡化のためにカスタムの制約関数と目的関数を指定する場合、不要な状態、入力、および出力を削除することにより、カスタム関数を簡略化できます。そのためには、カスタムのマッピング関数を作成します。
カスタムの目的関数または制約関数が解析勾配を返す場合、[解析ヤコビアンを有効化] オプションを選択しなければなりません。
詳細については、カスタムの制約と目的関数を使用した操作点の計算を参照してください。