Упрощение моделей объекта управления более высокого порядка

Этот пример показов, как использовать Robust Control Toolbox™ для аппроксимации моделей объекта управления высокого порядка более простыми моделями низкого порядка.

Введение

Robust Control Toolbox предлагает инструменты для борьбы с большими моделями, такими как:

  • High-Order Plants: Подробные первые принципы или конечноэлементные модели вашего объекта, как правило, имеют высокий порядок. Часто мы хотим упростить такие модели в целях симуляции или системы управления.

  • Высокоупорядоченные контроллеры: робастные методы управления часто дают высокоупорядоченные контроллеры. Это часто встречается, например, когда мы используем функции взвешивания частот для формирования отклика без разомкнутого контура. Мы захотим упростить такие контроллеры для реализации.

Для целей управления обычно достаточно иметь точную модель рядом с частотой среза. Для симуляции достаточно захватить существенную динамику в частотной области значений сигналов возбуждения. Это означает, что часто можно найти аппроксимации младшим порядком моделей высокого порядка. Robust Control Toolbox предлагает множество алгоритмов снижения сложности модели, которые наилучшим образом соответствуют вашим требованиям и характеристикам модели.

Процесс снижения сложности модели

Задача снижения сложности модели обычно включает следующие шаги:

  • Анализируйте важные характеристики модели из ее временных или частотных характеристик, полученных из step или bode, для примера.

  • Определите соответствующий уменьшенный порядок путем построения графиков сингулярных значений Ханкеля исходной модели (hankelsv), чтобы определить, какие режимы (состояния) могут быть сброшены, не жертвуя ключевыми характеристиками.

  • Выберите алгоритм сокращения. В тулбоксе доступны следующие методы сокращения balancmr, bstmr, schurmr, hankelmr, и ncfmr

Мы можем легко получить доступ к этим алгоритмам через интерфейс верхнего уровня reduce. Методы используют различные меры «близости» между исходной и уменьшенной моделями. Выбор зависит от приложения. Давайте попробуем каждого из них расследовать их относительные достоинства.

  • Валидация: Мы подтверждаем наши результаты, сравнивая динамику уменьшенной модели с исходной. Нам, возможно, потребуется настроить наши параметры сокращения (выбор порядка модели, алгоритма, границ ошибок и т. Д.), Если результаты не удовлетворительны.

Пример: Модель для движения твёрдого тела создания

В этом примере мы применяем методы сокращения к модели создания Университетской больницы Лос-Анджелеса. Модель взята из Работа Note 2002-2, «A collection of benchmark examples for снижение сложности модели of linear time invariant dynamical systems», Y. Chahlaoui and P.V. Dooren. Он имеет восемь этажей, каждый с тремя степенями свободы - два перемещения и один поворот. Мы представляем отношение вход-выход для любого из этих перемещений с помощью модели 48 состояний, где каждое состояние представляет перемещение или его скорость изменения (скорость).

Загрузим данные для примера:

load buildingData.mat

Изучение динамики объекта

Начнем с анализа частотной характеристики модели:

bode(G)
grid on

Figure contains 2 axes. Axes 1 contains an object of type line. This object represents G. Axes 2 contains an object of type line. This object represents G.

Фигура 1: Bode-схема для анализа частотной характеристики

Как наблюдалось из частотной характеристики модели, существенная динамика системы лежит в частотной области значений от 3 до 50 радиан/секунду. Величина падает как в очень низком, так и в высокочастотном областях значений. Наша цель - найти модель низкого порядка, которая сохраняет информационное содержимое в этой частотной области значений до приемлемого уровня точности.

Вычисление сингулярных значений Ханкеля

Чтобы понять, какие состояния модели могут быть безопасно сброшены, посмотрите на сингулярные значения Ханкеля модели:

hsv_add = hankelsv(G);
bar(hsv_add)
title('Hankel Singular Values of the Model (G)');
xlabel('Number of States')
ylabel('Singular Values (\sigma_i)')
line([10.5 10.5],[0 1.5e-3],'Color','r','linestyle','--','linewidth',1)
text(6,1.6e-3,'10 dominant states.')

Figure contains an axes. The axes with title Hankel Singular Values of the Model (G) contains 3 objects of type bar, line, text.

Фигура 2: Сингулярные значения Ханкеля модели (G).

График сингулярного значения Ханкеля предполагает, что в этой системе существует четыре доминирующих режима. Однако вклад остальных режимов все еще значителен. Мы проведем линию в 10 состояниях и отбросим оставшиеся таковые, чтобы найти уменьшенную модель 10-го порядка Gr который лучше всего аппроксимирует исходную систему G.

Выполнение снижения сложности модели с использованием аддитивной ошибки

Функция reduce является шлюзом для всех стандартных программ снижения сложности модели, доступных в тулбоксе. Мы будем использовать опцию по умолчанию с усечением баланса квадратного корня ('balancmr') reduce как первый шаг. Этот метод использует «аддитивную» ошибку, связанную с уменьшением, что означает, что он пытается сохранить абсолютную ошибку приближения равномерно маленькой по частотам.

% Compute 10th-order reduced model (reduce uses balancmr method by default)
[Gr_add,info_add] = reduce(G,10);

% Now compare the original model G to the reduced model Gr_add
bode(G,'b',Gr_add,'r')
grid on
title('Comparing Original (G) to the Reduced model (Gr\_add)')
legend('G - 48-state original ','Gr\_add - 10-state reduced','location','northeast')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent G - 48-state original, Gr\\_add - 10-state reduced. Axes 2 contains 2 objects of type line. These objects represent G - 48-state original, Gr\\_add - 10-state reduced.

Фигура. 3. Сравнение оригинала (G) с уменьшенной моделью (Gr_add)

Выполнение снижения сложности модели с использованием мультипликативной границы ошибки

Как видно из диаграммы Боде на фигуре 3, уменьшенная модель довольно хорошо фиксирует резонансы ниже 30 рад/с, но совпадение в области низких частот (< 2 рад/с) плохое. Кроме того, уменьшенная модель не полностью захватывает динамику в области значений 30-50 рад/с. Возможным объяснением больших ошибок на низких частотах является относительно низкий коэффициент усиления модели на этих частотах. Следовательно, даже большие ошибки на этих частотах мало способствуют общей ошибке .

Чтобы обойти эту задачу, мы можем попробовать метод мультипликативной ошибки, такой как bstmr. Этот алгоритм подчеркивает относительные погрешности а не абсолютные таковые. Поскольку относительные сравнения не работают, когда усиления близки к нулю, нам нужно добавить минимальный порог усиления, например, путем добавления исходного усиления D к нашей оригинальной модели. Если предположить, что мы не обеспокоены ошибками при добавках ниже -100 дБ, мы можем задать сквозное соединение на 1e-5.

GG = G;
GG.D = 1e-5;

Теперь рассмотрим сингулярные значения для мультипликативных (относительных) ошибок (с помощью опции 'mult' hankelsv)

hsv_mult = hankelsv(GG,'mult');
bar(hsv_mult)
title('Multiplicative-Error Singular Values of the Model (G)');
xlabel('Number of States')
ylabel('Singular Values (\sigma_i)')

Figure contains an axes. The axes with title Multiplicative-Error Singular Values of the Model (G) contains an object of type bar.

Фигура 4. Мультипликативно-ошибочные сингулярные значения модели (G)

Модель 26-го порядка выглядит многообещающей, но ради сравнения с предыдущим результатом придерживаемся сокращения 10-го порядка.

% Use bstmr algorithm option for model reduction 
[Gr_mult,info_mult] = reduce(GG,10,'algorithm','bst');

%now compare the original model G to the reduced model Gr_mult
bode(G,Gr_add,Gr_mult,{1e-2,1e4}), grid on
title('Comparing Original (G) to the Reduced models (Gr\_add and Gr\_mult)')
legend('G - 48-state original ','Gr\_add (balancmr)','Gr\_mult (bstmr)','location','northeast')

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent G - 48-state original, Gr\\_add (balancmr), Gr\\_mult (bstmr). Axes 2 contains 3 objects of type line. These objects represent G - 48-state original, Gr\\_add (balancmr), Gr\\_mult (bstmr).

Фигура 5: Сравнение оригинала (G) с уменьшенными моделями (Gr_add и Gr_mult)

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

step(G,Gr_add,Gr_mult,15) %step response until 15 seconds
legend('G: 48-state original ','Gr\_add: 10-state (balancmr)','Gr\_mult: 10-state (bstmr)')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent G: 48-state original, Gr\\_add: 10-state (balancmr), Gr\\_mult: 10-state (bstmr).

Фигура 6: Переходные характеристики трех моделей

Проверка результатов

Все алгоритмы обеспечивают ограничения на ошибку приближения. Для аддитивно-ошибочных методов, таких как balancmrошибка приближения измеряется пиковым (максимальным) усилением модели ошибки G-Greduced на всех частотах. Этот пиковый коэффициент усиления также известен как норма H-бесконечности модели ошибки. Граница ошибки для алгоритмов аддитивной ошибки выглядит следующим образом:

G-Gradd2i=1148σi:=ErrorBound

где сумма по всем отброшенным сингулярным значениям Ханкеля G (записи с 11 по 48 из hsv_add). Мы можем проверить, что эта граница удовлетворена путем сравнения двух сторон этого неравенства:

norm(G-Gr_add,inf) % actual error
ans = 6.0251e-04
% theoretical bound (stored in the "ErrorBound" field of the "INFO" 
% struct returned by |reduce|)
info_add.ErrorBound
ans = 0.0047

Для методов мультипликативной ошибки, таких как bstmrошибка приближения измеряется пиковым усилением на частоте модели относительной погрешности G\(G-Greduced). Привязка к ошибке выглядит следующим образом

G-1(G-Grmult)i=1148(1+2σi(σi+1+σi2))-1:=ErrorBound

где сумма превышает отброшенные мультипликативные сингулярные значения Ханкеля, вычисленные hankelsv(G,'mult'). Снова мы можем сравнить эти границы для уменьшенной модели Gr_mult

norm(GG\(GG-Gr_mult),inf) % actual error
ans = 0.5949
% Theoretical bound 
info_mult.ErrorBound
ans = 546.1730

Постройте график относительной погрешности для подтверждения

bodemag(GG\(GG-Gr_mult),{1e-2,1e3})
grid on
text(0.1,-50,'Peak Gain: -4.6 dB (59%) at 17.2 rad/s')
title('Relative error between original model (G) and reduced model (Gr\_mult)')

Figure contains an axes. The axes contains 2 objects of type line, text. This object represents untitled1.

Фигура 7: Относительная погрешность между исходной моделью (G) и уменьшенной моделью (Gr_mult)

Из относительной погрешности выше, существует до 59% относительной погрешности в 17,2 рад/с, что может быть больше, чем мы готовы принять.

Выбор самого низкого порядка, совместимого с желаемым уровнем точности

Улучшить точность Gr_multНам нужно будет увеличить порядок. Чтобы достичь относительной точности не менее 5%, какой самый низкий порядок мы можем получить? Функция reduce может автоматически выбрать модель самого низкого порядка, совместимую с нашим желаемым уровнем точности.

% Specify a maximum of 5% approximation error
[Gred,info] = reduce(GG,'ErrorType','mult','MaxError',0.05);
size(Gred)
State-space model with 1 outputs, 1 inputs, and 35 states.

Алгоритм выбрал модель с уменьшенным состоянием 34 Gred. Сравните фактическую ошибку с теоретической границей:

norm(GG\(GG-Gred),inf)
ans = 0.0068
info.ErrorBound
ans = 0.0342

Посмотрите на относительную погрешность величины как на функцию частоты. Более высокая точность достигнута за счет большего порядка модели (от 10 до 34). Обратите внимание, что фактическая максимальная ошибка составляет 0,6%, намного меньше, чем 5% целевого значения. Это расхождение является результатом функции bstmr использование для выбора порядка привязки к ошибке, а не фактической ошибки.

bodemag(GG\(GG-Gred),{1,1e3})
grid on
text(5,-75,'Peak Gain: -43.3 dB (0.6%) at 73.8 rad/s')
title('Relative error between original model (G) and reduced model (Gred)')

Figure contains an axes. The axes contains 2 objects of type line, text. This object represents untitled1.

Фигура 8: Относительная погрешность между исходной моделью (G) и уменьшенной моделью (Gred)

Сравните ответы Bode

bode(G,Gred,{1e-2,1e4})
grid on
legend('G - 48-state original','Gred - 34-state reduced')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent G - 48-state original, Gred - 34-state reduced. Axes 2 contains 2 objects of type line. These objects represent G - 48-state original, Gred - 34-state reduced.

Фигура 9: Блок-схема исходной модели 48 состояний и модели с пониженным состоянием 34

Наконец, сравните переходные характеристики оригинальной и уменьшенной моделей. Они практически неразличимы.

step(G,'b',Gred,'r--',15) %step response until 15 seconds
legend('G: 48-state original ','Gred: 34-state (bstmr)')
text(5,-4e-4,'Maximum relative error <0.05')

Figure contains an axes. The axes contains 3 objects of type line, text. These objects represent G: 48-state original, Gred: 34-state (bstmr).

Фигура 10: График переходного процесса исходной модели 48 состояний и модели пониженного состояния 34 состояний

См. также

|

Похожие темы