Пакет вычисляет установившиеся рабочие точки для изменения параметра

Параметры блоков конфигурируют модель Simulink® несколькими способами. Например, можно использовать параметры блоков, чтобы задать различные коэффициенты или шаги расчета контроллера. Можно также использовать дискретный параметр, как вход управления с блоком Multiport Switch, чтобы управлять информационным каналом в модели. Варьируясь значение параметра помогает вам изучить его удар на поведение модели. Кроме того, можно варьироваться параметры модели объекта управления в системе управления, чтобы изучить робастность контроллера, чтобы посадить изменения.

При обрезке использования модели findop, можно задать набор значений параметров, для которых можно обрезать модель. Полный набор значений называется parameter grid или parameter samples. findop вычисляет рабочую точку для каждой комбинации значения в сетке параметра. Можно варьироваться несколько параметров, таким образом расширяя размерность сетки параметра.

Какие параметры могут быть выбраны?

Можно варьироваться любой параметр модели со значением, данным переменной в рабочем пространстве модели, рабочей области MATLAB® или словаре данных. В случаях, где различные параметры являются все настраиваемыми, findop требует, чтобы только одна компиляция модели нашла рабочие точки для различных значений параметров. Этот КПД особенно выгоден для моделей, которые являются дорогими, чтобы неоднократно компилировать.

Варьируйтесь один параметр

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

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

param.Name = 'A';
param.Value = Avals;

Здесь, Avals массив, задающий демонстрационные значения для A.

В следующей таблице перечислены некоторые распространенные способы задать выборки параметра.

Тип выборочного пространства параметраКак задать выборки параметра
Линейно варьированиеparam.Value = linspace(A_min,A_max,num_samples)
Логарифмически варьированиеparam.Value = logspace(A_min,A_max,num_samples)
Случайныйparam.Value = rand(1,num_samples)
Пользовательскийparam.Value = custom_vector

Если переменная, используемая моделью, не является скалярной переменной, задайте название параметра как выражение, которое решает к значению числового скаляра. Например, предположите тот Kpid вектор из коэффициентов ПИД. Первая запись в том векторе, Kpid, используется в качестве значения усиления в блоке в вашей модели. Используйте следующие команды, чтобы варьироваться, которые получают использование значений, данных в векторном Kpvals:

param.Name = 'Kpid(1)';
param.Value = Kpvals;

После того, как вы создаете структуру param, передайте его findop как param входной параметр.

Многомерные сетки параметра

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

Здесь, вы варьируетесь значения трех параметров, a, b и c. Выборки формируют 3 4 5 сетками. op массив с теми же размерностями, который содержит соответствующие обрезанные объекты рабочей точки.

Варьируйтесь несколько параметров

Варьироваться значение нескольких параметров для обрезки пакета с findop, задайте выборки параметра как массив структур. Структура имеет запись для каждого параметра, значение которого вы варьируетесь. Структура для каждого параметра эквивалентна описанный в, Варьируются Один Параметр. Можно задать Value поле для параметра как массив любой размерности. Однако размер Value поле должно соответствовать для всех параметров. Соответствующие записи массива для всех параметров, также называемых parameter grid points, должны сопоставить с заданной комбинацией параметра. Когда программное обеспечение обрезает модель, оно вычисляет рабочую точку для каждого узла решетки.

Задайте полную сетку

Предположим, что ваша модель имеет два параметра, значения которых вы хотите варьироваться, a и b:

a={a1,a2}b={b1,b2}

Вы хотите обрезать модель для каждой комбинации a и b, также называемого full grid:

{(a1,b1),(a1,b2)(a2,b1),(a2,b2)}

Создайте прямоугольное использование сетки параметра ndgrid.

a1 = 1;
a2 = 2;
a = [a1 a2];

b1 = 3;
b2 = 4;
b = [b1 b2];

[A,B] = ndgrid(a,b)
>> A

A =

     1     1
     2     2

>> B

B =

     3     4
     3     4

Создайте массив структур, params, это задает сетку параметра.

params(1).Name = 'a';
params(1).Value = A;

params(2).Name = 'b';
params(2).Value = B;

В общем случае, чтобы задать полную сетку для параметров N, использовать ndgrid получить массивы сетки N.

[P1,...,PN] = ndgrid(p1,...,pN);

Здесь, p1pn демонстрационные векторы параметра.

Создайте 1 x массив структур N.

params(1).Name = 'p1';
params(1).Value = P1;
...
params(N).Name = 'pN';
params(N).Value = PN;

Задайте подмножество полной сетки

Если ваша модель является комплексной, или вы варьируетесь, значение многих параметров, обрезая модель для полной сетки может стать дорогим. В этом случае можно задать подмножество полной сетки с помощью подобного таблице подхода. Используя пример в Задают Полную Сетку, предполагают, что вы хотите обрезать модель для следующих комбинаций a и b:

{(a1,b1),(a1,b2)}

Создайте массив структур, params, это задает эту сетку параметра.

A = [a1 a1];
params(1).Name = 'a';
params(1).Value = A;

B = [b1 b2];
params(2).Name = 'b';
params(2).Value = B;

Пакетная модель для обрезки для изменений параметра

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

Откройте модель Simulink.

sys = 'watertank';
open_system(sys)

Варьируйтесь параметры A и b в 10% их номинальной стоимости. Задайте три значения для A и четыре значения для b, создание сетки значения 3 на 4 для каждого параметра.

[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...
                         linspace(0.9*b,1.1*b,4));

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

params(1).Name = 'A';
params(1).Value = A_grid;
params(2).Name = 'b';
params(2).Value = b_grid;

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

opspec = operspec(sys)
 Operating point specification for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
	 spec:  dx = 0,  initial guess: 0
(2.) watertank/Water-Tank System/H
	 spec:  dx = 0,  initial guess: 1

Inputs: None 
----------

Outputs: None 
----------


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

opt = findopOptions('DisplayReport','off');

Обрежьте модель с помощью заданной спецификации рабочей точки, сетки параметра и набора опции.

[op,opreport] = findop(sys,opspec,params,opt);

findop обрезает модель для каждой комбинации параметра. Программное обеспечение использует только одну компиляцию модели. op массив 3 на 4 объектов рабочей точки, которые соответствуют заданным узлам решетки параметра.

Просмотрите рабочую точку в первой строке и первом столбце op.

op(1,1)
 Operating point for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
      x: 1.41         
(2.) watertank/Water-Tank System/H
      x: 10           

Inputs: None 
----------

Пакетная модель для обрезки в известных состояниях, выведенных из значений параметров

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

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

Откройте модель Simulink.

sys = 'scdairframeTRIM';
open_system(sys)

В этой модели аэродинамические силы и моменты зависят от скорости $V$и падения$\alpha$.

Варьируйтесь$V$ и$\alpha$ параметры и создайте 6 4 сетка параметра.

nA = 6;    % number of alpha values
nV = 4;    % number of V values
alphaRange = linspace(-20,20,nA)*pi/180;
vRange = linspace(700,1400,nV);
[alphaGrid,vGrid] = ndgrid(alphaRange,vRange);

Поскольку некоторые известные значения состояния для обрезки зависят от значений$V$ и$\alpha$, необходимо создать отдельный объект спецификации рабочей точки для каждой комбинации параметра.

for i = 1:nA
    for j = 1:nV
        % Set parameter values in model.
        alpha_ini = alphaGrid(i,j);
        v_ini = vGrid(i,j);

        % Create default specifications based on the specified parameters.
        opspec(i,j) = operspec(sys);

        % Specify which states are known and which states are at steady state.
        opspec(i,j).States(1).Known = [1;1];
        opspec(i,j).States(1).SteadyState = [0;0];

        opspec(i,j).States(3).Known = [1;1];
        opspec(i,j).States(3).SteadyState = [0;1];

        opspec(i,j).States(2).Known = 1;
        opspec(i,j).States(2).SteadyState = 0;

        opspec(i,j).States(4).Known = 0;
        opspec(i,j).States(4).SteadyState = 1;
    end
end

Создайте структуру параметра для пакетной обрезки. Задайте имя и сетку значения для каждого параметра.

params(1).Name = 'alpha_ini';
params(1).Value = alphaGrid;
params(2).Name = 'v_ini';
params(2).Value = vGrid;

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

opt = findopOptions('DisplayReport','off');
op = findop(sys,opspec,params,opt);

findop обрезает модель для каждой комбинации параметра. op 6 4 массив объектов рабочей точки, которые соответствуют заданным узлам решетки параметра.

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

| |

Похожие темы