メインコンテンツ

greyest

線形グレーボックス モデルの ODE パラメーターの推定

説明

sys = greyest(data,init_sys) は、時間領域または周波数領域のデータ data と初期モデル init_sys を使用して線形グレーボックス モデル sys を推定します。

datainit_sys の入力と出力の次元は一致していなければなりません。sysinit_sys と同じ構造をもつ同定された idgrey モデルです。

sys = greyest(data,init_sys,opt) は、オプション (初期状態の取り扱いや正則化のオプションなど) を指定する greyestOptions オプション セット opt を組み込みます。

[sys,x0] = greyest(___) は、推定時に計算された初期状態の値を返します。この構文では、前述の任意の入力引数の組み合わせで使用できます。

すべて折りたたむ

線形グレーボックス フレームワークを使用して DC モーターのパラメーターを推定します。

測定データを読み込みます。

load('dcmotordata');
data = iddata(y, u, 0.1, 'Name', 'DC-motor');
data.InputName = 'Voltage';
data.InputUnit = 'V';
data.OutputName = {'Angular position', 'Angular velocity'};
data.OutputUnit = {'rad', 'rad/s'};
data.Tstart = 0;
data.TimeUnit = 's';

data は、出力である角度位置と角速度の測定データを含む iddata オブジェクトです。また、入力である駆動電圧も含まれています。

システム ダイナミクスを表すグレーボックス モデルを作成します。

DC モーターについて、角度位置 (rad) と角速度 (rad/s) を出力として選択し、駆動電圧 (V) を入力として選択します。次の形式の線形状態空間構造を設定します。

x˙(t)=[010-1τ]x(t)+[0Gτ]u(t)

y(t)=[1001]x(t).

τ はモーターの時定数 (秒)、G は入力から角速度への静的ゲイン (rad/(V*s)) です。

G = 0.25; 
tau = 1; 

init_sys = idgrey('motorDynamics',tau,'cd',G,0);

状態空間形式の支配方程式は MATLAB® ファイル motorDynamics.m で表されています。このファイルの内容を確認するには、MATLAB コマンド プロンプトで「edit motorDynamics.m」と入力します。

GmotorDynamics.m にオプションの引数として提供されている既知の量です。

τ は自由推定パラメーターです。

init_sysmotor.m に関連付けられている idgrey モデルです。

τ を推定します。

sys = greyest(data,init_sys);

sys は、τ の推定値を含む idgrey モデルです。

sys に関連付けられている推定パラメーター値を取得するには、getpvec(sys) を使用します。

結果を解析します。

opt = compareOptions('InitialCondition','zero');
compare(data,sys,Inf,opt)

Figure contains 2 axes objects. Axes object 1 with ylabel Angular position contains 2 objects of type line. These objects represent Validation data (Angular position), sys: 98.35%. Axes object 2 with ylabel Angular velocity contains 2 objects of type line. These objects represent Validation data (Angular velocity), sys: 84.42%.

sys は、角度位置は 98.35% 適合し、角速度は 84.42% 適合します。

正則化定数を使用するときのパラメーターに関する事前情報を組み込んで DC モーターのパラメーターを推定します。

モデルは静的ゲイン G と時定数 τ でパラメーター化されています。事前情報から、G は約 4、τ は約 1 であることがわかっています。また、G よりも τ の値の方が信頼でき、その推定が初期推定から離れないようにします。

推定データを読み込みます。

load regularizationExampleData.mat motorData

データには、与えられた入力電圧におけるモーターの角度位置と角速度の測定値が含まれています。

DC モーターのダイナミクスの idgrey モデルを作成します。グレーボックス モデルの構造を表す関数 DCMotorODE を使用します。

mi = idgrey(@DCMotorODE,{'G', 4; 'Tau', 1},'cd',{}, 0);
mi = setpar(mi, 'label', 'default');

DCMotorODE 関数を確認する場合は、次のように入力します。

type DCMotorODE.m
function [A,B,C,D] = DCMotorODE(G,Tau,Ts)
%DCMOTORODE ODE file representing the dynamics of a DC motor parameterized
%by gain G and time constant Tau.
%
%   [A,B,C,D,K,X0] = DCMOTORODE(G,Tau,Ts) returns the state space matrices
%   of the DC-motor with time-constant Tau and static gain G. The sample
%   time is Ts.
%
%   This file returns continuous-time representation if input argument Ts
%   is zero. If Ts>0, a discrete-time representation is returned.
%
% See also IDGREY, GREYEST.

%   Copyright 2013 The MathWorks, Inc.

A = [0 1;0 -1/Tau];
B = [0; G/Tau];
C = eye(2);
D = [0;0];
if Ts>0 % Sample the model with sample time Ts
   s = expm([[A B]*Ts; zeros(1,3)]);
   A = s(1:2,1:2);
   B = s(1:2,3);
end

正則化オプション Lambda を指定します。

opt = greyestOptions;
opt.Regularization.Lambda = 100;

正則化オプション R を指定します。

opt.Regularization.R = [1, 1000];

G よりも τ の値の方が信頼できるため、2 番目のパラメーターの方が重みが大きくなるように指定します。

パラメーターの初期値を正則化オプション θ* として指定します。

opt.Regularization.Nominal = 'model';

正則化されたグレーボックス モデルを推定します。

sys = greyest(motorData, mi, opt);

入力引数

すべて折りたたむ

等間隔にサンプリングされた推定データ。以降のセクションで説明しているように、timetable、コンマ区切りの行列ペア、あるいは時間領域または周波数領域のデータ オブジェクトとして指定します。

data の入力と出力の次元は init_sys と同じです。

既定では、モデルのサンプル時間は推定データのサンプル時間に設定されます。

timetable

一定間隔の時間ベクトルを使用する timetable として data を指定します。data には入力チャネルと出力チャネルを表す変数が含まれます。

コンマ区切りの行列ペア

入力と出力の時間領域の信号値を含む数値行列のコンマ区切りのペアとして data を指定します。この data の指定は離散時間システムにのみ使用します。

データ オブジェクト

iddata オブジェクト、idfrd オブジェクト、または frd オブジェクトとしてデータを指定します。

  • 時間領域の推定の場合、data は入力と出力の信号値を含む時間領域の iddata オブジェクトでなければなりません。

  • 周波数領域の推定の場合、data は次のいずれかになります。

    • 記録された周波数応答データ (frd (Control System Toolbox) または idfrd)

    • プロパティが次のように指定された iddata オブジェクト:

      • InputData — 入力信号のフーリエ変換

      • OutputData — 出力信号のフーリエ変換

      • Domain'Frequency'

推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。

初期モデル。idgrey オブジェクトとして指定します。init_sys は、以前に同定されたモデルか、idgrey コマンドを使用して直接構築されたモデルにすることができます。

init_sys の入力と出力の数は data と同じでなければなりません。

推定オプション。greyestOptions オプション セットとして指定します。opt で指定するオプションには以下が含まれます。

  • 初期状態の取り扱い

  • 正則化

  • 推定に使用する数値探索手法

出力引数

すべて折りたたむ

推定されるグレーボックス モデル。idgrey モデルとして返されます。このモデルは、指定した初期システムと推定オプションを使用して作成されます。

推定結果と使用されたオプションに関する情報は、モデルの Report プロパティに格納されます。Report には次のフィールドがあります。

Report のフィールド説明
Status

モデルのステータスの概要。モデルが構築によって作成されたものか推定によって取得されたものかを示します。

Method

使用された推定コマンド

InitialState

推定時の初期状態の取り扱い。次のいずれかとして返されます。

  • 'model' — 初期状態を idgrey モデルで使用される ODE ファイルでパラメーター化。

  • 'zero' — 初期状態をゼロに設定。

  • 'estimate' — 初期状態を独立した推定パラメーターとして処理。

  • 'backcast' — 初期条件を最適な最小二乗近似を使用して推定。

  • 長さ Nx の double のベクトル。ここで、Nx は状態の数です。複数実験データの場合は Ne 列の行列。ここで、Ne は実験の数です。

このフィールドは、推定オプション セットで InitialState オプションが 'auto' に設定されている場合に、初期状態がどのように扱われたかを確認するのに特に便利です。

DisturbanceModel

推定時の外乱成分 (K) の取り扱い。次の値のいずれかとして返されます。

  • 'model'K の値を idgrey モデルで使用される ODE ファイルでパラメーター化。

  • 'fixed'idgrey モデルの K プロパティの値を元の値に固定。

  • 'none'K をゼロに固定。

  • 'estimate'K を独立した推定パラメーターとして処理。

このフィールドは、推定オプション セットで DisturbanceModel オプションが 'auto' に設定されている場合に、外乱成分がどのように扱われたかを確認するのに特に便利です。

Fit

推定の定量的評価。構造体として返されます。これらの品質メトリクスの詳細については、Loss Function and Model Quality Metricsを参照してください。構造体には、以下のフィールドがあります。

  • FitPercent — 正規化平方根平均二乗誤差 (NRMSE)。モデルの応答が推定データにどの程度適合するかをパーセンテージで示す尺度で、fitpercent = 100(1-NRMSE) として表されます。

  • LossFcn — 推定完了時の損失関数の値

  • MSE — 平均二乗誤差 (MSE)。モデルの応答が推定データにどの程度適合するかを示す尺度です。

  • FPE — モデルの最終予測誤差

  • AIC — 生の赤池情報量基準 (AIC)。モデルの品質を示す尺度です。

  • AICc — 小さいサンプルサイズの補正された AIC

  • nAIC — 正規化された AIC

  • BIC — ベイズ情報量基準 (BIC)

Parameters

モデル パラメーターの推定値

OptionsUsed

推定に使用されたオプション セット。これは、カスタム オプションを構成していない場合は既定のオプションのセットになります。詳細については、greyestOptions を参照してください。

RandState

推定開始時の乱数ストリームの状態。推定時にランダム化が使用されなかった場合は空 [] になります。詳細については、rng を参照してください。

DataUsed

推定に使用されたデータの属性。次のフィールドをもつ構造体として返されます。

  • Name — データ セットの名前

  • Type — データ型

  • Length — データ サンプルの数

  • Ts — サンプル時間

  • InterSample — 入力サンプル間動作。次の値のいずれかとして返されます。

    • 'zoh' — ゼロ次ホールドにより、サンプル間で区分的に一定な入力信号を維持。

    • 'foh' — 1 次ホールドにより、サンプル間で区分的に線形な入力信号を維持。

    • 'bl' — 帯域幅を制限した動作により、ナイキスト周波数を超える連続時間入力信号のパワーがゼロになるように指定。

  • InputOffset — 推定時に時間領域の入力データから削除されたオフセット。非線形モデルの場合は [] になります。

  • OutputOffset — 推定時に時間領域の出力データから削除されたオフセット。非線形モデルの場合は [] になります。

Termination

予測誤差の最小化に使用された反復探索の終了条件。次のフィールドを含む構造体として返されます。

  • WhyStop — 数値探索を終了する理由

  • Iterations — 推定アルゴリズムで実行された探索の反復回数

  • FirstOrderOptimality — 探索アルゴリズムが終了したときの勾配探索ベクトルの ノルム

  • FcnCount — 目的関数が呼び出された回数

  • UpdateNorm — 最後の反復における勾配探索ベクトルのノルム。探索法が 'lsqnonlin' または 'fmincon' の場合は省略されます。

  • LastImprovement — 最後の反復における基準改善。パーセンテージで表されます。探索法が 'lsqnonlin' または 'fmincon' の場合は省略されます。

  • Algorithm'lsqnonlin' または 'fmincon' の探索法で使用されるアルゴリズム。他の探索法が使用されている場合は省略されます。

数値探索の最適化を必要としない推定法の場合、Termination フィールドは省略されます。

Report の使用の詳細については、Estimation Reportを参照してください。

推定時に計算された初期状態。各実験に対応する列ベクトルを含む行列として返されます。

この配列は、モデルの Report プロパティの Parameters フィールドにも格納されます。

バージョン履歴

R2012a で導入

すべて展開する