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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

В этом примере мы применяем методы сокращения к модели создания Университетской клиники Лос-Анджелеса. Модель взята из SLICOT работающее Примечание 2002-2, "Набор примеров сравнительного теста для снижения сложности модели линейных независимых от времени динамических систем", И. Чахлэоуи и П.В. Дуреном. Это имеет восемь этажей, каждого с тремя степенями свободы - два смещения и одно вращение. Мы представляем отношение ввода - вывода для любого из этих смещений с помощью модели с 48 состояниями, где каждое состояние представляет смещение или его скорость изменения (скорость).

Давайте загрузим данные для примера:

load buildingData.mat

Исследование динамики объекта

Давайте начнем путем анализа частотной характеристики модели:

bode(G)
grid on

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

Рисунок 1: Диаграмма Боде, чтобы анализировать частотную характеристику

Как наблюдается из частотной характеристики модели, существенные движущие силы системы лежат в частотном диапазоне 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 object. The axes object 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 objects. Axes object 1 contains 2 objects of type line. These objects represent G - 48-state original, Gr\\_add - 10-state reduced. Axes object 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 object. The axes object 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 objects. Axes object 1 contains 3 objects of type line. These objects represent G - 48-state original, Gr\\_add (balancmr), Gr\\_mult (bstmr). Axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object contains 2 objects of type line, text. This object represents untitled1.

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

Сравните Предвещать ответы

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

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent G - 48-state original, Gred - 34-state reduced. Axes object 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 object. The axes object contains 3 objects of type line, text. These objects represent G: 48-state original, Gred: 34-state (bstmr).

Рисунок 10: Переходный процесс исходной модели с 48 состояниями и упрощенной модели с 34 состояниями

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте