Установившаяся рабочая точка из технических требований (обрезка) или симуляция
возвращает рабочую точку модели, которая выполняет техническим требованиям в op
= findop(mdl
,opspec
)opspec
. Как правило, вы обрезаете модель в установившейся рабочей точке. Simulink® модель должна быть открыта. Если opspec
массив технических требований рабочих точек, findop
возвращает массив соответствующих рабочих точек.
Откройте модель 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
mdl
— Имя модели SimulinkИмя модели Simulink в виде вектора символов или строки. Модель должна быть в текущей рабочей папке или на MATLAB® path.
opspec
— Технические требования рабочей точкиOperatingSpec
возразите | массив OperatingSpec
объектыТехнические требования рабочей точки для обрезки модели в виде OperatingSpec
возразите или массив OperatingSpec
объекты создали использование operspec
функция.
Если opspec
массив, findop
возвращает массив соответствующих рабочих точек с помощью одной компиляции модели.
param
— Выборки параметраВыборки параметра для обрезки в виде одного из следующего:
Структура — Варьируется значение одного параметра путем определения 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
объекты. Для примера смотрите Бэча Трима Симулинка Моделя для Изменения Параметра.
options
— Обрезка опцийfindopOptions
опция установленаОбрезка опций в виде a findopOptions
опция установлена.
tsnapshot
— Времена снимка состояния симуляцииВремена снимка состояния симуляции, в которые можно извлечь рабочую точку модели в виде скаляра для одного снимка состояния или вектора для нескольких снимков состояния. findop
симулирует модель и вычисляет рабочую точку для состояния модели в каждый раз снимка состояния.
op
— Рабочая точкаOperatingPoint
возразите | массив OperatingPoint
объектыРабочая точка, возвращенная как OperatingPoint
возразите или массив OperatingPoint
объекты. Размерности op
зависьте от заданных изменений параметра и или технические требования рабочей точки или время снимка состояния симуляции.
Изменение параметра | Найдите рабочую точку для... | Получившийся op Размерности |
---|---|---|
Никакое изменение параметра | Одна спецификация рабочей точки, заданная opspec | один объект рабочей точки |
Одно время снимка состояния, заданное tsnapshot | ||
N1-by-... - Nm массив технических требований рабочей точки, заданных opspec | N1-by-... - Nm | |
Снимки состояния Ns, заданные tsnapshot | Вектор-столбец длины Ns | |
N1-by-... - Nm сетка параметра, заданная param | Одна спецификация рабочей точки, заданная opspec | N1-by-... - Nm |
Одно время снимка состояния, заданное tsnapshot | ||
N1-by-... - Nm массив технических требований рабочей точки, заданных opspec | ||
Снимки состояния Ns, заданные tsnapshot | Ns-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 | Рабочая точка состояния, возвращенная как вектор из объектов состояния. Каждая запись в Для списка поддерживаемых состояний для объектов рабочей точки смотрите состояния Модели Simulink, Включенные в Объект Рабочей точки. Примечание Если блок имеет несколько именованных непрерывных состояний, Каждый объект состояния имеет следующие поля:
| ||||||||||||||||||
Inputs | Уровень на входе в рабочей точке, возвращенной как вектор из входных объектов. Каждая запись в Каждый входной объект имеет следующие поля:
| ||||||||||||||||||
Time | Времена, в которые выполнены любые изменяющиеся во времени функции в модели, возвратились как вектор. | ||||||||||||||||||
Version | Номер версии объекта |
Можно отредактировать свойства op
использование записи через точку или set
функция.
opreport
— Отчет поиска рабочей точкиOperatingReport
возразите | массив OperatingReport
объектыОтчет поиска рабочей точки, возвращенный как OperatingReport
объект. Если op
массив OperatingPoint
объекты, затем opreport
массив соответствующего OperatingReport
объекты.
Этот отчет отображается автоматически, даже когда вы подавляете выход с помощью точки с запятой. Чтобы скрыть отчет, установите DisplayReport
поле в options
к 'off'
.
Каждый отчет поиска рабочей точки имеет следующие свойства:
Свойство | Описание | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Model |
| ||||||||||||||||||
Inputs |
| ||||||||||||||||||
Outputs | Выходные значения в вычисленной рабочей точке. Этот объект содержит те же поля как | ||||||||||||||||||
States |
| ||||||||||||||||||
Time | Time значение свойства op | ||||||||||||||||||
TerminationString | Условие завершения оптимизации, возвращенное как вектор символов. | ||||||||||||||||||
OptimizationOutput |
Результаты поиска алгоритма оптимизации, возвращенные как структура со следующими полями:
Для получения дополнительной информации об алгоритме оптимизации, см. документацию Optimization Toolbox™. |
Установившаяся рабочая точка модели, также названной равновесием или условием для обрезки, включает переменные состояния, которые не изменяются со временем.
Модель может иметь несколько установившихся рабочих точек. Например, ослабленный маятник зависания имеет две установившихся рабочих точки, в которых положение маятника не изменяется со временем. Устойчивая установившаяся рабочая точка происходит, когда маятник висит прямо вниз. Когда положение маятника отклоняется немного, маятник всегда возвращается к равновесию. Другими словами, небольшие изменения в рабочей точке не заставляют систему покидать область хорошего приближения вокруг значения равновесия.
Нестабильная установившаяся рабочая точка происходит, когда маятник указывает вверх. Пока маятник указывает точно вверх, это остается в равновесии. Однако, когда маятник отклоняется немного от этого положения, он качается вниз, и рабочая точка покидает область вокруг значения равновесия.
При использовании поиска оптимизации, чтобы вычислить рабочие точки для нелинейных систем, ваши исходные предположения для состояний и уровней на входе должны быть около желаемой рабочей точки, чтобы гарантировать сходимость.
При линеаризации модели с несколькими установившимися рабочими точками важно иметь правильную рабочую точку. Например, линеаризация модели маятника вокруг устойчивой установившейся рабочей точки производит устойчивую линейную модель, тогда как линеаризация вокруг нестабильной установившейся рабочей точки производит нестабильную линейную модель.
Можно инициализировать поиск рабочей точки в снимке состояния симуляции или ранее вычисленное использование рабочей точки initopspec
.
Линеаризуйте модель в рабочей точке op
использование linearize
.
По умолчанию, findop
использует оптимизатор graddescent-elim
. Чтобы использовать различный оптимизатор, измените значение OptimizerType
в options
использование findopOptions
.
findop
автоматически наборы эти свойства модели Simulink для оптимизации:
BufferReuse = 'off'
RTWInlineParameters = 'on'
BlockReductionOpt = 'off'
SaveFormat = 'StructureWithTime'
После того, как оптимизация завершается, Simulink восстанавливает исходные свойства модели.
Как альтернатива findop
команда, можно найти рабочие точки одним из следующих способов.
Вычислите рабочие точки с помощью Steady State Manager. Для примера смотрите, Вычисляют Рабочие точки из Технических требований Используя Steady State Manager.
Если вы вычисляете рабочую точку для линеаризации, можно найти рабочую точку и линеаризовать модель с помощью Model Linearizer. Для примера смотрите, Вычисляют Рабочие точки из Технических требований Используя Model Linearizer.
PortWidth
свойство вводов и выводов рабочей точки будет удаленоНе рекомендуемый запуск в R2021b
Ввод и вывод PortWidth
свойства рабочих точек и отчетов поиска рабочей точки будут удалены в будущем релизе. Используйте новый Nu
и Ny
свойства вместо этого.
Чтобы обновить ваш код, измените экземпляры PortWidth
к любому Nu
или Ny
как показано в следующей таблице.
Не рекомендуемый | Рекомендуемый |
---|---|
[op,report] = findop('scdplane',10); numOut = op.Outputs(1).PortWidth; numIn = report.Inputs(1).PortWidth; |
[op,report] = findop('scdplane',10); numOut = op.Outputs(1).Ny; numIn = report.Inputs(1).Nu; |
initopspec
| linearize
| findopOptions
| operspec
| addoutputspec
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.