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} cellArray

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

Wout1(GGred)Win1.

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

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

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

'Display'

'on'' или 'off'

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

'Order'

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

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

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

Аргумент

Описание

GRED

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

REDINFO

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

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

  • REDINFO.StabSV (Ганкель СВ устойчивой части G)

  • REDINFO.UnstabSV (Ганкель СВ нестабильной части 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)

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

[G2,info2] = balancmr(G,[10:2:18]);
sigma(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)

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

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

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

s = tf('s'); 
w1 = (s+1)/(s/10+1)/(s/60+1)*(s/600+1); 
bodemag(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')

Модель, полученная с функцией взвешивания, обеспечивает лучшее соответствие для динамики в диапазоне частот 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')

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

W = tf(0.01*[1 1.4e2 1e4],[1 14 100]); 
bodemag(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')

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

Алгоритмы

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

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

    P = U p Σp VpT

    Q = Uq Σq VqT

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

    Lp = Up Σ

    Lo = U q Σq½

  3. Найдите SVD (LoTLp)

    LoT Lp = U Σ VT

  4. Затем левое и правое преобразование для итогового kth приказывает, чтобы упрощенная модель была

    SL,BIG = Lo U (: 1:k) Σ (1; k, 1:k))–½

    SR,BIG = Lp V (: 1:k) Σ (1; k, 1:k))–½

  5. Наконец,

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

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

Ссылки

[1] Перчаточник, К., “Все Оптимальное Приближение Нормы Ганкеля Линейных Многомерных Систем и Их Границы Lµ-error “, Int J. Управление, Издание 39, № 6, 1984, p. 1145-1193

[2] Сафонов, M.G., и Р.И. Чанг, “Метод Шура для Сбалансированного Снижения сложности модели”, Сделка IEEE на Автомате. Противоречие, Издание 34, № 7, июль 1989, p. 729-733

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

| | | | | |

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