# hinfsyn

Compute H optimal controller for LTI plant

## Syntax

```[K,CL,GAM,INFO] = hinfsyn(P)
[K,CL,GAM,INFO] = hinfsyn(P,NMEAS,NCON)
[K,CL,GAM,INFO] = hinfsyn(P,NMEAS,NCON,KEY1,VALUE1,KEY2,VALUE2,...)
```

## Description

`hinfsyn` computes a stabilizing H optimal` lti/ss` controller `K` for a partitioned `lti` plant `P`.

$P=\left[\begin{array}{lll}A\hfill & {B}_{1}\hfill & {B}_{2}\hfill \\ {C}_{1}\hfill & {D}_{11}\hfill & {D}_{12}\hfill \\ {C}_{2}\hfill & {D}_{21}\hfill & {D}_{22}\hfill \end{array}\right]$

The controller, `K`, stabilizes the `P` and has the same number of states as `P`. The system `P` is partitioned where inputs to B1 are the disturbances, inputs to B2 are the control inputs, output of C1 are the errors to be kept small, and outputs of C2 are the output measurements provided to the controller. B2 has column size (`NCON`) and C2 has row size (`NMEAS`). The optional `KEY` and `VALUE` inputs determine tolerance, solution method and so forth.

The closed-loop system is returned in `CL`. This closed-loop system is given by `CL = lft(P,K)` as in the following diagram.

The achieved H cost γ is returned as `GAM`. The `struct` array `INFO` contains additional information about the design.

Optional Input Arguments

Property

Value

Description

`'GMAX'`

real

Initial upper bound on `GAM` (default=`Inf`)

`'GMIN'`

real

Initial lower bound on `GAM` (default=0)

`'TOLGAM'`

real

Relative error tolerance for `GAM` (default=.01)

`'S0'`

real

Frequency `S0` at which entropy is evaluated, only applies to `METHOD` `'maxe'` (default=`Inf`)

`'METHOD'`

`'``ric``'`

Standard 2-Riccati solution (default)

`'``lmi``'`

LMI solution

`'``maxe``'`

Maximum entropy solution

`'DISPLAY'`

`'``off``'`

`'``on``'`

No command window display, or command window displays synthesis progress information (default)

When `DISPLAY='``on````', t```he `hinfsyn` program displays several variables indicating the progress of the algorithm. For each γ value being tested, the minimum magnitude, real part of the eigenvalues of the X and Y Hamiltonian matrices are displayed along with the minimum eigenvalue of X and Y, which are the solutions to the X and Y Riccati equations, respectively. The maximum eigenvalue of XY, scaled by γ–2,is also displayed. A # sign is placed to the right of the condition that failed in the printout.

Output Arguments

Description

` K`

`lti` controller

` CL= lft(P,K)`

`lti` closed-loop system ${T}_{{y}_{1}{u}_{1}}$

` GAM = norm(CL,Inf)`

H cost γ = ${‖{T}_{{y}_{1}{u}_{1}}‖}_{\infty }$

` INFO`

Additional output — structure array `INFO` containing possible additional information depending on `METHOD`)

 `INFO.AS` All solutions controller, `lti` two-port LFT `INFO.KFI` Full information gain matrix (constant feedback${u}_{2}\left(t\right)={K}_{FI}\left[\begin{array}{c}x\left(t\right)\\ {u}_{1}\left(t\right)\end{array}\right]$ `INFO.KFC` Full control gain matrix (constant output-injection; KFC is the dual of KFI) `INFO.GAMFI` H∞ cost for full information KFI `INFO.GAMFC` H∞ cost for full control KFC

## Examples

Following are three simple problems solved via `hinfsyn`.

Example 1: A random 4-by-5 plant with 3-states, `NMEAS`=2, `NCON`=2

```rng(0,'twister'); P = rss(3,4,5); [K,CL,GAM] = hinfsyn(P,2,2); ```

The optimal H cost in this case is `GAM` = 1.3940. You verify

that ${‖{T}_{{y}_{1}{u}_{1}}‖}_{\infty }\triangleq \underset{\omega }{\mathrm{sup}}{\sigma }_{max}\left({T}_{{y}_{1}{u}_{1}}\left(j\omega \right)\right)<\gamma$ with a sigma plot

```sigma(CL,ss(GAM)); ```

Example 2: Mixed-Sensitivity

```s=zpk('s'); G=(s-1)/(s+1); W1=0.1*(s+100)/(100*s+1); W2=0.1; W3=[]; P=augw(G,W1,W2,W3); [K,CL,GAM]=hinfsyn(P); sigma(CL,ss(GAM)); ```

In this case, `GAM` = 0.1854 = –14.6386 db

Example 3: Mixed sensitivity with W1 removed.

```s=zpk('s'); G=(s-1)/(s+1); W1=[]; W2=0.1; W3=[]; P=augw(G,W1,W2,W3); [K,CL,GAM]=hinfsyn(P); ```

In this case, `GAM=0`, `K=0`, and `CL=K*(1+G*K)=0`.

## Limitation

The plant must be stabilizable from the control inputs u and detectable from the measurement output y:

• (A,B2) must be stabilizable and (C2,A) must be detectable.

Otherwise, hinfsyn returns an error.

expand all

### Algorithms

The default `'ric'` method uses the two-Riccati formulae ([1],[2]) with loopshifting [3]. In the case of the `'lmi'` method, `hinfsyn` employs the LMI technique ([4],[5],[6]). With `'METHOD' 'maxe', K` returns the max entropy H controller that minimize an entropy integral relating to the point `s0`; i.e.,

where ${T}_{{y}_{1}{u}_{1}}$ is the closed-loop transfer function `CL`. With all methods, `hinfsyn` uses a standard γ-iteration technique to determine the optimal value of γ. Starting with high and low estimates of γ. The γ-iteration is a bisection algorithm that iterates on the value of γ in an effort to approach the optimal H control design. The stopping criterion for the bisection algorithm requires the relative difference between the last γ value that failed and the last γ value that passed be less than `TOLGAM` (default = .01)

At each value of γ, the algorithm employed requires tests to determine whether a solution exists for a given γ value. In the case of the `'ric'` method, the conditions checked for the existence of a solution are:

• H and J Hamiltonian matrices (which are formed from the state-space data of P and the γ level) must have no imaginary-axis eigenvalues.

• the stabilizing Riccati solutions X and Y associated with the Hamiltonian matrices must exist and be positive, semi-definite.

• spectral radius of (X,Y) must be less than or equal to γ2.

When, `DISPLAY` is '`on`', the `hinfsyn` program displays several variables, which indicate which of the above conditions are satisfied for each γ value being tested. In the case of the default` 'ric'` method, the display includes the current value of γ being tested, real part of the eigenvalues of the X and Y Hamiltonian matrices along with the minimum eigenvalue of X and Y, which are the solutions to the X and Y Riccati equations, respectively. The maximum eigenvalue of XY, scaled by γ–2, is also displayed. A # sign is placed to the right of the condition that failed in the printout. A similar `display` is produced with method `'``lmi``'`

The algorithm works best when the following conditions are satisfied by the plant:

D12 and D21 have full rank.

$\left[\begin{array}{cc}A-j\omega I& {B}_{2}\\ {C}_{1}& {D}_{12}\end{array}\right]$ has full column rank for all ωR.

$\left[\begin{array}{cc}A-j\omega I& {B}_{1}\\ {C}_{2}& {D}_{21}\end{array}\right]$ has full row rank for all ωR.

When the above rank conditions do not hold, the controller may have undesirable properties: If D12 and D21 are not full rank, the H controller `K` may have large high-frequency gain. If either of the latter two rank conditions does not hold at some frequency ω, the controller may have very lightly damped poles near that frequency ω.

In general, the solution to the infinity-norm optimal control problem is non-unique. The controller returned by `hinfsyn` is only one particular solution, `K`. When the `'ric'` method is selected, the `INFO.AS` field of `INFO` contains the all- solution controller parameterization KAS. All solutions to the infinity-norm control problem are parameterized by a free stable contraction map Q, which is constrained by ${‖Q‖}_{\infty }<1$. In other words, the solutions include every stabilizing controller K(s) that makes

${‖{T}_{{y}_{1}{u}_{1}}‖}_{\infty }\triangleq \underset{\omega }{\mathrm{sup}}{\sigma }_{\mathrm{max}}\left({T}_{{y}_{1}{u}_{1}}\left(j\omega \right)\right)<\gamma .$

These controllers are given by:

```K=lft(INFO.AS,Q) ```

where `Q` is a stable LTI system satisfying ```norm(Q,Inf) <1```.

An important use of the infinity-norm control theory is for direct shaping of closed-loop singular value Bode plots of control systems. In such cases, the system P is typically the plant augmented with suitable loop-shaping filters — see `mixsyn`.

## References

[1] Glover, K., and J.C. Doyle, "State-space formulae for all stabilizing controllers that satisfy an H norm bound and relations to risk sensitivity," Systems & Control Letters, vol. 11, no. 8, pp. 167–172, 1988.

[2] Doyle, J.C., K. Glover, P. Khargonekar, and B. Francis, "State-space solutions to standard H2 and H control problems," IEEE Transactions on Automatic Control, vol. 34, no. 8, pp. 831–847, August 1989

[3] Safonov, M.G., D.J.N. Limebeer, and R.Y. Chiang, "Simplifying the H Theory via Loop Shifting, Matrix Pencil and Descriptor Concepts", Int. J. Contr., vol. 50, no. 6, pp. 2467-2488, 1989.

[4] Packard, A., K. Zhou, P. Pandey, J. Leonhardson, and G. Balas, "Optimal, constant I/O similarity scaling for full-information and state-feedback problems," Systems & Control Letters, vol. 19, no. 4, pp. 271–280, 1992.

[5] Gahinet, P., and P. Apkarian, "A linear matrix inequality approach to H-control," Int J. Robust and Nonlinear Control, vol. 4, no. 4, pp. 421–448, 1994.

[6] Iwasaki, T., and R.E. Skelton, "All controllers for the general H-control problem: LMI existence conditions and state space formulas," Automatica, vol. 30, no. 8, pp. 1307–1317, 1994.