Main Content

操作点探索の最適化設定の変更

Simulink® モデルを平衡化するときに、最適化アルゴリズムを設定して、操作点探索の精度を制御することができます。通常は、操作点探索レポートに基づいて最適化設定を調整します。このレポートは検索のたびに自動的に作成されます。

定常状態マネージャーまたはモデル線形化器を使用して対話的に、あるいは関数 findop を使用してプログラムにより操作点を計算するときに、最適化の設定を変更できます。

仕様に基づく操作点の計算の詳細については、仕様からの定常状態の操作点の計算を参照してください。

プログラムによる最適化設定の変更

関数 findop を使用して操作点計算のための最適化設定を構成するには、findopOptions オブジェクトを作成します。たとえば、オプション オブジェクトを作成して非線形最小二乗の最適化手法を指定します。

options = findopOptions('OptimizerType','lsqnonlin');

最適化手法ごとにオプションを指定するには、オプション オブジェクトの OptimizationOptions パラメーターを、関数 optimset (Optimization Toolbox) を使用して作成された、対応する構造体に設定します。

最適化にカスタムのコスト関数と制約関数を指定するには、operspec オブジェクトを作成して CustomObjFcnCustomConstrFcn、および CustomMappingFcn プロパティを指定します。詳細については、カスタムの制約と目的関数を使用した操作点の計算を参照してください。

対話形式による最適化設定の変更

同じ平衡化のオプションのダイアログ ボックス インターフェイスを使用して、定常状態マネージャーまたはモデル線形化器を使用して操作点を対話的に計算するための最適化の設定を構成できます。

  • 定常状態マネージャー[仕様] タブで、[平衡化オプション] をクリック。次に、[平衡化オプション] ダイアログ ボックスで、最適化の設定を指定します。

  • モデル線形化器で、[線形解析] タブの [操作点] ドロップダウン リストで、[モデルの平衡化] をクリックします。次に、[モデルの平衡化] ダイアログ ボックスの [オプション] タブで、最適化の設定を指定します。

操作点探索のオプションを設定するには、次のようにします。

  1. [最適化手法] セクションで、最適化手法およびアルゴリズムを選択します。詳細については、最適化手法の指定を参照してください。

  2. [最適化オプション] セクションで、選択した最適化手法のオプションを指定します。これらのオプションには、検索アルゴリズムの許容誤差および停止条件が含まれています。詳細については、最適化オプションの構成を参照してください。

  3. [カスタム最適化関数] セクションで、最適化にカスタムのコスト関数や制約関数の指定もできます。詳細については、カスタム最適化関数の定義を参照してください。

最適化手法の指定

操作点に部分的な情報または仕様を与えると、最適化手法で操作点値の探索を行います。次のいずれかの手法から、最適化手法を選択できます。

  • 勾配降下

  • シンプレックス探索

  • 非線形最小二乗

最適化ソルバーの選択の詳細については、アルゴリズムの選択 (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)を参照してください。

最適化オプションの構成

次の表のオプションを使用して、操作点探索を構成できます。

オプション動作

最大変化量 — 有限差分の勾配計算での状態値または入力値の最大絶対変化量を指定します。

  • [最大変化量] を大きくすると、最適化中により大きいステップを取ることができます。これは最適化での局所的最小値の収束または維持に役立ちます。

  • [最大変化量] を小さくすると、最適化ルーチンで取ることができるステップ サイズが制限されます。これは、システムがスムーズである場合に、より正確な解を見つけるのに役立ちます。

[最大変化量][最小変化量] を適切に調整することによって、最適化で不連続の領域を除外させることができます。

このオプションは [シンプレックス探索] 最適化手法ではサポートされていません。

最小変化量 — 有限差分の勾配計算での状態値または入力値の最小絶対変化量を指定します。

  • [最小変化量] を大きくすると、最適化では一定サイズを超えるステップを取ることが強制されます。これは最適化での局所的最小値の収束または維持に役立ちます。

  • [最小変化量] を小さくすると、最適化ではより小さいステップを取ることができます。これは、システムがスムーズである場合に、より正確な解を見つけるのに役立ちます。

[最小変化量][最大変化量] を適切に調整することによって、最適化で不連続の領域を除外させることができます。

このオプションは [シンプレックス探索] 最適化手法ではサポートされていません。

関数の許容誤差 — 関数値の終了許容誤差を指定します。

連続する反復時の関数値が [関数の許容誤差] より小さくなると、最適化は終了します。

  • [関数の許容誤差] を小さくすると、連続するコスト関数値が互いに接近してきたときに最適化で解を求めます。これにより、解の精度が高くなる可能性がありますが、収束に時間がかかります。

  • [関数の許容誤差] を大きくすると、連続するコスト関数値が離れてきたときに最適化を終了します。これにより、解の精度が低くなる可能性がありますが、収束は速くなります。

このオプションは [関数の許容誤差を排除した勾配降下] 最適化手法ではサポートされていません。

制約の許容誤差 — 等式の制約関数の終了許容誤差を指定します。

連続する反復計算による等式の制約関数値が [制約の許容誤差] より小さい場合、最適化は終了します。

  • [制約の許容誤差] を小さくすると、連続する制約関数値が互いに接近してきたときに最適化で解を求めます。これにより、解の精度が高くなる可能性がありますが、収束に時間がかかります。

  • [制約の許容誤差] を大きくすると、連続する制約関数値が離れてきたときに最適化を終了します。これにより、解の精度が低くなる可能性がありますが、収束は速くなります。

このオプションは以下ではサポートされていません。

  • [シンプレックス探索] 最適化手法

  • [非線形最小二乗] 最適化手法

  • [関数の許容誤差を投影した非線形最小二乗] 最適化手法

最大の関数実行 — 最適化が終了するまでのコスト関数評価の最大実行回数を指定します。

  • [最大の関数実行] を大きくすると、解の探索時の計算時間が長くなります。

  • [最大の関数実行] を小さくすると、解の探索時の計算時間が短くなります。

ヒント

反復ごとに評価関数の複数の評価が存在することがあります。その結果、[最大反復回数] フィールドを変更すると、計算時間に影響を与えることもあります。

最大反復回数 — 最適化を終了するまでの最大反復回数を指定します。

  • [最大反復回数] を大きくすると、最適化によりさらに多くの時間を解の計算に費やすことができます。

  • [最大反復回数] を小さくすると、最適化での計算の終了が早くなります。

ヒント

各反復に複数の評価関数評価が含まれる場合があります。その結果、[最大の関数実行] フィールドを変更すると、計算時間に影響を与えることもあります。

パラメーターの許容誤差 — 状態値および入力値の終了許容誤差を指定します。

状態値および入力値の最大変化量が、連続する反復の間に [パラメーターの許容誤差] より小さい量だけ変化する場合、最適化は終了します。

  • [パラメーターの許容誤差] を小さくすると、後続の反復における状態値および入力値が互いに接近している解を最適化で求めます。これにより、解の精度が高くなる可能性がありますが、収束に時間がかかります。

  • [パラメーターの許容誤差] を大きくすると、後続の状態値および入力値が離れてきたときに最適化を終了します。これにより、解の精度が低くなる可能性がありますが、収束は速くなります。

解析ヤコビアンを有効化 — 平衡化中にヤコビアンの計算に使用する手法を指定します。

反復ごとに、操作点探索アルゴリズムは現在の操作点について線形化することでシステムのヤコビアンを計算します。

  • [解析的なヤコビアンを有効化] オプションを選択すると、操作点探索は現在の操作点についてモデルを線形化することによって、反復ごとにヤコビアンを計算します。可能であれば、ブロックごとに事前にプログラムされた解析的な線形化を使用し、不可能であれば、各ブロックに数値的に摂動を与えます。

  • このオプションをオフにすると、操作点探索はモデル全体に数値的に摂動を与えることでヤコビアンを計算します。

このオプションは以下ではサポートされていません。

  • [シンプレックス探索] 最適化手法

  • [関数の許容誤差を投影した勾配降下] 最適化手法

  • [関数の許容誤差を投影した非線形最小二乗] 最適化手法

  • Model ブロックを使用して他のモデルへの参照を含めるモデル

  • Trimming モードの Simscape Multibody モデル

結果を表示 — 表示する最適化の進捗状況を指定します。

  • 反復 — 平衡化の進捗状況ビューアー ウィンドウに、各反復の結果を表示します。表示結果には、各反復での最大ブロック エラーとこのエラーに関与するブロックが含まれています。

  • オン — MATLAB® コマンド ウィンドウに、最適化の最終結果を表示します。

  • オフ — 結果を表示しません。

カスタム最適化関数の定義

一部のシステムやアプリケーションでは、最適化探索のパラメーター定義においてさらに柔軟性が必要となります。その場合、カスタムの制約または追加の目的関数、あるいはその両方を定義して指定できるようにします。

そのために、カスタム関数を現在の作業フォルダー内または MATLAB パス上で定義できます。その後、対応するカスタム関数のフィールドに関数名を指定します。

  • 目的関数 — 定常状態の操作点の計算に、標準の状態、入力、および出力仕様に加えてカスタムの目的関数が適用されます。

  • 制約関数 — 定常状態の操作点の計算に、標準の状態、入力、および出力仕様に加えてカスタムの制約が適用されます。

  • マッピング関数 —複雑なモデルの平衡化のためにカスタムの制約関数と目的関数を指定する場合、不要な状態、入力、および出力を削除することにより、カスタム関数を簡略化できます。そのためには、カスタムのマッピング関数を作成します。

カスタムの目的関数または制約関数が解析勾配を返す場合、[解析ヤコビアンを有効化] オプションを選択しなければなりません。

詳細については、カスタムの制約と目的関数を使用した操作点の計算を参照してください。

参考

関数

アプリ

関連するトピック