Установившаяся рабочая точка от спецификаций (обрезка) или симуляции
возвращает рабочую точку модели, которая соответствует спецификациям в 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: --------------------------------- 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
mdl
- имя модели SimulinkИмя модели Simulink, заданное как вектор символов или строка. Модель должна быть в текущей рабочей папке или в MATLAB® путь.
opspec
- спецификации к рабочей точкеoperspec
объект | массив из operspec
объектыСпецификации рабочей точки для обрезки модели, заданные как operspec
объект или массив из operspec
объекты.
Если opspec
- массив, findop
возвращает массив соответствующих рабочих точек, используя одну компиляцию модели.
param
- выборки параметровВыборки параметров для обрезки, заданные как один из следующих:
Структура - Изменяйте значение одного параметра путем определения 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 для Изменения параметра.
options
- Опции обрезкиfindopOptions
набор опцийОпции обрезки, заданные как findopOptions
набор опций.
tsnapshot
- Время создания снимка симуляцииВремя моментального снимка симуляции, при котором можно извлечь рабочую точку модели, заданную в виде скаляра для одного моментального снимка или вектора для нескольких моментальных снимков. findop
моделирует модель и вычисляет рабочую точку для состояния модели во время моментального снимка.
op
- Рабочая точкаРабочая точка, возвращенная как объект рабочей точки или массив объектов рабочей точки. Размерности op
зависят от заданных изменений параметра и либо от спецификаций рабочей точки, либо от времени моментального снимка симуляции.
Изменение параметра | Найдите рабочую точку для... | Результирующие op Размерности |
---|---|---|
Без изменения параметра | Спецификация одной рабочей точки, заданная opspec | объект с одной рабочей точкой |
Время одиночного снимка, заданное tsnapshot | ||
N1 -by- ... -by - Nm массив спецификаций рабочих точек, заданный opspec | N1 -by- ... -by- Nm | |
Ns моментальные снимки, заданные tsnapshot | Вектор-столбец длины Ns | |
N1 -by- ... -by - Nm сетка параметра, заданная param | Спецификация одной рабочей точки, заданная opspec | N1 -by- ... -by- Nm |
Время одиночного снимка, заданное tsnapshot | ||
N1 -by- ... -by - Nm массив спецификаций рабочих точек, заданный opspec | ||
Ns моментальные снимки, заданные tsnapshot | Ns -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 | Рабочая точка состояния, возвращенная как вектор объектов состояния. Каждая запись в Список поддерживаемых состояний для объектов рабочих точек см. в разделе Состояния модели Simulink, включенные в Объект рабочей точки. Примечание Если блок имеет несколько именованных непрерывных состояний, Каждый объект состояния имеет следующие поля:
| ||||||||||||||||||
Inputs | Вход уровень в рабочей точке, возвращенный как вектор входа объектов. Каждая запись в Каждый входной объект имеет следующие поля:
| ||||||||||||||||||
Time | Время, в которое оцениваются любые изменяющиеся во времени функции в модели, возвращается как вектор. | ||||||||||||||||||
Version | Номер версии объекта |
Можно редактировать свойства op
использование записи через точку или set
функция.
opreport
- Отчет о поиске рабочей точкиОтчет о поиске рабочей точки, возвращенный как объект отчета о поиске рабочей точки. Если op
- массив объектов рабочих точек, затем opreport
- массив соответствующих отчетов о поиске.
Этот отчет отображается автоматически, даже когда вы подавляете выход с помощью точки с запятой. Чтобы скрыть отчет, установите 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».
addoutputspec
| findopOptions
| initopspec
| linearize
| operspec
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.