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 возвращает массив соответствующих рабочих точек, используя одну компиляцию модели.

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

  • Структура - Изменяйте значение одного параметра путем определения param как структура со следующими полями:

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

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

    Для примера измените значение параметра A в области значений:

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

    [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 объекты. Для получения примера смотрите Модель обрезки пакета Simulink для Изменения параметра.

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

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

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

свернуть все

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

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

Имя блока Inport

PortWidth

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

PortDimensions

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

u

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

Description

Блок Inport входа описание, возвращенный как вектор символов.

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

Выходное сообщение

Для получения дополнительной информации об алгоритме оптимизации смотрите документацию Optimization Toolbox™.

Подробнее о

свернуть все

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

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

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

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

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

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

Совет

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

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

Алгоритмы

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

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

  • BufferReuse = 'off'

  • RTWInlineParameters = 'on'

  • BlockReductionOpt = 'off'

  • SaveFormat = 'StructureWithTime'

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

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

Приложение

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

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