exponenta event banner

balancmr

Сбалансированное усечение модели методом квадратного корня

Синтаксис

GRED = balancmr(G)
GRED = balancmr(G,order)
[GRED,redinfo] = balancmr(G,key1,value1,...)
[GRED,redinfo] = balancmr(G,order,key1,value1,...)

Описание

balancmr возвращает модель сокращенного заказа GRED из G и массив структуры redinfo содержит границу ошибки уменьшенной модели и сингулярные значения Ханкеля исходной системы.

Граница ошибки вычисляется на основе сингулярных значений Ханкеля G. Для стабильной системы эти значения указывают соответствующую энергию состояния системы. Следовательно, приведённый порядок может быть непосредственно определён путём исследования системы сингулярных значений Ханкеля,

Только с одним входным аргументом G, функция покажет график сингулярных значений Ханкеля исходной модели и предложит уменьшить номер заказа модели.

Этот метод гарантирует привязку ошибки к бесконечной норме аддитивной ошибки G-GRED ∥ ∞ для хорошо кондиционированной модели уменьшил проблемы [1]:

‖G−Gred ‖∞≤ 2∑k+1nσi

В этой таблице описаны входные аргументы для balancmr.

Аргумент

Описание

G

Модель LTI должна быть уменьшена. Без каких-либо других входных данных, balancmr построит график сингулярных значений Ханкеля G и запрашивать сокращенный заказ

ORDER

(Необязательно) Целое число для требуемого порядка уменьшенной модели или, необязательно, вектор, упакованный с требуемыми заказами для пакетных прогонов

Пакетное выполнение серии различных моделей сокращенного заказа может быть создано путем указания order = x:y, или вектор положительных целых чисел. По умолчанию вся антистабильная часть системы сохраняется, поскольку с точки зрения стабильности управления избавление от нестабильного состояния (состояний) опасно для моделирования системы.

'MaxError' может быть указан таким же образом, как альтернатива для 'Order'. В этом случае уменьшенный порядок будет определен, когда сумма хвостов сингулярных значений Ханкеля достигнет 'MaxError'.

В этой таблице перечислены входные аргументы 'key' и его 'value'.

Аргумент

Стоимость

Описание

'MaxError'

Действительное число или вектор различных ошибок

Сокращение для достижения H∞ ошибки. При наличии, 'MaxError' отвергает ORDER вход.

'Weights'

{Wout,Win} массив ячеек

Опциональная матрица ячеек 1 на 2 с весами LTI Wout (выход) и Win (вход). Веса должны быть стабильными, минимальными по фазе и обратимыми. Когда вы поставляете эти веса, balancmr находит уменьшенную модель, которая минимизирует норму Ханкеля

Wout 1 (G Gred) Вин − 1.

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

В качестве альтернативы можно использовать balred фокусировать уменьшение модели на конкретной полосе частот без определения весовой функции. Используя balancmr и обеспечение собственных функций взвешивания позволяет более точно управлять профилем ошибок.

Весами по умолчанию являются оба идентификатора.

'Display'

'on'' или 'off'

Отображение сингулярных графиков Hankel (по умолчанию 'off').

'Order'

Целое число, вектор или массив ячеек

Порядок уменьшенной модели. Используйте, только если не указан в качестве второго аргумента.

В этой таблице описываются выходные аргументы.

Аргумент

Описание

GRED

Модель сокращенного заказа LTI. Становится многомерным массивом, когда вход является последовательным массивом другого порядка модели

REDINFO

Массив STRUCT с тремя полями:

  • REDINFO.ErrorBound (привязано к ∥ G-GRED ∥∞)

  • REDINFO.StabSV (Hankel SV стабильной части G)

  • REDINFO.UnstabSV (Hankel SV неустойчивой части G)

G может быть стабильным или нестабильным, непрерывным или дискретным.

Примеры

свернуть все

Если не указан какой-либо целевой порядок для уменьшенной модели, balancmr отображает сингулярные значения Hankel модели и предлагает выбрать порядок уменьшенной модели.

В этом примере используется случайная модель пространства состояния 30-го порядка.

rng(1234,'twister');     % fix random seed for example repeatability
G = rss(30,5,4);

G1 = balancmr(G)
Please enter the desired order: (>=0)

Изучите график сингулярных значений Ханкеля.

Сюжет показывает, что большая часть энергии системы может быть захвачена в приближении 20-го порядка. В окне команд введите 20. balancmr прибыль G1.

Изучите отклик исходной и уменьшенной моделей.

sigma(G,G1)

Аппроксимация 20-го порядка достаточно хорошо соответствует динамике исходной модели 30-го порядка.

Если имеется определенный целевой заказ или заказы, можно использовать balancmr для сокращения модели высокого порядка до этих заказов. В этом примере используется случайная модель пространства состояния 30-го порядка.

rng(1234,'twister');     % fix random seed for example repeatability
G = rss(30,5,4);

Используйте скалярный входной аргумент для уменьшения модели до одного порядка. Например, вычислите приближение 20-го порядка.

[G1,info1] = balancmr(G,20);
sigma(G,G1)

Figure contains an axes. The axes contains 8 objects of type line. These objects represent G, G1.

Используйте вектор для создания нескольких аппроксимаций. Следующая команда возвращает массив моделей четных порядков от 10 до 18.

[G2,info2] = balancmr(G,[10:2:18]);
sigma(G,G2)

Figure contains an axes. The axes contains 24 objects of type line. These objects represent G, G2.

Получить аппроксимацию самого низкого порядка таким образом, чтобы сумма сингулярных значений Ханкеля усеченных состояний не превышала заданного значения. В этом примере используется случайная модель пространства состояния 30-го порядка.

rng(1234,'twister');     % fix random seed for example repeatability
G = rss(30,5,4);

Вычислите две приближенные модели, одна из которых не превышает 0,1, а вторая - 0,5. Для этого введите эти значения в массив. balancmr возвращает массив приближенных моделей.

Gr = balancmr(G,'MaxError',[0.1 0.5]);
size(Gr)
2x1 array of state-space models.
Each model has 5 outputs, 4 inputs, and between 24 and 26 states.

Изучите результаты.

sigma(G,Gr)

Figure contains an axes. The axes contains 12 objects of type line. These objects represent G, Gr.

Уменьшите систему 4-го порядка до аппроксимации второго порядка с акцентом на полосе частот 10 рад/с - 100 рад/с. Рассмотрим следующую систему.

sys = tf(1,[1 0.5 1]) + tf(100*[1/10 1],[1 10 1000]); 
bode(sys)

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

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

s = tf('s'); 
w1 = (s+1)/(s/10+1)/(s/60+1)*(s/600+1); 
bodemag(w1)

Figure contains an axes. The axes contains an object of type line. This object represents w1.

График подтверждает, что функция взвешивания w1 имеет требуемый профиль, достигающий пика между 10 рад/с и 100 рад/с. Чтобы выполнить сокращение, укажите обратное значение этого профиля в качестве выходного веса, используя 'Weights' вариант balancmr.

weight = {1/w1,1}; 
wrsys = balancmr(sys,2,'Weights',weight);

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

rsys = balancmr(sys,2);
bode(sys,rsys,wrsys) 
legend('Original','Unweighted','Weighted')

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Original, Unweighted, Weighted. Axes 2 contains 3 objects of type line. These objects represent Original, Unweighted, Weighted.

Модель, полученная с помощью весовой функции, обеспечивает лучшее соответствие динамики в полосе частот 10 рад/с - 100 рад/с.

Используйте функцию взвешивания для управления частотной зависимостью ошибки между исходной и уменьшенной моделями.

В этом примере загрузите модель SISO с 48 состояниями и уменьшите ее до 6-го порядка.

load('balancmrData.mat','bplant')
bplant6 = balancmr(bplant,6);
bode(bplant,bplant6,bplant-bplant6,logspace(0,2,200))
legend('Original','Reduced','Error')

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Original, Reduced, Error. Axes 2 contains 3 objects of type line. These objects represent Original, Reduced, Error.

Ошибка довольно равномерно распределена по частоте. Создайте взвешивающую функцию, которая допускает большую ошибку на частотах ниже 100 рад/с. В этом случае используйте двойную функцию, которая имеет единичное усиление на низкой частоте, но падает до -40 дБ на более высоких частотах.

W = tf(0.01*[1 1.4e2 1e4],[1 14 100]); 
bodemag(W,bplant)

Figure contains an axes. The axes contains 2 objects of type line. These objects represent W, bplant.

Снова уменьшите модель до 6-го порядка, используя эту функцию взвешивания. Поскольку bplant является моделью SISO, можно использовать функцию в качестве входного или выходного веса.

bplant6W = balancmr(bplant,6,'Weights',{W,1});
bode(bplant,bplant6W,bplant-bplant6W,logspace(0,2,200))
legend('Original','Reduced w/Weight','Error')

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Original, Reduced w/Weight, Error. Axes 2 contains 3 objects of type line. These objects represent Original, Reduced w/Weight, Error.

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

Алгоритмы

Учитывая пространство состояния (A, B, C, D) системы и k, желаемый уменьшенный порядок, следующие этапы будут производить преобразование подобия для усечения исходной системы состояния-пространства до модели с уменьшенным k-м порядком.

  1. Найти SVD грамматиков управляемости и наблюдаемости

    P = Up Startp VpT

    Q = UqStartq VqT

  2. Найти квадратный корень граммиан (левый/правый собственные векторы)

    Lp = Up Startp ½

    Lo = Uq Startq ½

  3. Поиск SVD (LoTLp)

    LoT Lp = U Δ VT

  4. Тогда левое и правое преобразование для конечной модели уменьшенного порядка k

    SL, БОЛЬШОЙ = Ло У (: 1:k) Σ (1; k, 1:k))

    SR, БОЛЬШОЙ = альбом V (: 1:k) Σ (1; k, 1:k))

  5. Наконец,

    [A ^ B ^ C ^ D ^] = [SL, BIGTASR, BIGSL, BIGTBCSR, BIGD]

Доказательство алгоритма усечения баланса квадратного корня можно найти в [2].

Ссылки

[1] Гловер, К., «Все оптимальные аппроксимации нормы Hankel для линейных систем с несколькими переменными и их предельные значения погрешности», Int. J. Control, том 39, № 6, 1984, с. 1145-1193

[2] Сафонов, М.Г. и Р.Я. Чианг, «Метод Щура для сбалансированного снижения модели», IEEE Trans. on Automat. Контр., том 34, № 7, июль 1989, с. 729-733

См. также

| | | | | |

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