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

5 ビュー (過去 30 日間)
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 件)

タグ

タグが未入力です。

製品


リリース

R2012a

Community Treasure Hunt

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

Start Hunting!