Оцените линейные модели серого ящика

Определение линейной структуры модели серого ящика

Можно оценить линейные модели серого ящика дискретного времени и непрерывного времени для произвольного полного дифференциала или разностных уравнений с помощью одно выхода и нескольких - выходные данные временного интервала или данные timeseries (только для выхода).

Необходимо представлять системные уравнения в форме пространства состояний. Модели в пространстве состояний используют переменные состояния x (t), чтобы описать систему в виде набора дифференциальных уравнений первого порядка, а не одним или несколькими дифференциальными уравнениями n-го порядка.

Первый шаг в моделировании серого ящика должен записать функцию, которая возвращает матрицы пространства состояний в зависимости от пользовательских параметров и информации о модели.

Используйте следующий формат, чтобы реализовать линейную модель серого ящика в файле:

[A,B,C,D] = myfunc(par1,par2,...,parN,Ts,aux1,aux2,...)

где выходными аргументами являются матрицы пространства состояний и myfunc имя файла. par1,par2,...,parN параметры N модели. Каждая запись может быть скаляром, вектором или матрицей. Ts шаг расчета. aux1,aux2,... дополнительные входные параметры что myfunc используется для расчета матриц пространства состояний в дополнение к параметрам и шагу расчета. aux содержит вспомогательные переменные в вашей системе. Вы используете вспомогательные переменные, чтобы варьироваться системные параметры во входе к функции и постараться не редактировать файл.

Можно записать содержимое myfunc параметрировать или непрерывное время, или модель в пространстве состояний дискретного времени или обоих. Когда вы создаете линейную модель серого ящика использование myfunc, можно задать природу выходных аргументов myfunc. Модель в пространстве состояний непрерывного времени имеет форму:

В непрерывное время описание пространства состояний имеет следующую форму:

x˙(t)=Ax(t)+Bu(t)+Ke(t)y(t)=Cx(t)+Du(t)+e(t)x(0)=x0

где, A, B, C и D являются матрицами, которые параметрируются параметрами par1,par2,...,parN. Шумовой матричный K и вектор начального состояния, x0, не параметрируются myfunc. В некоторых приложениях можно хотеть описать K и x0 как количества, которые параметрируются выбранными параметрами, так же, как A, B, C и матрицы D. Чтобы обработать такие случаи, можно записать файл ОДУ, myfunc, возвратить K и x0 как дополнительные выходные аргументы:

[A,B,C,D,K,x0] = myfunc(par1,par2,...,parN,Ts,aux1,aux2,...)
K и x0 таким образом обработаны таким же образом как A, B, C и матрицы D. Они - все функции параметров par1,par2,...,parN. Чтобы сконфигурировать обработку начальных состояний, x0 и компонента воздействия, K, во время оценки, использует greyestOptions опция установлена.

В дискретное время описание пространства состояний имеет подобную форму:

x(k+1)=Ax(k)+Bu(k)+Ke(t)y(k)=Cx(k)+Du(k)+e(t)x(0)=x0

где, A, B, C и D являются теперь матрицами дискретного времени, которые параметрируются параметрами par1,par2,...,parN. K и x0 непосредственно не параметрируются, но могут быть оценены при необходимости путем конфигурирования соответствующих опций оценки.

После создания функции или файла MEX с вашей структурой модели, необходимо задать idgrey объект модели.

Создание функции, чтобы представлять модель серого ящика

В этом примере показано, как представлять структуру следующей модели непрерывного времени:

$$\begin{array}{l}
\dot x(t) = \left[ {\begin{array}{*{20}{c}}
0&1\\
0&{{\theta _1}}
\end{array}} \right]x(t) + \left[ {\begin{array}{*{20}{c}}
0\\
{{\theta _2}}
\end{array}} \right]u(t)\\
y(t) = \left[ {\begin{array}{*{20}{c}}
1&0\\
0&1
\end{array}} \right]x(t) + e(t)\\
x(0) = \left[ {\begin{array}{*{20}{c}}
{{\theta _3}}\\
0
\end{array}} \right]
\end{array}$$

Это уравнение представляет электрический двигатель, где${y_1}(t) = {x_1}(t)$ угловое положение вала двигателя и${y_2}(t) = {x_2}(t)$ является скоростью вращения. Параметр$- {\theta _1}$ является обратной постоянной времени двигателя и$- {{\theta _2}}/{{\theta _1}}$ является статическим усилением от входа до скорости вращения.

Двигатель в покое в t = 0, но его угловое положение${\theta _3}$ неизвестно. Предположим, что аппроксимированная номинальная стоимость неизвестных параметров${\theta _1} = - 1$,${\theta _2} = 0.25$ и${\theta _3} = 0$. Для получения дополнительной информации об этом примере, смотрите раздел по моделям в пространстве состояний в System Identification: Теория для Пользователя, Второго Выпуска, Lennart Ljung, PTR Prentice Hall, 1999.

Структура модели в пространстве состояний непрерывного времени задана следующим уравнением:

$$\begin{array}{l}
\dot x(t) = Fx(t) + Gu(t) + \tilde Kw(t)\\
y(t) = Hx(t) + Du(t) + w(t)\\
x(0) = x0
\end{array}$$

Если вы хотите оценить, что та же модель с помощью структурированного представления пространства состояний, видит Оценку Структурированные Модели в пространстве состояний Непрерывного времени.

Подготовить эту модель к оценке:

  • Создайте следующий файл, чтобы представлять структуру модели в этом примере:

function [A,B,C,D,K,x0] = myfunc(par,T)
A = [0 1; 0 par(1)]; 
B = [0;par(2)];
C = eye(2);
D = zeros(2,1);
K = zeros(2,2);
x0 = [par(3);0];

Сохраните файл, таким образом, что это находится на пути поиска файлов MATLAB®.

  • Используйте следующий синтаксис, чтобы задать idgrey объект модели на основе myfunc файл:

par = [-1; 0.25; 0];
aux = {};
T = 0;
m = idgrey('myfunc',par,'c',aux,T);

где par представляет вектор из всех пользовательских параметров и содержит их номинальные (начальные) значения. В этом примере все параметры со скалярным знаком сгруппированы в par вектор. Параметры со скалярным знаком, возможно, также были обработаны как независимые входные параметры к функции ОДУ myfuncC указывает, что базовая параметризация находится в непрерывное время. aux представляет дополнительные аргументы. Как myfunc не имеет никаких дополнительных аргументов, используют aux = {}T задает шаг расчета; T = 0 указывает на модель непрерывного времени.

Загрузите данные об оценке.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata'));
data = iddata(y,u,0.1);

Используйте greyest оценить значения параметров серого ящика:

m_est = greyest(data,m);

где data данные об оценке и m инициализация оценки idgrey модель. m_est предполагаемый idgrey модель.

Смотрите также

|

Похожие темы