IQClab also provides the option to perform Robust controller synthesis with general dynamic multipliers. This yields controllers that are robust with respect to the modelled uncertainties.

*Note: It is assumed that the user is acquainted with the IQC synthesis literature. The reader is referred to [8], [9] and references therein for further information.*

The algorithm considered here is identical to the one presented in *[8]* , which considers the problem of nominal controller synthesis with unstable weights that have no poles on the imaginary axis *[8], [9]*. This problem turns out to be very useful in a -like synthesis algorithm for the systematic design of robust controllers with a general linear fractional dependence on the uncertainties. Such algorithms all rely on a suitable factorization of the involved multipliers, which frequently causes numerical ill-conditioning in computations. The present algorithm avoids any such factorizations. If compared to the existing approaches, this leads to a drastically simplified synthesis algorithm for the systematic design of robust controllers based on general dynamic IQC-multipliers.

We consider the system interconnection shown in the following figure.

Here:

- is the generalized plant (i.e., it is assumed that the disturbance and performance weights are already incorporated in the plant)
- is the uncertainty block, which is assumed to have a block diagonal structure . The properties of the individual blocks should be compatible with those from the class
*iqcdelta*(see details here) - is the to-be-designed robust controller
- the in- and output channels are given by
- is the performance channel

- is the uncertainty channel
- is the control channel

Some characteristics of the algorithm are:

- The algorithms performs a synthesis with the aim to obtain a robust controller, , which, for all , stabilizes the plant and renders the induced -gain on the performance channel less than .
- The -block is compatible with the class
*iqcdelta*(see details here) - The algorithms imposes the following induced norm constraint on the performance channel :
- The algorithm relies on an iteration between performing nominal (weighted) controller syntheses and IQC robustness analyses. This is similar to the -synthesis approach. The essential different is that the present algorithm allows to consider general dynamic IQC multipliers and does not rely on any factorization of the multipliers.

The algorithm proceeds as follows:

- Initialization (iteration step )
- Design a standard controller with
- Construct the closed-loop system and perform an IQC-analysis. This yields the upper-bound with and for all .

- Iteration (step for )
- With the multiplier from the IQC-analysis for , design a new controller . Minimization yields the bound with and for all .
- Build the closed-loop system and perform an IQC-analysis. This yields the bound with and for all .
- Terminate if is small.

The iteration yields the controllers and worst-case induced -gains , which guarantee to be stable and which render for all .

Usage:

If feasible, the algorithms returns for each iteration:

- The stabilizing controllers .
- The (guaranteed) induced -gain, on the performance channel of the closed-loop system .

The inputs should be provided as follows:

- The LTI plant is assumed to admit the following state space description
- and are the uncertainty and disturbance inputs
- and are the uncertainty and performance outputs

- is the control input
- is the measurement output
- is stabilizable and is detectable

- The uncertainty block is an
*iqcdelta*object, to which IQC-multipliers have been assigned with*iqcassign*(see details here). - The plant input and output dimension data and must be specified as follows:
- The last input,
*options*, is a structure with various options as summarized in the following table.

Options | Description |

options.maxiter | This option defines the maximum number of iterations (default = 10). |

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.05. |

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

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

options.Pi11pos | To improve the conditioning of the IQC-multiplier sub-block , it is possible to include the positivity constraint
To do so, one can specify ‘ Pi11pos’ (default = 0).Note: is always positive (semi) definite on the imaginary axis. The reason to include this constraint is to enforce its strictness by means of the non-negative constant ‘Pi11pos’. This option improves the conditioning of the synthesis algorithm. |

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 1e9. |

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-4. |