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

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

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

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

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

Отличайтесь один параметр

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

Например, модель Watertank имеет три параметра, заданные как переменные рабочего пространства MATLAB, a, b и 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);

Здесь, p1..., pN является демонстрационными векторами параметра.

Создайте 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)

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

Отличайтесь и параметры и создайте 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);

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

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 массив объектов рабочей точки, которые соответствуют заданным узлам решетки параметра.

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

| |

Похожие темы