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]:

GGred2k+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 находит уменьшенную модель, которая минимизирует норму Ханкеля

Wout1(GGred)Win1.

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

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

Веса по умолчанию являются единичными.

'Display'

'on'' или 'off'

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

'Order'

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

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

Эта таблица описывает выходные аргументы.

Аргумент

Описание

GRED

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

REDINFO

A Массива структур с тремя полями:

  • REDINFO.ErrorBound (граница ∥ G-GRED ∥∞)

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

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

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

Примеры

свернуть все

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

В данном примере используйте случайную модель пространства состояний 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, желаемый пониженный порядок, следующие шаги произведут преобразование подобия, чтобы обрезать исходную систему в пространстве состояний кth упорядочить уменьшенную модель.

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

    P = U p в p VpT

    Q = Uq и Vq q T

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

    Lp = Up ½

    Lo = U q и Q q½

  3. Поиск SVD (LoTLp)

    ЛоT Lp = U ВT

  4. Затем левое и правое преобразование для финального kth порядок уменьшенной модели

    <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> (: 1: k) Σ (1; k, 1:k))–½

    <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> (: 1: k) Σ (1; k, 1:k))–½

  5. Наконец,

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

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

Ссылки

[1] Glover, K., «All Optimal Hankel Norm Approaction of Linear Multivariable Systems, and Their Lв-Error Bounds», Int. J. Контроль, том 39, № 6, 1984, c. 1145-1193

[2] Safonov, M.G., and R.Y. Chiang, «A Schur Method for Balanced Model Reduction», IEEE Trans. on Automat. Контр., том 34, № 7, июль 1989, стр. 729-733

См. также

| | | | | |

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