# systune

Tune fixed-structure control systems modeled in MATLAB

## Syntax

## Description

`systune`

tunes fixed-structure control systems subject to both
soft and hard design goals. `systune`

can tune multiple fixed-order,
fixed-structure control elements distributed over one or more feedback loops. For an overview of
the tuning workflow, see Automated Tuning Workflow.

This command tunes control systems modeled in MATLAB^{®}. For tuning Simulink^{®} models, use `slTuner`

(Simulink Control Design) to create an interface to your
Simulink model. You can then tune the control system with `systune`

(Simulink Control Design) for `slTuner`

.

`[`

tunes the free parameters of the control system model, `CL`

,`fSoft`

]
= systune(`CL0`

,`SoftReqs`

)`CL0`

, to best meet the
soft tuning requirements. The best achieved soft constraint values are returned as
`fSoft`

. For robust tuning against real parameter uncertainty, use a control
system model with uncertain real parameters. For robust tuning against a set of plant models,
use an array of control system models `CL0`

. (See Input Arguments.)

## Examples

## Input Arguments

## Output Arguments

## Algorithms

*x* is the vector of tunable parameters in
the control system to tune. `systune`

converts each
soft and hard tuning requirement `SoftReqs(i)`

and `HardReqs(j)`

into
normalized values *f _{i}*(

*x*) and

*g*(

_{j}*x*), respectively.

`systune`

then solves the constrained
minimization problem:Minimize $$\underset{i}{\mathrm{max}}{f}_{i}\left(x\right)$$ subject to $$\underset{j}{\mathrm{max}}{g}_{j}\left(x\right)<1$$, for $${x}_{\mathrm{min}}<x<{x}_{\mathrm{max}}$$.

*x _{min}* and

*x*are the minimum and maximum values of the free parameters of the control system.

_{max}When you use both soft and hard tuning goals, the software approaches this optimization problem by solving a sequence of unconstrained subproblems of the form:

$$\underset{x}{\mathrm{min}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\mathrm{max}\left(\alpha f\left(x\right),g\left(x\right)\right).$$

The software adjusts the multiplier *α* so
that the solution of the subproblems converges to the solution of
the original constrained optimization problem.

`systune`

returns the control system with parameters tuned
to the values that best solve the minimization problem. `systune`

also
returns the best achieved values of *f _{i}*(

*x*) and

*g*(

_{j}*x*), as

`fSoft`

and `gHard`

respectively.For information about the functions *f _{i}*(

*x*) and

*g*(

_{j}*x*) for each type of constraint, see the reference pages for each

`TuningGoal`

requirement
object.`systune`

uses the nonsmooth optimization algorithms described in [1],[2],[3],[4]

`systune`

computes the *H _{∞}*
norm using the algorithm of [5]and structure-preserving eigensolvers from the SLICOT library. For more information about the
SLICOT library, see https://github.com/SLICOT.

## Alternative Functionality

### App

The Control System Tuner app provides a graphical interface to control system tuning.

## References

[1] Apkarian, P. and D. Noll, "Nonsmooth H-infinity Synthesis,"
*IEEE Transactions on Automatic Control*, Vol. 51, No. 1, (2006), pp.
71–86.

[2] Apkarian, P. and D. Noll, "Nonsmooth Optimization for Multiband
Frequency-Domain Control Design," *Automatica*, 43 (2007), pp.
724–731.

[3] Apkarian, P., P. Gahinet, and C. Buhr, "Multi-model, multi-objective
tuning of fixed-structure controllers," *Proceedings ECC* (2014), pp.
856–861.

[4] Apkarian, P., M.-N. Dao, and D. Noll, "Parametric Robust Structured
Control Design," *IEEE Transactions on Automatic Control*,
2015.

[5] Bruinsma, N.A., and M. Steinbuch. "A Fast Algorithm to Compute the
H_{∞} Norm of a Transfer Function Matrix." *Systems &
Control Letters*, 14, no.4 (April 1990): 287–93.

## Extended Capabilities

## Version History

**Introduced in R2016a**

## See Also

`systuneOptions`

| `viewGoal`

| `genss`

| `slTuner`

(Simulink Control Design) | `systune (for slTuner)`

(Simulink Control Design) | `looptune`

| `looptune (for slTuner)`

(Simulink Control Design) | `AnalysisPoint`

| `TuningGoal.Tracking`

| `TuningGoal.Gain`

| `TuningGoal.Margins`