exponenta event banner

Оценить линейные модели «серый ящик»

Задание линейной структуры модели «серый ящик»

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

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

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

Используйте следующий формат для реализации линейной модели «серого ящика» в файле:

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

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

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

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

(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: Theory for the User, Second Edition, by Lennart Ljung, Prentice Hall PTR, 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 вектор. Скалярные параметры также могли бы рассматриваться как независимые входные аргументы для функции ОДУ myfunc. 'c' указывает, что базовая параметризация выполняется непрерывно. 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 модель.

См. также

|

Связанные темы