ncfmr

Снижение сложности модели из нормированной взаимно-простой факторизации

Описание

ncfmr вычисляет приближение уменьшаемого порядка модели путем усечения режимов во взаимно-простой факторизации модели полного порядка. Этот метод связан со сбалансированным методом усечения balred, но это является особенно подходящим к сокращению порядка контроллера. Для стабилизировавшегося контроллера уменьшаемый контроллер также стабилизировался, пока ошибка приближения меньше, чем поле робастности, вычисленное ncfmargin.

пример

[Gred,info] = ncfmr(G,ord) вычисляет приближение уменьшаемого порядка модели G динамической системы. Задайте желаемый порядок сокращения как ord. Если ord вектор, затем Gred массив приближений соответствующего порядка. Структура info содержит информацию о расчете, таком как границы при ошибке приближения.

пример

[~,info] = ncfmr(G) вычисляет взаимно-простую факторизацию G данный [M,N] таким образом, что G = M\N (см. lncf), сингулярные значения Ганкеля факторизации и ошибочные границы. Можно использовать эту информацию, чтобы определить целевой порядок сокращения программно на основе желаемой точности или устойчивых факторов устойчивости. Затем используйте синтаксис Gred = ncfmr(G,ord,info) вычислить модель уменьшаемого порядка.

пример

Gred = ncfmr(G,ord,info) вычисляет приближение уменьшаемого порядка с помощью нормированной взаимно-простой факторизации и сингулярных значений Ганкеля, которые вы вводите в info. Получите info с помощью предыдущего синтаксиса, [~,info] = ncfmr(G). Обеспечение ранее вычисленного info к ncfmr позволяет вам выполнять снижение сложности модели, не имея необходимость повторно вычислять факторизацию и сингулярные значения Ганкеля. Этот синтаксис поэтому особенно полезен, когда эффективность является беспокойством.

пример

ncfmr(G) строит сингулярные значения Ганкеля и границы при ошибке приближения, соответствующей каждому порядку. Исследуйте график определить уменьшаемый порядок на основе желаемой точности или устойчивых факторов устойчивости. Можно затем использовать Gred = ncfmr(G,ord) вычислить модель уменьшаемого порядка.

Примеры

свернуть все

ncfmr вычисляет сингулярные значения Ганкеля и ошибки приближения помочь вам выбрать подходящий целевой порядок сокращения. Один способ сделать так состоит в том, чтобы исследовать график этих значений. Загрузите модель объекта управления с 30 состояниями G.

load("ncfmrModel.mat","G")
size(G)
State-space model with 2 outputs, 3 inputs, and 30 states.

Вызовите ncfmr без выходного аргумента. Функция генерирует график сингулярного значения Ганкеля, который показывает относительные энергетические вклады каждого состояния во взаимно-простой факторизации G, расположенный в порядке убывания энергией. График также показывает верхнюю границу при ошибке между исходными моделями и моделями уменьшаемого порядка, что вы получаете путем усечения состояний в той точке. Исследуйте этот график выбрать целевой порядок. Например, для максимальной погрешности 0,01, можно уменьшать модель до 13-го порядка.

ncfmr(G)

Figure contains an axes object. The axes object with title Hankel Singular Values and Approximation Error contains 3 objects of type bar, line. These objects represent Unstable modes, Stable modes, Absolute error bound.

Вызовите ncfmr снова с выходным аргументом и использованием order = 13. Выполнение так вычисляет упрощенную модель Gred. Исследуйте сингулярные значения G и различия между G и Gred. Различие очень мало через все частоты, показывая, что модель уменьшаемого порядка является хорошим приближением модели полного порядка.

Gred = ncfmr(G,13);
sigma(G,G-Gred)
legend("G","G-Gred")

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent G, G-Gred.

Когда вы используете ncfmr уменьшать объект G или контроллер K для которого ответ с обратной связью feedback(G*K,eye(n)) устойчиво, получившийся ответ с обратной связью также устойчив, пока ошибка приближения упрощенной модели не превышает поле робастности, вычисленное ncfmargin. Видеть это преимущество ncfmr, загрузите объект G и спроектируйте контроллер для него. В данном примере используйте ncfsyn спроектировать контроллер.

load ncfmrStability.mat G
size(G)
State-space model with 1 outputs, 1 inputs, and 3 states.
% shaping weights
s = tf('s');
W1 = 3.35*tf([1 20.89],[1 0]);
W2 = 1;
% controller
[K,~,~,Kinfo] = ncfsyn(G,W1,W2); 
size(K)
State-space model with 1 outputs, 1 inputs, and 5 states.

ncfsyn проектирует контроллер путем оптимизации ncfmargin поле робастности использование объекта сформировано функциями взвешивания W1 и W2 (см. ncfsyn). Анализировать поля с ncfmargin и уменьшайте порядок контроллера с ncfmr, работайте с имеющим форму объектом Gs и контроллер Ks спроектированный для него.

Gs = Kinfo.Gs;
Ks = Kinfo.Ks;

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

emax = ncfmargin(Gs,-Ks)
emax = 0.1956

Пока ошибка приближения контроллера уменьшаемого порядка не превышает emax, устойчивость системы с обратной связью сохраняется. Предположим, что можно терпеть до 50%-го сокращения этого поля в обмен на вычислительное преимущество контроллера более низкоуровневого. Чтобы выбрать уменьшаемый порядок, сначала вычислите ошибки, сопоставленные с каждым целевым порядком. ncfmr возвращает эти значения в ErrorBound поле info аргумент. Затем найдите индекс последней записи в info.ErrorBound это превышает целевую ошибку emax/2.

[~,info] = ncfmr(Ks);
r = find(info.ErrorBound>emax/2,1,'last')
r = 3

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

Ksr = ncfmr(Ks,r,info);
size(Ksr)
State-space model with 1 outputs, 1 inputs, and 3 states.

Контроллер уменьшаемого порядка дает к очень похожему запасу устойчивости исходному контроллеру.

ncfmargin(Gs,-Ksr)
ans = 0.1949

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

Ksru = ncfmr(Ks,1,info);
ncfmargin(Gs,-Ksru)
ans = 0

Таким образом, для последующего анализа или реализации, используйте контроллер третьего порядка. Для этого преобразуйте Ksr, уменьшаемый контроллер для Gs, в Kr, уменьшаемый контроллер для G.

Kr = W1*Ksr*W2;

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

CL = feedback(-G*K,1);
CLr = feedback(-G*Kr,1);
step(CL,CLr)
legend

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent CL, CLr.

Большое перерегулирование в этом случае происходит из-за нестабильности исходного объекта G.

ncfmr может вычислить несколько моделей уменьшаемого порядка целиком и возвратить их в массиве моделей. Это может быть полезно, например, когда это необходимо, чтобы протестировать проектирование контроллера несколькими приближениями, чтобы выбрать то, которое дает к лучшему балансу между точностью и вычислительным КПД. Чтобы вычислить многоуровневые модели, обеспечьте вектор из целевых порядков сокращения вместо одного значения для order.

Загрузите модель объекта управления с 30 состояниями G. Вычислите пять приближений порядков 11−15.

load("ncfmrModel.mat","G")
orders = 11:15;
Gred = ncfmr(G,orders);
size(Gred)
5x1 array of state-space models.
Each model has 2 outputs, 3 inputs, and between 11 and 15 states.

Gred массив пространства состояний уменьшаемого порядка (ss) модели. Можно использовать SamplingGrid свойство ss сопоставлять каждую запись в массиве с его соответствующим порядком модели.

Gred.SamplingGrid = struct('order',orders);

Присвоение SamplingGrid может быть полезно для отслеживания записи в массиве моделей. Например, если вы строите частотную характеристику Gred на рисунке MATLAB®, кликая по одному из получившихся ответов создает подсказку, которая включает информацию, чертившую от SamplingGrid.

Входные параметры

свернуть все

Модель, чтобы уменьшать в виде модели динамической системы, такой как пространство состояний (ss) модель. G может быть устойчивым или нестабильным. Если G обобщенная модель в пространстве состояний с неопределенными или настраиваемыми блоками системы управления, затем функция использует номинальную стоимость или текущее значение тех элементов. sys не может быть frd модель или модель с задержками.

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

Определить ord, можно использовать один из двух методов:

Если G имеет нестабильные состояния, затем ord должно быть, по крайней мере, количество нестабильных состояний.

Выходные аргументы

свернуть все

Модель уменьшаемого порядка, возвращенная как пространство состояний (ss) модель. Если ord скаляр, затем Gred одна модель порядка ord. Если ord вектор, затем Gred массив ss модели соответствующих порядков.

Информация о вычислении снижения сложности модели, возвращенном как структура со следующими полями.

  • GL — Оставленный нормировал взаимно-простую факторизацию G, возвращенный как пространство состояний (ss) модель. Эта факторизация дана GL = lncf(G). Для получения дополнительной информации смотрите lncf.

  • HSV — Сингулярные значения Ганкеля GL, возвращенный как вектор, длина которого является количеством состояний в G. Эти значения указывают на относительный энергетический вклад каждого состояния. Можно выбрать целевой порядок сокращения путем исследования этих значений и выбора многих состояний, после которых энергетический вклад значительно понижается.

  • ErrorBound — Верхняя граница при ошибках приближения, возвращенных как вектор. Ошибкой приближения дают [Mr,Nr][M,N], где [M, N] = lncf(G) и [Mr, Nr] = lncf(Gred). (Для получения дополнительной информации об этих выражениях, смотрите lncf.) Каждая запись info.ErrorBound(j) максимальная ошибка приближения, сопоставленная с сокращением до j состояния. Таким образом, например, если вы хотите ошибку приближения не больше, чем 0.01, исследуют info.ErrorBound найти индекс первой записи, которая меньше 0.01. Используйте тот индекс в качестве ord.

Советы

  • Можно использовать ncfmr уменьшать объект G или контроллер K при сохранении устойчивости с обратной связью следующей SISO или обратной связи MIMO.

    Feedback loop formed by controller K and plant G with negative unit feedback, feedback(G*K,eye(n)).

    Устойчивость этого цикла сохраняется, пока ошибка приближения уменьшаемого объекта меньше, чем поле робастности для этого цикла, данного ncfmargin(G,K).

    Для контроллеров, вычисленных с ncfsyn, сокращение контроллера Ks это ncfsyn вычисляет для имеющего форму контроллера, Gs предпочтителен. И Ks и Gs возвращены ncfsyn в info выходной аргумент. Можно затем вычислить Kr, уменьшаемый контроллер для исходного объекта G, от Kr = W 1KsrW2, где W 1 и W 2 является весами формирования, используемыми с ncfsyn. Для примера смотрите, Уменьшают Порядок Контроллера При Сохранении Устойчивости и Робастности.

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

Алгоритмы

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

  1. Найдите левую нормированную взаимно-простую факторизацию [M, N] G, где G = M \N (см. lncf).

  2. Получите приближение th-порядка k [Mr, Nr] [M, N], с помощью сбалансированного усечения модели с управлением абсолютной погрешностью (см. balred).

  3. Установите Gred = Mr \Nr.

Вопросы совместимости

развернуть все

Поведение изменяется в R2021b

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