Main Content

Control Design in Simulink

Specify time-domain and frequency-domain requirements, tune controller parameters such as PID gains

Simulink® Design Optimization™ software provides several ways to specify design requirements. You can use the Check blocks to specify typical control design requirements such as reference tracking and satisfying signal bounds. You can then optimize the controller parameters in your model to meet these design requirements using the Response Optimizer app or at the command line.


Response OptimizerOptimize model response to satisfy design requirements, test model robustness


Check Against ReferenceCheck that model signal tracks reference signal during simulation
Check Custom BoundsCheck that model signal satisfies bounds during simulation
Check Step Response CharacteristicsCheck that model signal satisfies step response bounds during simulation


expand all

Create Simulation Scenario

sdo.SimulationTestSimulation scenario description
setupConfigure simulation scenario and model for optimization and evaluation (Since R2024a)
restoreRestore simulation scenario and model to their previous state (Since R2024a)

Specify Time-Domain Requirements

sdo.requirements.SignalBoundPiecewise-linear amplitude bound
sdo.requirements.SignalTrackingReference signal to track
sdo.requirements.StepResponseEnvelopeStep response bound on signal
sdo.requirements.PhasePlaneEllipseImpose elliptic bound on phase plane trajectory of two signals
sdo.requirements.PhasePlaneRegionImpose region bound on phase plane trajectory of two signals

Specify Variable Requirements

sdo.requirements.FunctionMatchingImpose function matching constraint on variable
sdo.requirements.MonotonicVariableImpose monotonic constraint on variable
sdo.requirements.RelationalConstraintImpose relational constraint on pair of variables
sdo.requirements.SmoothnessConstraintImpose bounds on gradient magnitude of variable

Specify Frequency-Domain Requirements

sdo.requirements.BodeMagnitudeBode magnitude bound
sdo.requirements.ClosedLoopPeakGain Closed loop peak gain bound
sdo.requirements.GainPhaseMarginGain and phase margin bounds
sdo.requirements.OpenLoopGainPhaseNichols response bound
sdo.requirements.PZDampingRatioDamping ratio bound
sdo.requirements.PZNaturalFrequencyNatural frequency bound
sdo.requirements.PZSettlingTimeSettling time bound
sdo.requirements.SingularValueSingular value bound
sdo.optimizeSolve design optimization problem
sdo.OptimizeOptionsOptimization option set for sdo.optimize function
sdo.getParameterFromModelGet design variables for optimization
sdo.setValueInModelSet design variable value in model
sdo.getValueFromModelGet design variable value from model
sdo.getModelDependenciesList of model file and path dependencies
evalRequirementEvaluate design requirement
getboundsGet bounds specified in Check block
sdo.setCheckBlockEnabledEnable or disable all check blocks in model


Optimization Basics

Design Requirements

Speed Up Optimization

Response Optimizer Tasks

Code Generation


Optimization Does Not Make Progress

What to do if the optimization stalls or no changes are seen in parameters values.

Optimization Convergence

What to do if the optimization does not satisfy design requirements or takes a long time to converge near a solution, or if the system response becomes unstable.

Optimization Speed and Parallel Computing

What to do if no speedup is seen with parallel computing, if the results are different, or if the optimization stalls.

Undesirable Parameter Values

What to do if optimization gives undesirable parameter values or violates bounds on values.

Reverting to Initial Parameter Values

How to quit optimizing and revert to original values.