最適化関数を使用し、ボード線図に合う Simulink のパラメータの最適化を行うにはど うすれば良いですか?

4 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2014 年 9 月 1 日
回答済み: MathWorks Support Team 2014 年 9 月 1 日
MATLABの最適化関数 FMINSEARCH や Optimization Toolbox の 関数 FMINCON を使用して、ボード線図にフィットするように、Simulink モデルのパラメータを最適化する方法を教えてください。
例えば一自由度バネマス系の、ばね定数 K と粘性係数 C の最適化方法を教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2014 年 9 月 1 日
最適化の目的関数として、LINMOD 関数で線形システムを取得し、BODE 関数(Control System Toolbox の関数)でシステムのボード線図を計算し、この応答と元のデータとの差の二乗和を計算する処理を記述することで、FMINSEARCH関数によるパラメータ推定が可能です。
 
サンプルファイルを下記関連ドキュメントよりダウンロードすることができます。動作を確認するには、以下の手順を行ってください。
※このサンプルを実行するには、MATLAB, Simulink, Control System Toolbox が必要です。
 
1. 以下の 3 つのファイルをダウンロードします。
 ・mdl_to_optimize.mdl(Simulink モデル)
 ・estim_param.m(目的関数)
 ・param_est_fminsearch(最適化を行うメインプログラム)
2. カレントフォルダに上記ファイルを保存後、param_est_fminsearch.m を実行します。
 
最適化を行う際のポイントは、次の通りです。
             
- 目的関数を設定する estim_paramでは、LINMOD 関数を使用して線形システムを取得し、BODE 関数で
推定したシステムのボード線図の応答を計算し、このデータと元データの誤差の二乗和を出力します。
FMINSEARCH 関数でこの誤差の二乗和が最小となるパラメータを推定しています。
- estim_param.m で ASSIGNIN 関数を使用して、関数ワークスぺースからベースワークスペースに変数を
定義しなおしています。これは、Simulink モデルはベースワークスペースの値を参照するため、このよう
な関数を実行しています。
 
なお、補足情報として、本サンプルでは、フィット用のデータを、特定のパラメータ値(C=3, K=10) より
ボード線図の応答を取得し、この応答にフィットするように最適化を行っています。
 
また、推定パラメータに上下限の制約を設けたい場合には、FMINSEARCH 関数の代わりに、Optimization
Toolbox の FMINCON 関数を使用することで可能です。
関連ドキュメントにある param_est_with_bounds_fmincon.m は、FMINCON 関数を使用したサンプルファ
イルです。param_est_fminsearch.m の代わりに実行することで動作が確認できます。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSimulink Design Optimization についてさらに検索

タグ

タグが未入力です。

製品


リリース

R2012a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!