pem

Минимизация ошибки предсказания для уточнения линейных и нелинейных моделей

Описание

пример

sys = pem(data,init_sys) обновляет параметры начальной модели, чтобы соответствовать данным оценки. Функция использует алгоритм минимизации ошибок предсказания, чтобы обновить параметры начальной модели. Используйте эту команду, чтобы уточнить параметры ранее оцененной модели.

пример

sys = pem(data,init_sys,opt) задает опции оценки с помощью набора опций.

Примеры

свернуть все

Оцените модель пространства состояний в дискретном времени с помощью метода subspace. Затем уточните его путем минимизации ошибки предсказания.

Оцените модель пространства состояний в дискретном времени, используя n4sid, который применяет метод подпространства.

load iddata7 z7;
z7a = z7(1:300);
opt = n4sidOptions('Focus','simulation');
init_sys = n4sid(z7a,4,opt);

init_sys обеспечивает 73,85% подгонки к данным оценки.

init_sys.Report.Fit.FitPercent
ans = 73.8490

Использование pem улучшить близость подгонки.

sys = pem(z7a,init_sys);

Анализ результатов.

compare(z7a,sys,init_sys);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent z7a (y1), sys: 74.54%, init\_sys: 73.85%.

sys обеспечивает 74,54% подгонки к данным оценки.

Оцените параметры нелинейной модели серого ящика, чтобы соответствовать данным о двигателе постоянного тока.

Загрузите экспериментальные данные и укажите атрибуты сигнала, такие как время запуска и модулей.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata'));
data = iddata(y, u, 0.1);
data.Tstart = 0;
data.TimeUnit = 's';

Сконфигурируйте нелинейную модель серого ящика (idnlgrey) модель.

В данном примере используйте dcmotor_m.m файл. Чтобы просмотреть этот файл, введите edit dcmotor_m.m в командной строке MATLAB ® .

file_name = 'dcmotor_m';
order = [2 1 2];
parameters = [1;0.28];
initial_states = [0;0];
Ts = 0;
init_sys = idnlgrey(file_name,order,parameters,initial_states,Ts);
init_sys.TimeUnit = 's';

setinit(init_sys,'Fixed',{false false});

init_sys является нелинейной моделью серый ящик с ее структурой, описанной dcmotor_m.m. Модель имеет один вход, два выхода и два состояния, как задано order.

setinit(init_sys,'Fixed',{false false}) задает, что начальные состояния init_sys являются параметрами свободной оценки.

Оцените параметры модели и начальные состояния.

sys = pem(data,init_sys);

sys является idnlgrey модель, которая инкапсулирует оцененные параметры и их ковариацию.

Проанализируйте результат оценки.

compare(data,sys,init_sys);

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent data (y1), sys: 98.34%, init\_sys: 79.39%. Axes 2 contains 3 objects of type line. These objects represent data (y2), sys: 84.48%, init\_sys: 49.15%.

sys обеспечивает 98,34% подгонки к данным оценки.

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

Инициализируйте коэффициенты модели процесса.

init_sys = idproc('P2UDZ');
init_sys.Kp = 10;
init_sys.Tw = 0.4;
init_sys.Zeta = 0.5;
init_sys.Td = 0.1;
init_sys.Tz = 0.01;

The Kp, Tw, Zeta, Td, и Tz коэффициенты init_sys сконфигурированы с их начальными предположениями.

Использование init_sys сконфигурировать оценку ошибки предсказания, минимизирующей модель, используя измеренные данные. Потому что init_sys является idproc моделировать, использовать procestOptions чтобы создать набор опций.

load iddata1 z1;
opt = procestOptions('Display','on','SearchMethod','lm');
sys = pem(z1,init_sys,opt);
Process Model Identification
                            
Estimation data: Time domain data z1         
Data has 1 outputs, 1 inputs and 300 samples.
Model Type:    
    {'P2DUZ'}



Algorithm: Levenberg-Marquardt search
 <br>
------------------------------------------------------------------------------------------
 <br>
                          Norm of      First-order    Improvement (%) <br> Iteration       Cost       step         optimality     Expected   Achieved    Bisections <br>------------------------------------------------------------------------------------------
     0        21.2201          -            414         3.8           -         -                                                                                                                                                                                                                                                                                                                               
     1        19.4048       1.15            323         3.8        8.55         7
     2        14.8743       2.48            814        4.41        23.3         0
     3        6.84305      0.873            451        4.43          54        11
     4        5.20355      0.977       1.49e+03        8.75          24         7
     5        1.83911      0.973            473          13        64.7         0
     6        1.67582      0.225           20.3        4.98        8.88         0
     7        1.67335      0.062           6.57      0.0829       0.147         0
     8        1.67334    0.00494         0.0555    0.000374    0.000648         0
------------------------------------------------------------------------------------------
Termination condition: Near (local) minimum, (norm(g) < tol)..
Number of iterations: 8, Number of function evaluations: 42   
                                                              
Status: Estimated using PEM                                   
Fit to estimation data: 70.63%, FPE: 1.73006                  

Исследуйте модель подгонки.

sys.Report.Fit.FitPercent
ans = 70.6330

sys обеспечивает 70,63% подгонки к измеренным данным.

Входные параметры

свернуть все

Данные оценки, который содержит измеренные входно-выходные данные, заданные как iddata или idfrd объект. Вы можете использовать данные частотного диапазона только при init_sys является линейной моделью.

Входно-выходные размерности data и init_sys должен совпадать.

Идентифицированная модель, которая конфигурирует начальную параметризацию sys, заданная как линейная, или нелинейная модель. Можно получить init_sys путем выполнения оценки с использованием измеренных данных или путем прямой конструкции.

init_sys должны иметь конечные значения параметров. Можно сконфигурировать начальные догадки, задать минимальные/максимальные границы и исправить или бесплатно для оценки любого параметра init_sys:

  • Для линейных моделей используйте Structure свойство. Для получения дополнительной информации см. «Наложение ограничений на значения параметров модели».

  • Для нелинейных моделей серого ящика используйте InitialStates и Parameters свойства. Ограничения параметра не могут быть заданы для нелинейных моделей ARX и Hammerstein-Wiener.

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

Выходные аргументы

свернуть все

Идентифицированная модель, возвращенная к тому же типу модели, что и init_sys. Модель получена путем оценки свободных параметров init_sys использование алгоритма минимизации ошибок предсказания.

Алгоритмы

PEM использует числовую оптимизацию, чтобы минимизировать функцию затрат, взвешенную норму ошибки предсказания, заданную следующим образом для скалярных выходов:

VN(G,H)=t=1Ne2(t)

где e (t) - различие между измеренным выходом и предсказанным выходом модели. Для линейной модели ошибка определяется как:

e(t)=H1(q)[y(t)G(q)u(t)]

где e (t) является вектором и функцией затратVN(G,H) является скалярным значением. Индекс N указывает, что функция стоимости является функцией от количества выборок данных и становится более точной для больших значений N. Для моделей с несколькими выходами предыдущее уравнение является более комплексным. Для получения дополнительной информации смотрите главу 7 в Система Идентификации: Theory for the User, Second Edition, Lennart Ljung, Prentice Hall PTR, 1999.

Альтернативная функциональность

Вы можете достичь тех же результатов, что и pem при помощи специальных команд оценки для различных структур модели. Для примера используйте ssest(data,init_sys) для оценки моделей пространства состояний.

Представлено до R2006a