IQClab offers the possibility to perform -syntheses. The algorithm is similar to the (LMI-based) one available in the MATLAB Robust Control Toolbox. However, it offers some additional features that are (currently) not available in the Robust Control Toolbox.

*Note: It is assumed that the user is acquainted with the -controller synthesis literature and tools. The reader is referred to [3], [4], [5] and references therein for further information.*

We consider the system interconnection shown in the figure below, where is the weighted generalized plant (i.e., it is assumed that the disturbance and performance weights are already incorporated in the plant) and where is the to-be-designed controller. The generalized plant has disturbance inputs and , performance outputs and , control input , and measurement output .

Some characteristics of the algorithm are:

- The algorithms performs a synthesis with the aim to obtain a controller, , which stabilizes the plant and which renders/minimizes the performance specification on the channels and satisfied as detailed next.
- The algorithm allows to impose the following norm constraints on the performance channels and respectively:
- A fixed norm-bound, , on the performance channel
- A to-be-minimized norm-bound. , on the performance channel

- A fixed norm-bound, , on the performance channel
- In addition, the algorithm can take initial LMI solutions to invoke warm-starts.

*Note: The channel can be included in the synthesis to robustify your control design by imposing the extra norm-constraint (small-gain). Thereby the function allows to include (dynamically weighted) uncertainty channels, which in turn facilitates, for example, iteration type algorithms based on general dynamic multipliers [6].*

Usage:

If feasible, the algorithms returns:

- The stabilizing controller
- The -norm, , on the performance channel of the closed-loop system
- The LMI certificate

The inputs should be provided as follows:

- The LTI plant is assumed to admit the following state space description
- and are the (generalized) disturbance inputs
- and are the performance outputs
- is the control input

- is the measurement output

- is stabilizable and is detectable

- In addition, the plant input and output dimension data and should be specified as follows:
*Note: In case and , it is assumed that and that the remaining in- and output channels are associated with the second performance channel .*

- The last input,
*options*, is a structure with various options as summarized in the following table.

Options | Description |

options.subopt | If chosen larger than 1, the algorithm computes a suboptimal solution , while minimizing the norms on the LMI variables , .The default value is 1.01. |

options.condnr | If chosen larger than 1, the algorithm computes a suboptimal solution , while improving the conditioning number of the coupling condition
by maximizing . The default value is 1. |

options.uv | Use different options to reconstruct the controller: – options.uv=1 for and – options.uv=2 for and The default value is 1. |

options.eliminate | – options.eleminate=1 solves the controller synthesis problem in one shot (i.e. without eliminating the control variable by projection).– options.eleminate=2 employs the elimination lemma to remove the controller variables form the optimization problem, which allows solving an LMI problem with less optimization variables.The default value is 2. |

options.Lyapext | With this option you can specify how the Lyapunov function matrix is constructed. The options are .The default value is 5. |

options.constants | options.constants= is a vector of (small) nonnegative constants, which perturb the LMIs as , .The constants are associated with the following LMI constraints – , perturb the coupling condition as
– perturbs the primal solvability condition as – perturbs the dual solvability condition as The default value is . |

options.init | This is a structure with:– options.init.– options.init. This option can be used to specify an initial condition in the corresponding optimization problem. This option only works for options.eliminate=2 and options.balreal=0. should have twice the size of , while is a scalar. The matrices are empty by default. |

options.controller | In case options.eliminate=2, you can construct the controller in different fashions by specifying:– options.eliminate=1: This options contructs the controller analytically by means of the function fInvproj (see link for further details)– options.eliminate=2: This option constructs the controller by means of solving an LMI problem.The default value is 1. |

options.alpha | This option specifies the maximum -norm bound on the performance channel .The default value is 1. |

options.gmax | This option specifies the maximum -norm bound on the performance channel .The default value is 1000. |

options.balreal | This option pre-processes the open-loop weighted generalized plant in the following sense: – options.balreal=0: No balancing is applied– options.balreal=1: A Grammian based IO balancing is applied– options.balreal=2: An -Grammian based IO balancing is applied (see the function fHinfbalreal)– options.balreal=3: An norm-balancing is applied by means of the command ssbal. This command computes a diagonal similarity transformation such that and approximately have equal row and column norms.The default value is 0. |

options.Parser | The option options.Parser specifies which parser is used:– options.Parser=’LMIlab’– options.Parser=’Yalmip’The default options is ‘LMIlab’. |

options.Solver | The option options.Solver specifies which solver is used when considering Yalmip as parser. See https://yalmip.github.io/ for further info. The default solver is ‘mincx’. |

options.FeasbRad | This option allows setting the feasibility radius of the optimization problem (see MATLAB → help → mincx for further details). The default value is 1e6. |

options.Terminate | This option can be used to change the LMI solver options (see MATLAB → help → mincx for further details). The default value is 0. |

options.RelAcc | This option can be used to change the LMI solver options (see MATLAB → help → mincx for further details). The default value is 1e-3. |