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

Примеры

свернуть все

Откройте модель 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:
---------------------------------

opreport = 


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

Operating point specifications were successfully met.
States: 
----------
    <strong>Min</strong>      <strong>x</strong>       <strong>Max</strong>    <strong>dxMin</strong>    <strong>dx</strong>    <strong>dxMax</strong>
    <strong>___</strong>    <strong>______</strong>    <strong>___</strong>    <strong>_____</strong>    <strong>__</strong>    <strong>_____</strong>

(1.) watertank/PID Controller/Integrator/Continuous/Integrator
     0     1.2649    Inf      0      0       0  
(2.) watertank/Water-Tank System/H
    10         10     10      0      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
opreport = 


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

Operating point specifications were successfully met.
States: 
----------
    <strong>Min</strong>      <strong>x</strong>       <strong>Max</strong>    <strong>dxMin</strong>    <strong>dx</strong>    <strong>dxMax</strong>
    <strong>___</strong>    <strong>______</strong>    <strong>___</strong>    <strong>_____</strong>    <strong>__</strong>    <strong>_____</strong>

(1.) watertank/PID Controller/Integrator/Continuous/Integrator
     0     1.2649    Inf      0      0       0  
(2.) watertank/Water-Tank System/H
    10         10     10      0      0       0  

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

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

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

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

mdl = 'magball';
open_system(mdl)

Симулируйте модель и извлеките рабочие точки в 10 и 20 единицы измерения времени.

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

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

Отобразите первую рабочую точку.

op(1)
ans = 


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

States: 
----------
        <strong>x</strong>     
    <strong>__________</strong>

(1.) magball/Controller/PID Controller/Filter/Cont. Filter/Filter
    5.4732e-07
(2.) magball/Controller/PID Controller/Integrator/Continuous/Integrator
        14.007
(3.) magball/Magnetic Ball Plant/Current
        7.0036
(4.) magball/Magnetic Ball Plant/dhdt
     8.443e-08
(5.) magball/Magnetic Ball Plant/height
          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® path.

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

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

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

  • Структура — Варьируется значение одного параметра путем определения 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 объекты. Для примера смотрите Бэча Трима Симулинка Моделя для Изменения Параметра.

Обрезка опций в виде a findopOptions опция установлена.

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

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

свернуть все

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

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

Блок path, возвращенный как вектор символов.

StateName

Имя состояния

x

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

Ts

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

SampleType

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

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

  • 'DSTATE' — Состояние дискретного времени

inReferencedModel

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

  • 1 — Блок в образце модели.

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

Description

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

Inputs

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

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

Поле Описание
Nu Только для чтения

Количество блоков-сигналов импорта

Block

Имя Inport блока

PortDimensions

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

u

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

Description

Inport блок ввел описание, возвращенное как вектор символов.

Time

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

Version

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

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

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

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

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

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

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

Inputs

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

Outputs

Выходные значения в вычисленной рабочей точке. Этот объект содержит те же поля как Outputs свойство opspec, со сложением yspec, который является желаемым выходным значением.

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

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

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

Не рекомендуемый запуск в R2021b

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