exponenta event banner

findop

Установившаяся рабочая точка из спецификаций (обрезка) или моделирования

Описание

пример

op = findop(mdl,opspec) возвращает рабочую точку модели, которая соответствует спецификациям в opspec. Обычно модель обрезается в установившейся рабочей точке. Модель Simulink ® должна быть открытой. Еслиopspec - массив спецификаций рабочих точек, findop возвращает массив соответствующих рабочих точек.

пример

op = findop(mdl,opspec,param) пакетная обрезка модели для вариаций значений параметров, указанных в param.

пример

op = findop(___,options) обрезает модель с помощью дополнительного алгоритма оптимизации options.

пример

[op,opreport] = findop(___) возвращает отчет о поиске в операционной точке, opreport, для любого из предыдущих синтаксисов.

пример

op = findop(mdl,tsnapshot) моделирует модель, используя исходные условия модели, и извлекает рабочие точки в моменты времени снимка, указанные в tsnapshot.

пример

op = findop(mdl,tsnapshot,param) моделирует модель и извлекает рабочие точки во время создания снимка.

Примеры

свернуть все

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

mdl = 'watertank';
open_system(mdl)

Обрезать модель, чтобы найти установившуюся рабочую точку, где уровень в резервуаре для воды 10.

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

opspec = operspec(mdl);

Настройте спецификации для первого состояния модели. Первое состояние должно находиться в устойчивом состоянии с нижней границей 0. Предоставьте начальное предположение о 2 для значения состояния.

opspec.States(1).SteadyState = 1;
opspec.States(1).x = 2;
opspec.States(1).Min = 0;

Сконфигурируйте второе состояние модели как известное состояние со значением 10.

opspec.States(2).Known = 1;
opspec.States(2).x = 10;

Найдите рабочую точку, соответствующую этим спецификациям.

op = findop(mdl,opspec);
 Operating point search report:
---------------------------------

 Operating point search report for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
      x:          1.26      dx:             0 (0)
(2.) watertank/Water-Tank System/H
      x:            10      dx:             0 (0)

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

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

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

mdl = 'watertank';
open_system(mdl)

Изменение параметров A и b в пределах 10% от их номинальных значений и создайте сетку параметров 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(mdl);

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

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

op представляет собой массив объектов рабочих точек 3 на 4, соответствующих указанным точкам сетки параметров.

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

mdl = 'watertank';
open_system(mdl)

Создайте объект спецификации операционной точки по умолчанию.

opspec = operspec(mdl);

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

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

Обрезать модель с помощью указанного набора опций.

op = findop(mdl,opspec,opt);

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

mdl = 'watertank';
open_system(mdl)

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

opspec = operspec(mdl);

Настройте спецификации для первого состояния модели.

opspec.States(1).SteadyState = 1;
opspec.States(1).x = 2;
opspec.States(1).Min = 0;

Настройте спецификации для второго состояния модели.

opspec.States(2).Known = 1;
opspec.States(2).x = 10;

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

opt = findopOptions('DisplayReport',false);
[op,opreport] = findop(mdl,opspec,opt);

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

opreport
 Operating point search report for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
      x:          1.26      dx:             0 (0)
(2.) watertank/Water-Tank System/H
      x:            10      dx:             0 (0)

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

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

dx - производная по времени для каждого состояния. Так как все dx значения равны нулю, рабочая точка находится в установившемся состоянии.

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

mdl = 'magball';
open_system(mdl)

Моделирование модели и извлечение рабочих точек в 10 и 20 единиц времени.

op = findop(mdl,[10,20]);

op - вектор столбца рабочих точек с одним элементом для каждого времени снимка.

Отображение первой рабочей точки.

op(1)
 Operating point for the Model magball.
 (Time-Varying Components Evaluated at time t=10)

States: 
----------
(1.) magball/Controller/PID Controller/Filter/Cont. Filter/Filter
      x: 5.47e-07     
(2.) magball/Controller/PID Controller/Integrator/Continuous/Integrator
      x: 14           
(3.) magball/Magnetic Ball Plant/Current
      x: 7            
(4.) magball/Magnetic Ball Plant/dhdt
      x: 8.44e-08     
(5.) magball/Magnetic Ball Plant/height
      x: 0.05         

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

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

mdl = 'watertank';
open_system(mdl)

Укажите значения параметров. Сетка параметров представляет собой массивы 5 на 4.

[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,5),...
                         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;

Моделирование модели и извлечение рабочих точек в 0, 5, и 10 единиц времени.

op = findop(mdl,[0 5 10],params);

findop моделирует модель для каждой комбинации значений параметров и извлекает рабочие точки в указанное время моделирования.

op представляет собой массив объектов рабочих точек 3 на 5 на 4.

size(op)
ans =

     3     5     4

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

свернуть все

Имя модели Simulink, указанное как символьный вектор или строка. Модель должна находиться в текущей рабочей папке или в пути MATLAB ®.

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

Если opspec является массивом, findop возвращает массив соответствующих операционных точек с использованием компиляции одной модели.

Образцы параметров для обрезки, указанные как одно из следующих:

  • Структура (Structure) - изменение значения одного параметра путем указания param в виде структуры со следующими полями:

    • Name - имя параметра, указанное как символьный вектор или строка. Можно указать любой параметр модели, который является переменной в рабочем пространстве модели, рабочем пространстве MATLAB или словаре данных. Если переменная, используемая моделью, не является скалярной переменной, укажите имя параметра как выражение, разрешающее числовое скалярное значение. Например, для использования первого элемента вектора V в качестве параметра используйте:

      param.Name = 'V(1)';
    • Value - Значения выборки параметров, заданные как двойной массив.

    Например, можно изменить значение параметра A в диапазоне 10%:

    param.Name = 'A';
    param.Value = linspace(0.9*A,1.1*A,3);
  • Массив структуры - изменение значения нескольких параметров. Например, можно изменять значения параметров A и b в диапазоне 10%:

    [A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...
                             linspace(0.9*b,1.1*b,3));
    params(1).Name = 'A';
    params(1).Value = A_grid;
    params(2).Name = 'b';
    params(2).Value = b_grid;

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

При указании opspec как единый operspec и значения параметров в param производить состояния, которые конфликтуют с известными состояниями в opspec, findop обрезает модель, используя спецификации в opspec. Чтобы обрезать модель по значениям состояния, полученным из значений параметров, укажите opspec как массив соответствующих operspec объекты. Пример см. в разделе Модель симулятора пакетной обрезки для изменения параметра.

Параметры обрезки, заданные как findopOptions набор опций.

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

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

свернуть все

Операционная точка, возвращаемая как объект операционной точки или массив объектов операционной точки. Размеры op зависит от указанных вариаций параметров и либо от спецификаций рабочей точки, либо от времени снимка моделирования.

Изменение параметраНайти операционную точку для...Заканчивание op Размеры
Без изменения параметровСпецификация одной рабочей точки, указанная opspecобъект с одной рабочей точкой
Время одиночного снимка, указанное tsnapshot
N1-by-...-по-Нм массив спецификаций рабочих точек, указанный opspecN1-by-...- по Нм
Снимки Ns, указанные tsnapshotВектор столбца длиной Ns
N1-by-...- по - сетка параметров Nm, заданная paramСпецификация одной рабочей точки, указанная opspecN1-by-...- по Нм
Время одиночного снимка, указанное tsnapshot
N1-by-...-по-Нм массив спецификаций рабочих точек, указанный opspec
Снимки Ns, указанные tsnapshotNs-by-N1-by-...-by-Nm.

Например, предположим:

  • opspec является одним объектом спецификации операционной точки и param задает сетку параметров 3 на 4 на 2. В этом случае op представляет собой массив рабочих точек 3 на 4 на 2.

  • tsnapshot является скаляром и param задает сетку параметров 5 на 6. В этом случае op представляет собой массив рабочих точек 1 на 5 на 6.

  • tsnapshot является вектором строки с тремя элементами и param задает сетку параметров 5 на 6. В этом случае op представляет собой массив рабочих точек 3 на 5 на 6.

Каждый объект операционной точки имеет следующие свойства:

СобственностьОписание
ModelИмя модели Simulink, возвращаемое как символьный вектор.
States

Рабочая точка состояния, возвращаемая как вектор объектов состояния. Каждая запись в States представляет поддерживаемые состояния одного блока Simulink.

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

Примечание

Если блок имеет несколько именованных непрерывных состояний, States содержит одну структуру для каждого именованного состояния.

Каждый объект состояния имеет следующие поля:

ОбластьОписание
Nx только для чтения

Количество состояний в блоке

Block

Путь блока, возвращаемый как символьный вектор.

StateName

Название штата

x

Значения всех поддерживаемых состояний блоков, возвращаемые в виде вектора длины Nx.

Ts

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

SampleType

Время состояния, возвращаемое как одно из следующих значений:

  • 'CSTATE' - Состояние непрерывного времени

  • 'DSTATE' - Дискретно-временное состояние

inReferencedModel

Флаг, указывающий, находится ли блок внутри ссылочной модели, возвращаемый как одно из следующих значений:

  • 1 - Блок находится внутри ссылочной модели.

  • 0 - Блок находится в файле текущей модели.

Description

Описание состояния блока, возвращаемое в виде символьного вектора.

Inputs

Входной уровень в рабочей точке, возвращаемый как вектор входных объектов. Каждая запись в Inputs представляет входные уровни одного блока ввода корневого уровня в модели.

Каждый входной объект имеет следующие поля:

ОбластьОписание
Block

Имя блока ввода

PortWidth

Количество сигналов блока ввода

PortDimensions

Размер сигналов, принимаемых вводом

u

Входные уровни блока ввода в рабочей точке, возвращаемые в виде вектора длины PortWidth.

Description

Входное описание блока ввода, возвращаемое в виде символьного вектора.

Time

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

Version

Номер версии объекта

Можно редактировать свойства op с использованием точечной нотации или set функция.

Отчет о поиске в операционной точке, возвращаемый как объект отчета о поиске в операционной точке. Если op является массивом объектов операционной точки, то opreport представляет собой массив соответствующих отчетов поиска.

Этот отчет отображается автоматически даже при подавлении вывода с помощью точки с запятой. Чтобы скрыть отчет, установите DisplayReport поле в options кому 'off'.

Каждый отчет поиска операционной точки имеет следующие свойства:

СобственностьОписание
Model

Model значение свойства op

Inputs

Inputs значение свойства op

Outputs

Outputs значение свойства op, с добавлением yspec, что является желаемым y стоимость

States

States значение свойства op с добавлением dx, который содержит значения производных состояний. Для дискретных временных состояний dx - разница между значением следующего состояния и текущим; то есть x (k + 1) - x (k).

TimeTime значение свойства op
TerminationStringУсловие завершения оптимизации, возвращаемое в виде символьного вектора.
OptimizationOutput

Результаты поиска алгоритма оптимизации, возвращенные в виде структуры со следующими полями:

ОбластьОписание
iterations

Количество итераций, выполненных во время оптимизации

funcCount

Количество оценок функций, выполненных во время оптимизации

lssteplength

Размер шага поиска строки относительно направления поиска (только алгоритм оптимизации активного набора)

stepsize

Смещение в векторе состояния на конечной итерации (алгоритмы оптимизации активного набора и внутренних точек)

algorithm

Используемый алгоритм оптимизации

firstorderopt

Мера оптимизации первого порядка для алгоритма оптимизации, отражающей область доверия; [] для других алгоритмов

constrviolation

Максимум функций ограничения

message

Выйти из сообщения

Дополнительные сведения об алгоритме оптимизации см. в документации по Toolbox™ оптимизации.

Подробнее

свернуть все

Установившаяся рабочая точка (условие подстройки)

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

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

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

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

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

Совет

  • Можно инициализировать поиск в рабочей точке в моментальном снимке моделирования или в ранее вычисленной рабочей точке с помощью initopspec.

  • Линеаризация модели в рабочей точке op использование linearize.

Алгоритмы

По умолчанию findop использует оптимизатор graddescent-elim. Чтобы использовать другой оптимизатор, измените значение OptimizerType в options использование findopOptions.

findop автоматически задает следующие свойства модели Simulink для оптимизации:

  • BufferReuse = 'off'

  • RTWInlineParameters = 'on'

  • BlockReductionOpt = 'off'

  • SaveFormat = 'StructureWithTime'

После завершения оптимизации Simulink восстанавливает свойства исходной модели.

Альтернативная функциональность

Приложение

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

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