findop
Steady-state operating point from specifications (trimming) or simulation
Syntax
描述
returns the operating point of the model that meets the specifications inop
= findop(mdl
,opspec
)opspec
. Typically, you trim the model at asteady-state operating point. The Simulink®model must be open. Ifopspec
is an array of operating points specifications,findop
returns an array of corresponding operating points.
Examples
Trim Model to Meet State Specifications
Open the Simulink model.
mdl ='watertank'; open_system(mdl)
Trim the model to find a steady-state operating point where the water tank level is10
.
Create default operating point specification object.
opspec = operspec(mdl);
Configure specifications for the first model state. The first state must be at steady state with a lower bound of0
. Provide an initial guess of2
for the state value.
opspec.States(1).SteadyState = 1; opspec.States(1).x = 2; opspec.States(1).Min = 0;
Configure the second model state as a known state with a value of10
.
opspec.States(2).Known = 1; opspec.States(2).x = 10;
Find the operating point that meets these specifications.
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: ---------- Min x Max dxMin dx dxMax ______ ______ ______ ______ ______ ______ (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 ----------
Batch Trim Simulink Model for Parameter Variation
Open the Simulink model.
mdl ='watertank'; open_system(mdl)
Vary parametersA
andb
within 10% of their nominal values, and create a 3-by-4 parameter grid.
[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...linspace(0.9*b,1.1*b,4));
Create a parameter structure array, specifying the name and grid points for each parameter.
params(1).Name ='A'; params(1).Value = A_grid; params(2).Name ='b'; params(2).Value = b_grid;
Create a default operating point specification for the model.
opspec = operspec(mdl);
削减模型使用指定的操作点specification and parameter grid.
opt = findopOptions('DisplayReport','off'); op = findop(mdl,opspec,params,opt);
op
is a 3-by-4 array of operating point objects that correspond to the specified parameter grid points.
Trim Model Using Specified Optimizer Type
Open the Simulink model.
mdl ='watertank'; open_system(mdl)
Create a default operating point specification object.
opspec = operspec(mdl);
Create an option set that sets the optimizer type to gradient descent and suppresses the search report display.
opt = findopOptions('OptimizerType','graddescent','DisplayReport','off');
Trim the model using the specified option set.
op = findop(mdl,opspec,opt);
Obtain Operating Point Search Report
Open the Simulink model.
mdl ='watertank'; open_system(mdl)
Create default operating point specification object.
opspec = operspec(mdl);
Configure specifications for the first model state.
opspec.States(1).SteadyState = 1; opspec.States(1).x = 2; opspec.States(1).Min = 0;
Configure specifications for the second model state.
opspec.States(2).Known = 1; opspec.States(2).x = 10;
Find the operating point that meets these specifications, and return the operating point search report. Create an option set to suppress the search report display.
opt = findopOptions('DisplayReport',false); [op,opreport] = findop(mdl,opspec,opt);
opreport
describes how closely the optimization algorithm met the specifications at the end of the operating point search.
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: ---------- Min x Max dxMin dx dxMax ______ ______ ______ ______ ______ ______ (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
is the time derivative for each state. Since alldx
values are zero, the operating point is at steady state.
Extract Operating Points at Simulation Snapshots
Open the Simulink model.
mdl ='magball'; open_system(mdl)
Simulate the model, and extract operating points at10
and20
time units.
op = findop(mdl,[10,20]);
op
is a column vector of operating points, with one element for each snapshot time.
Display the first operating point.
op(1)
ans = Operating point for the Model magball. (Time-Varying Components Evaluated at time t=10) States: ---------- x __________ (1.) magball/Controller/PID Controller/Filter/Cont. Filter/Filter 5.4732e-07 (2.) magball/Controller/PID Controller/Integrator/Continuous/Integrator 14.0071 (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 ----------
Vary Parameters and Extract Operating Points at Simulation Snapshots
Open Simulink model.
mdl ='watertank'; open_system(mdl)
Specify parameter values. The parameter grids are 5-by-4 arrays.
[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;
Simulate the model and extract operating points at0
,5
, and10
time units.
op = findop(mdl,[0 5 10],params);
findop
simulates the model for each parameter value combination, and extracts operating points at the specified simulation times.
op
is a 3-by-5-by-4 array of operating point objects.
size(op)
ans = 3 5 4
Input Arguments
mdl
—Simulink model name
character vector|string
Simulink model name, specified as a character vector or string. The model must be in the current working folder or on the MATLAB®path.
opspec
—Operating point specifications
OperatingSpec
object|array ofOperatingSpec
对象
Operating point specifications for trimming the model, specified as anOperatingSpec
object or an array ofOperatingSpec
对象created using theoperspec
function.
Ifopspec
is an array,findop
returns an array of corresponding operating points using a single model compilation.
param
—Parameter samples
structure|structure array
Parameter samples for trimming, specified as one of the following:
Structure — Vary the value of a single parameter by specifying
param
作为一个方法e with the following fields:Name
— Parameter name, specified as a character vector or string. You can specify any model parameter that is a variable in the model workspace, the MATLAB workspace, or a data dictionary. If the variable used by the model is not a scalar variable, specify the parameter name as an expression that resolves to a numeric scalar value. For example, to use the first element of vectorV
as a parameter, use:param.Name ='V(1)';
Value
— Parameter sample values, specified as a double array.
For example, vary the value of parameter
A
in the 10% range:param.Name ='A'; param.Value = linspace(0.9*A,1.1*A,3);
Structure array — Vary the value of multiple parameters. For example, vary the values of parameters
A
andb
in the 10% range:[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;
When you specify parameter value variations,findop
batch trims the model for each parameter value combination, and returns an array of corresponding operating points. Ifparam
specifies tunable parameters only, then the software batch trims the model using a single compilation.
If you specifyopspec
as a singleoperspec
object and the parameter values inparam
produce states that conflict with known states inopspec
,findop
trims the model using the specifications inopspec
. To trim the model at state values derived from the parameter values, specifyopspec
as an array of correspondingoperspec
对象. For an example, seeBatch Trim Simulink Model for Parameter Variation.
options
—Trimming options
findopOptions
option set
Trimming options, specified as afindopOptions
option set.
tsnapshot
—Simulation snapshot times
scalar|vector
Simulation snapshot times at which to extract the operating point of the model, specified as a scalar for a single snapshot or a vector for multiple snapshots.findop
simulates the model and computes an operating point for the state of the model at each snapshot time.
Output Arguments
op
— Operating point
OperatingPoint
object | array ofOperatingPoint
对象
Operating point, returned as anOperatingPoint
object or an array ofOperatingPoint
对象. The dimensions ofop
depend on the specified parameter variations and either the operating-point specifications or the simulation snapshot time.
Parameter Variation | Find operating point for... | Resultingop Dimensions |
---|---|---|
No parameter variation | Single operating-point specification, specified byopspec |
single operating-point object |
Single snapshot time, specified bytsnapshot |
||
N1-by-... -by-Nmarray of operating-point specifications, specified byopspec |
N1-by-... -by-Nm |
|
Nssnapshots, specified bytsnapshot |
Column vector of lengthNs | |
N1-by-... -by-Nmparameter grid, specified byparam |
Single operating-point specification, specified byopspec |
N1-by-... -by-Nm |
Single snapshot time, specified bytsnapshot |
||
N1-by-... -by-Nmarray of operating-point specifications, specified byopspec |
||
Nssnapshots, specified bytsnapshot |
Ns-by-N1-by-... -by-Nm. |
For example, suppose:
opspec
is a single operating-point specification object andparam
specifies a 3-by-4-by-2 parameter grid. In this case,op
is a 3-by-4-by-2 array of operating points.tsnapshot
is a scalar andparam
specifies a 5-by-6 parameter grid. In this case,op
is a 1-by-5-by-6 array of operating points.tsnapshot
is a row vector with three elements andparam
specifies a 5-by-6 parameter grid. In this case,op
is a 3-by-5-by-6 array of operating points.
Each operating-point object has the following properties:
Property | 描述 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Model |
Simulink model name, returned as a character vector. | ||||||||||||||||||
States |
State operating point, returned as a vector of state objects. Each entry in For a list of supported states for operating point objects, seeSimulink Model States Included in Operating Point Object. Note If the block has multiple named continuous states, Each state object has the following fields:
|
||||||||||||||||||
Inputs |
Input level at the operating point, returned as a vector of input objects. Each entry in Each input object has the following fields:
|
||||||||||||||||||
Time |
Times at which any time-varying functions in the model are evaluated, returned as a vector. |
||||||||||||||||||
Version |
Object version number |
You can edit the properties ofop
using dot notation or theset
function.
opreport
— Operating point search report
OperatingReport
object | array ofOperatingReport
对象
Operating point search report, returned as anOperatingReport
object. Ifop
is an array ofOperatingPoint
对象, thenopreport
is an array of correspondingOperatingReport
对象.
This report displays automatically, even when you suppress the output using a semicolon. To hide the report, set theDisplayReport
field inoptions
to'off'
.
Each operating point search report has the following properties:
Property | 描述 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Model |
|
||||||||||||||||||
Inputs |
|
||||||||||||||||||
Outputs |
Output values at the computed operating point. This object contains the same fields as the |
||||||||||||||||||
States |
|
||||||||||||||||||
Time |
Time property value ofop |
||||||||||||||||||
TerminationString |
Optimization termination condition, returned as a character vector. | ||||||||||||||||||
OptimizationOutput |
Optimization algorithm search results, returned as a structure with the following fields:
For more information about the optimization algorithm, see the Optimization Toolbox™ documentation. |
More About
Steady-State Operating Point (Trim Condition)
Asteady-state operating point一个模型,也称为一个平衡或trimcondition, includes state variables that do not change with time.
A model can have several steady-state operating points. For example, a hanging damped pendulum has two steady-state operating points at which the pendulum position does not change with time. Astable steady-state operating pointoccurs when a pendulum hangs straight down. When the pendulum position deviates slightly, the pendulum always returns to equilibrium. In other words, small changes in the operating point do not cause the system to leave the region of good approximation around the equilibrium value.
Anunstable steady-state operating pointoccurs when a pendulum points upward. As long as the pendulum pointsexactlyupward, it remains in equilibrium. However, when the pendulum deviates slightly from this position, it swings downward and the operating point leaves the region around the equilibrium value.
When using optimization search to compute operating points for nonlinear systems, your initial guesses for the states and input levels must be near the desired operating point to ensure convergence.
When linearizing a model with multiple steady-state operating points, it is important to have the right operating point. For example, linearizing a pendulum model around the stable steady-state operating point produces a stable linear model, whereas linearizing around the unstable steady-state operating point produces an unstable linear model.
Tips
You can initialize an operating point search at a simulation snapshot or a previously computed operating point using
initopspec
.
Algorithms
By default,findop
uses the optimizergraddescent-elim
. To use a different optimizer, change the value ofOptimizerType
inoptions
usingfindopOptions
.
findop
automatically sets these Simulink model properties for optimization:
BufferReuse = 'off'
RTWInlineParameters = 'on'
BlockReductionOpt = 'off'
SaveFormat = 'StructureWithTime'
After the optimization completes, Simulink restores the original model properties.
Alternative Functionality
App
As an alternative to thefindop
command, you can find operating points in one of the following ways.
Compute operating points using theSteady State Manager. For an example, seeCompute Operating Points from Specifications Using Steady State Manager.
If you are computing an operating point for linearization, you can find the operating point and linearize the model using theModel Linearizer. For an example, seeCompute Operating Points from Specifications Using Model Linearizer.
版本历史
Introduced before R2006aR2021b:PortWidth
property of operating point inputs and outputs will be removed
The input and outputPortWidth
properties of operating points and operating point search reports will be removed in a future release. Use the newNu
andNy
properties instead.
To update your code, change instances ofPortWidth
to eitherNu
orNy
as shown in the following table.
Not Recommended | Recommended |
---|---|
[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; |
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select:.
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina(Español)
- Canada(English)
- United States(English)
Europe
- Belgium(English)
- Denmark(English)
- Deutschland(Deutsch)
- España(Español)
- Finland(English)
- France(Français)
- Ireland(English)
- Italia(Italiano)
- Luxembourg(English)
- Netherlands(English)
- Norway(English)
- Österreich(Deutsch)
- Portugal(English)
- Sweden(English)
- Switzerland
- United Kingdom(English)