Этот пример показов, как использовать 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
Фигура 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.')
Фигура 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')
Фигура. 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)')
Фигура 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')
Фигура 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)')
Фигура 6: Переходные характеристики трех моделей
Все алгоритмы обеспечивают ограничения на ошибку приближения. Для аддитивно-ошибочных методов, таких как balancmr
ошибка приближения измеряется пиковым (максимальным) усилением модели ошибки G-Greduced
на всех частотах. Этот пиковый коэффициент усиления также известен как норма H-бесконечности модели ошибки. Граница ошибки для алгоритмов аддитивной ошибки выглядит следующим образом:
где сумма по всем отброшенным сингулярным значениям Ханкеля 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)
. Привязка к ошибке выглядит следующим образом
где сумма превышает отброшенные мультипликативные сингулярные значения Ханкеля, вычисленные 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)')
Фигура 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)')
Фигура 8: Относительная погрешность между исходной моделью (G) и уменьшенной моделью (Gred)
Сравните ответы Bode
bode(G,Gred,{1e-2,1e4}) grid on legend('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')
Фигура 10: График переходного процесса исходной модели 48 состояний и модели пониженного состояния 34 состояний