Package: TuningGoal
Sector bound for control system tuning
A conic sector bound is a restriction on the output trajectories of a system. If for all nonzero input trajectories u(t), the output trajectory z(t) = (Hu)(t) of a linear system H satisfies:
$${\int}_{0}^{T}z{\left(t\right)}^{\text{T}}Q\text{\hspace{0.17em}}z\left(t\right)dt}<0,$$
for all T ≥ 0, then the output trajectories of H lie in the conic sector described by the symmetric indefinite matrix Q. Selecting different Q matrices imposes different conditions on the system response.
When tuning a control system with systune
,
use TuningGoal.ConicSector
to restrict the output
trajectories of the response between specified inputs and outputs
to a specified sector. For more information about sector bounds, see About Sector Bounds and Sector Indices.
Req = TuningGoal.ConicSector(
creates
a tuning goal for restricting the response H(s)
from inputs inputname
,outputname
,Q
)inputname
to outputs outputname
to
the conic sector specified by the symmetric matrix Q
.
The tuning goal constrains H such that its trajectories z(t)
= (Hu)(t) satisfy:
$${\int}_{0}^{T}z{\left(t\right)}^{\text{T}}Q\text{\hspace{0.17em}}z\left(t\right)dt}<0,$$
for all T ≥ 0.
(See About Sector Bounds and Sector Indices.) The matrix Q
must
have as many negative eigenvalues as there are inputs in H.
To specify frequencydependent sector bounds, set Q
to
an LTI model that satisfies Q(s)^{T} = Q(–s).

Input signals for the tuning goal, specified as a character vector or, for multipleinput tuning goals, a cell array of character vectors.
For more information about analysis points in control system models, see Mark Signals of Interest for Control System Analysis and Design. 

Output signals for the tuning goal, specified as a character vector or, for multipleoutput tuning goals, a cell array of character vectors.
For more information about analysis points in control system models, see Mark Signals of Interest for Control System Analysis and Design. 

Sector geometry, specified as:
For more information, see About Sector Bounds and Sector Indices. 

Sector geometry, specified as a matrix or an LTI model. The 

Regularization parameter, specified as a real nonnegative scalar value. Given the indefinite factorization of the sector matrix, $$Q={W}_{1}{W}_{1}^{\text{T}}{W}_{2}{W}_{2}^{\text{T}},\text{\hspace{1em}}{W}_{1}^{\text{T}}{W}_{2}=0$$ the sector bound $$H{\left(j\omega \right)}^{\text{T}}Q\text{\hspace{0.17em}}H\left(j\omega \right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}<\text{\hspace{0.17em}}\text{\hspace{0.17em}}0$$ is equivalent to $${H}_{1}{\left(j\omega \right)}^{\text{H}}{H}_{1}\left(j\omega \right)<{H}_{2}{\left(j\omega \right)}^{\text{H}}{H}_{2}\left(j\omega \right),$$ where $${H}_{1}={W}_{1}^{\text{T}}H$$, $${H}_{2}={W}_{2}^{\text{T}}H$$, and (•)^{H} denotes the Hermitian transpose. Enforcing this condition might become numerically challenging when other tuning goals drive both H_{1}(jω) and H_{2}(jω) to zero at some frequencies. This condition is equivalent to controlling the sign of a 0/0 expression, which is intractable in the presence of rounding errors. To avoid this condition, you can regularize the sector bound to $$H{\left(j\omega \right)}^{\text{T}}Q\text{\hspace{0.17em}}H\left(j\omega \right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}<\text{\hspace{0.17em}}\text{\hspace{0.17em}}{\epsilon}^{2}I,$$ or equivalently, $${H}_{1}{\left(j\omega \right)}^{\text{H}}{H}_{1}\left(j\omega \right)+{\epsilon}^{2}I<{H}_{2}{\left(j\omega \right)}^{\text{H}}{H}_{2}\left(j\omega \right).$$ This regularization prevents H_{2}(jω) from
becoming singular, and helps keep evaluation of the tuning goal numerically
tractable. Use the Req.Regularization = 1e3; Default: 0 

Frequency band in which tuning goal is enforced, specified as
a row vector of the form Set the Req.Focus = [1,100]; Default: 

Input signal names, specified as a cell array of character vectors.
The input signal names specify the inputs of the constrained response,
initially populated by the 

Output signal names, specified as a cell array of character
vectors. The output signal names specify the outputs of the constrained
response, initially populated by the 

Models to which the tuning goal applies, specified as a vector of indices. Use the Req.Models = 2:4; When Default: 

Feedback loops to open when evaluating the tuning goal, specified as a cell array of character vectors that identify loopopening locations. The tuning goal is evaluated against the openloop configuration created by opening feedback loops at the locations you identify. If you are using the tuning goal to tune a Simulink model
of a control system, then If you are using the tuning goal to tune a generalized statespace
( For example, if Default: 

Name of the tuning goal, specified as a character vector. For example, if Req.Name = 'LoopReq'; Default: 
The conic sector tuning goal requires that $${W}_{2}^{\text{T}}H\left(s\right)$$ be square and minimum phase, where H(s) is the transfer function between the specified inputs and outputs, and W_{2} spans the negative invariant subspace of the sector matrix, Q:
$$Q={W}_{1}{W}_{1}^{\text{T}}{W}_{2}{W}_{2}^{\text{T}},\text{\hspace{1em}}{W}_{1}^{\text{T}}{W}_{2}=0$$
(See Algorithms.) This means
that the stabilized dynamics for this goal are not the poles of H,
but rather the transmission zeros of $${W}_{2}^{\text{T}}H\left(s\right)$$.
The MinDecay
and MaxRadius
options
of systuneOptions
control the bounds on these
implicitly constrained dynamics. If the optimization fails to meet
the default bounds, or if the default bounds conflict with other requirements,
use systuneOptions
to change
these defaults.
Let
$$Q={W}_{1}{W}_{1}^{\text{T}}{W}_{2}{W}_{2}^{\text{T}},\text{\hspace{1em}}{W}_{1}^{\text{T}}{W}_{2}=0$$
be an indefinite factorization of Q. When $${W}_{2}^{\text{T}}H\left(s\right)$$ is square and minimum phase, then the timedomain sector bound on trajectories z(t) = Hu(t),
$${\int}_{0}^{T}z{\left(t\right)}^{\text{T}}Q\text{\hspace{0.17em}}z\left(t\right)dt}<0,$$
is equivalent to the frequencydomain sector condition,
$$H{\left(j\omega \right)}^{\text{T}}Q\text{\hspace{0.17em}}H\left(j\omega \right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}<\text{\hspace{0.17em}}\text{\hspace{0.17em}}0$$
for all frequencies. The TuningGoal.ConicSector
goal
uses this equivalence to convert the timedomain characterization
into a frequencydomain condition that systune
can
handle in the same way it handles gain constraints. To secure this
equivalence, TuningGoal.ConicSector
also makes $${W}_{2}^{\text{T}}H\left(s\right)$$ minimum
phase by making all its zeros stable.
For sector bounds, the Rindex plays the same role as the peak gain does for gain constraints (see About Sector Bounds and Sector Indices). The condition
$$H{\left(j\omega \right)}^{\text{T}}Q\text{\hspace{0.17em}}H\left(j\omega \right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}<\text{\hspace{0.17em}}\text{\hspace{0.17em}}0$$
is satisfied at all frequencies if and only if the Rindex
is less than one. The viewGoal
plot
for TuningGoal.ConicSector
shows the Rindex
value as a function of frequency (see sectorplot
).
When you tune a control system using a TuningGoal
object
to specify a tuning goal, the software converts the tuning goal into
a normalized scalar value f(x),
where x is the vector of free (tunable) parameters
in the control system. The software then adjusts the parameter values
to minimize f(x) or to drive f(x)
below 1 if the tuning goal is a hard constraint.
For the sector bound
$$H{\left(j\omega \right)}^{\text{T}}Q\text{\hspace{0.17em}}H\left(j\omega \right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}<\text{\hspace{0.17em}}\text{\hspace{0.17em}}0$$
TuningGoal.ConicSector
uses the objective function
given by:
$$f\left(x\right)=\frac{R}{1+R/{R}_{\mathrm{max}}},\text{\hspace{1em}}{R}_{\mathrm{max}}={10}^{6}.$$
R is the sectorbound Rindex
(see getSectorIndex
for details).
The dynamics of H affected by the minimumphase
condition are the stabilized dynamics for this
tuning goal. The MinDecay
and MaxRadius
options
of systuneOptions
control the bounds on these
implicitly constrained dynamics. If the optimization fails to meet
the default bounds, or if the default bounds conflict with other requirements,
use systuneOptions
to change
these defaults.
evalGoal
 getSectorIndex
 slTuner
 systune
 systune
(for slTuner)
 viewGoal