Compute effect of controller tuning weights on performance
[J,sens] = sensitivity(MPCobj,PerfFunc,PerfWeights,Tstop,r,v,simopt,utarget)
[J,sens] = sensitivity(MPCobj,'perf_fun',param1,param2,...)
The sensitivity
function is a controller tuning aid.
J
specifies a scalar performance metric.
sensitivity
computes J
and its partial
derivatives with respect to the controller tuning weights. These
sensitivities suggest tuning weight adjustments that should
improve performance; that is, reduce J
.
[J,sens] = sensitivity(MPCobj,PerfFunc,PerfWeights,Tstop,r,v,simopt,utarget)
calculates the scalar performance metric, J
, and sensitivities,
sens
, for the controller defined by the MPC controller object
MPCobj
.
PerfFunc
must be one of the following:
'ISE'
(integral squared error) for which the performance metric
is
'IAE'
(integral absolute error) for which the performance metric
is
'ITSE'
(integral of time-weighted squared error) for which the
performance metric is
'ITAE'
(integral of time-weighted absolute error) for which the
performance metric is
In the above expressions ny is the number of controlled outputs and nu is the number of manipulated variables. eyij is the difference between output j and its setpoint (or reference) value at time interval i. euij is the difference between manipulated variable j and its target at time interval i.
The w parameters are nonnegative performance weights defined by
the structure PerfWeights
, which contains the following
fields:
OutputVariables
—
ny element row vector that
contains the values
ManipulatedVariables
—
nu element row vector that
contains the values
ManipulatedVariablesRate
—
nu element row vector that
contains the values
If PerfWeights
is unspecified, it defaults to the corresponding
weights in MPCobj
. In general, however, the performance weights and
those used in the controller have different purposes and should be defined
accordingly.
Inputs Tstop
, r
, v
, and
simopt
define the simulation scenario used to evaluate
performance. See sim
for details.
Tstop
is the integer number of controller sampling intervals to be
simulated. The final time for the simulations will be Tstop × Δt, where Δt is the controller sampling interval
specified in MPCobj
.
The optional input utarget
is a vector of
nu manipulated variable targets. Their
defaults are the nominal values of the manipulated variables.
Δuij is the change in manipulated
variable j and its target at time interval
i.
The structure variable sens
contains the computed sensitivities
(partial derivatives of J
with respect to the
MPCobj
tuning weights.) Its fields are:
OutputVariables
—
ny element row vector of
sensitivities with respect to
MPCobj.Weights.OutputVariables
ManipulatedVariables
—
nu element row vector of
sensitivities with respect to
MPCobj.Weights.ManipulatedVariables
ManipulatedVariablesRate
—
nu element row vector of
sensitivities with respect to
MPCobj.Weights.ManipulatedVariablesRate
For more information on the tuning weights controller property, see mpc
.
[J,sens] = sensitivity(MPCobj,'perf_fun',param1,param2,...)
employs a performance function 'perf_fun'
to define
J
. Its function definition must be in the form
function J = perf_fun(MPCobj, param1, param2, ...)
That is, it must compute J
for the given controller and optional
parameters param1
, param2
, ... and it must be on
the MATLAB® path.
Note
While performing the sensitivity analysis, the software ignores time-varying, nondiagonal, and ECR slack variable weights.