В этом примере показано, как идентифицировать динамическую модель черного ящика нелинейной системы 2D бака.
Для этой системы, входа напряжение [V], применился к насосу, который генерирует приток в верхний бак. Потоки воды через отверстие в нижней части верхнего бака и заполняют более низкий бак. Выход из 2D бака система является уровнем жидкости [m] более низкого бака.
Пример использует результаты измерений, который содержит 3 000 выборок ввода - вывода системы 2D бака, сгенерированной с помощью шага расчета 0,2 секунд. Загрузите набор данных и создайте iddata
объект.
load twotankdata z1f = iddata(y,u,0.2,'Name','Two-tank system');
Этот набор данных также используется в следующих примерах.
Две Системы Бака: Моделирование Файла MEX на C Непрерывной Системы SISO — Нелинейная оценка модели серого ящика, где физические уравнения, описывающие систему, приняты
Пример на Идентификации Нелинейного ARX и Моделей Хаммерстайна-Винера — Вводный пример на моделировании черного ящика с помощью нелинейного ARX и моделей Хаммерстайна-Винера.
Этот пример о моделировании черного ящика с помощью нелинейных моделей ARX с моделью ансамбля дерева регрессии. Поэтому никакое знание фактических физических законов не принято.
Модели ансамбля дерева регрессии являются непараметрическими моделями, которые структурированы как взвешенная комбинация деревьев множественной регрессии. Каждое дерево регрессии состоит из узлов решения и вершин. Узел решения представляет значение для атрибута протестированная (функция). Вершина представляет численное значение, сопоставленное решением [1]. Модели регрессии оцениваются рекурсивно путем разделения набора данных на прогрессивно меньшие компоненты. Объединение деревьев множественной регрессии улучшает прогнозирующую производительность моделей ансамбля дерева регрессии.
Прежде, чем оценить модель, предварительно обработайте данные первым разделением его в данные об оценке и валидации. Затем отфильтруйте данные, чтобы удалить высокочастотный шум.
Разделите набор данных в два подмножества равного размера. Вы оцениваете модель с помощью набора данных z1
и подтвердите модель с помощью набора данных z2
.
z1 = z1f(1:1500); z2 = z1f(1501:3000); plot(z1,z2) legend('Estimation','Validation');
Из графика вы видите, что выходные данные имеют высокочастотный шум. Примените фильтр lowpass, чтобы удалить этот шум.
z1f = idfilt(z1,3,0.066902); z2f = idfilt(z2,3,0.066902);
Удалите эффект начальных условий фильтра из данных путем обрезки точек исходных данных от каждого набора данных.
z1f = z1f(20:end); z2f = z2f(20:end);
Отобразите на графике необработанные данные об оценке и соответствующие отфильтрованные данные
plot(z1(20:end),z1f) legend('Estimation (unfiltered)','Estimation (filtered)',... 'Location','best')
Отобразите на графике необработанные данные о валидации и соответствующие отфильтрованные данные
plot(z2(20:end),z2f) legend('Validation (unfiltered)','Validation (filtered)',... 'Location','best')
Создайте объект отображения ансамбля дерева решений с настройками по умолчанию. Можно оценить нелинейные модели ARX, которые используют эту нелинейность в качестве выходной функции. Используя это отображение объект требует программного обеспечения Statistics and Machine Learning Toolbox™.
ens = idTreeEnsemble;
Оцените нелинейную модель ARX с обоими регрессорами ввода и вывода.
mdl1 = nlarx(z1f,[30 30 0],ens);
Оцените нелинейную модель ARX с входными регрессорами только.
mdl2 = nlarx(z1f,[0 150 0],ens);
Сравните выходные параметры предполагаемых моделей с измеренными данными об оценке.
compare(z1f,mdl1,mdl2)
Сравните выходные параметры предполагаемых моделей с измеренными данными о валидации.
compare(z2f,mdl1,mdl2)