# hinfsynOptions

Option set for `hinfsyn`

and
`mixsyn`

## Description

## Examples

### Specify Algorithm and Display for H-Infinity Synthesis

Use the LMI-based algorithm to compute an ${\mathit{H}}_{\infty}$-optimal controller for a plant with one control signal and two measurement signals. Turn on the display that shows the progress of the computation. Use `hinfsynOptions`

to specify these algorithm options.

Load the plant and specify the numbers of measurements and controls.

load hinfsynExData P ncont = 1; nmeas = 2;

Create an options set for `hinfsyn`

that specifies the LMI-based algorithm and turns on the display.

opts = hinfsynOptions('Method','LMI','Display','on');

Alternatively, start with the default options set, and use dot notation to change option values.

opts = hinfsynOptions; opts.Method = 'LMI'; opts.Display = 'on';

Compute the controller.

[K,CL,gamma] = hinfsyn(P,nmeas,ncont,opts);

Minimization of gamma: Solver for linear objective minimization under LMI constraints Iterations : Best objective value so far 1 2 223.728733 3 138.078240 4 138.078240 5 74.644885 6 48.270221 7 48.270221 8 48.270221 9 19.665676 10 19.665676 11 11.607238 12 11.607238 13 11.607238 14 4.067958 15 4.067958 16 4.067958 17 2.154349 18 2.154349 19 2.154349 20 1.579564 21 1.579564 22 1.579564 23 1.236726 24 1.236726 25 1.236726 26 0.993342 27 0.993342 28 0.949318 29 0.949318 30 0.949318 31 0.945762 32 0.944063 33 0.941246 34 0.941246 35 0.940604 *** new lower bound: 0.931668 Result: feasible solution of required accuracy best objective value: 0.940604 guaranteed absolute accuracy: 8.94e-03 f-radius saturation: 0.404% of R = 1.00e+08 Optimal Hinf performance: 9.397e-01

## Input Arguments

### Name-Value Arguments

Specify optional pairs of arguments as
`Name1=Value1,...,NameN=ValueN`

, where `Name`

is
the argument name and `Value`

is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.

*
Before R2021a, use commas to separate each name and value, and enclose*
`Name`

*in quotes.*

**Example: **`'Display','on','RelTol',0.05`

**General Options**

`Display`

— Display progress and generate report

`'off'`

(default) | `'on'`

Display optimization progress and generate report in the command window, specified
as the comma-separated pair consisting of `'Display'`

and
`'on'`

or `'off'`

. The contents of the display
depend on the value of the `'Method'`

option.

For `'Method' = 'RIC'`

, the display shows the range of
performance targets (`gamma`

values) tested. For each
`gamma`

, the display shows:

The smallest eigenvalues of the normalized Riccati solutions

*X*=*X*_{∞}/*γ*and*Y*=*Y*_{∞}/*γ*The spectral radius

`rho(XY) = max(abs(eig(XY)))`

A pass/fail (

`p/f`

) flag indicating whether that`gamma`

value satisfies the conditions*X*≥ 0,*Y*≥ 0, and`rho(XY)`

< 1The best achieved

`gamma`

performance value

For more information about the displayed information, see the Algorithms section
of `hinfsyn`

.

For `'Method' = 'LMI'`

, the display shows the best achieved
`gamma`

value for each iteration of the optimization problem. It
also displays a report of the best achieved value and other parameters of the
computation.

**Example: **`opts = hinfsynOptions('Display','on')`

creates an option
set that turns the progress display on.

`Method`

— Optimization algorithm

`'RIC'`

(default) | `'LMI'`

Optimization algorithm that `hinfsyn`

or
`mixsyn`

uses to optimize closed-loop performance, specified as
the comma-separated pair consisting of `'Method'`

and one of the
following:

`'RIC'`

— Riccati-based algorithm. The Riccati method is fastest, but cannot handle singular problems without first adding extra disturbances and errors. This process is called*regularization*, and is performed automatically by`hinfsyn`

and`mixsyn`

unless you set the`'Regularize'`

option to`'off'`

. With regularization, this method works well for most problems.When

`'Method' = 'RIC'`

, the additional options listed under Riccati Method Options are available.`'LMI'`

— LMI-based algorithm. This method requires no regularization, but is computationally more intensive than the Riccati method.When

`'Method' = 'LMI'`

, the additional options listed under LMI Method Options are available.`'MAXE'`

— Maximum-entropy algorithm.When

`'Method' = 'MAXE'`

, the additional options listed under Maximum-Entropy Method Options are available.

For more information about how these algorithms work, see the Algorithms section
of `hinfsyn`

.

**Example: **`opts = hinfsynOptions('Mathod','LMI')`

creates an option
set that specifies the LMI-based optimization algorithm.

`RelTol`

— Relative accuracy on optimal *H*_{∞} performance

0.01 (default) | positive scalar

Relative accuracy on the optimal *H*_{∞}
performance, specified as the comma-separated pair consisting of
`'RelTol'`

and a positive scalar value. The algorithm stops testing
*γ* values when the relative difference between the last failing
value and last passing value is less than `RelTol`

.

**Example: **`opts = hinfsynOptions('RelTol',0.05)`

creates an option
set that sets the relative accuracy to 0.05.

**Riccati Method Options**

`AbsTol`

— Absolute accuracy on optimal *H*_{∞} performance

10^{-6} (default) | positive scalar

Absolute accuracy on the optimal *H*_{∞}
performance, specified as the comma-separated pair consisting of
`'AbsTol'`

and a positive scalar value.

**Example: **`opts = hinfsynOptions('AbsTol',1e-4)`

creates an option
set that sets the absolute accuracy to 0.0001.

`AutoScale`

— Automatic plant scaling

`'on'`

(default) | `'off'`

Automatic plant scaling, specified as the comma-separated pair consisting of
`'AutoScale'`

and one of the following:

`'on'`

— Automatically scales the plant states, controls, and measurements to improve numerical accuracy.`hinfsyn`

always returns the controller`K`

in the original unscaled coordinates.`'off'`

— Does not change the plant scaling. Turning off scaling when you know your plant is well scaled can speed up the computation.

**Example: **`opts = hinfsynOptions('AutoScale','off')`

creates an
option set that turns off automatic scaling.

`Regularize`

— Automatic regularization

`'on'`

(default) | `'off'`

Automatic regularization of the plant, specified as the comma-separated pair
consisting of `'Regularize'`

and one of:

`'on'`

— Automatically regularizes the plant to enforce requirements on*P*_{12}and*P*_{21}(see`hinfsyn`

). Regularization is a process of adding extra disturbances and errors to handle singular problems.`'off'`

— Does not regularize the plant. Turning off regularization can speed up the computation when you know your problem is far enough from singular.

**Example: **`opts = hinfsynOptions('Regularize','off')`

creates an
option set that turns off regularization.

`LimitGain`

— Limit on controller gains

`'on'`

(default) | `'off'`

Limit on controller gains, specified as the comma-separated pair consisting of
`'LimitGain'`

and either `'on'`

or
`'off'`

. For continuous-time plants, regularization of plant
feedthrough matrices *D*_{12} or
*D*_{21} (see `hinfsyn`

) can result in controllers with large coefficients and fast
dynamics. Use this option to automatically seek a controller with the same performance
but lower gains and better conditioning.

**LMI Method Options**

`LimitRS`

— Limit on norm of LMI solutions

0 (default) | scalar in [0,1]

Limit on norm of LMI solutions, specified as the comma-separated pair consisting
of `'LimitRS'`

and a scalar factor in the range [0,1]. Increase this
value to slow the controller dynamics by penalizing large-norm LMI solutions. See
[1].

`TolRS`

— Reduced-order synthesis tolerance

0.001 (default) | positive scalar

Reduced-order synthesis tolerance, specified as the comma-separated pair
consisting of `'TolRS'`

and a positive scalar value.
`hinfsyn`

computes a reduced-order controller when ```
1
<= rho(R*S) <= TolRs
```

, where `rho(A)`

is the
spectral radius, `max(abs(eig(A)))`

.

**Maximum-Entropy Method Options**

`S0`

— Frequency at which to evaluate entropy

`Inf`

(default) | real scalar

Frequency at which to evaluate entropy, specified as a real scalar value. For more
information, see the Algorithms section of `hinfsyn`

.

## Output Arguments

`opts`

— Options for `hinfsyn`

and `mixsyn`

`hinfsyn`

options object

Options for the `hinfsyn`

or `mixsyn`

computation, returned as an `hinfsyn`

options object. Use the object
as an input argument to `hinfsyn`

or `mixsyn`

. For
example:

[K,CL,gamma,info] = hinfsyn(P,nmeas,ncont,opts);

## References

[1] Gahinet, P., and P. Apkarian. "A
linear matrix inequality approach to H_{∞}-control." *Int
J. Robust and Nonlinear Control*, Vol. 4, No. 4, 1994, pp. 421–448.

## Version History

**Introduced in R2018b**

## 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)