IQClab not only offers the possibility to perform IQC robustness analyses or robust controller syntheses, but also facilitates the implementation of new routines. These may extend the existing toolset with additional functionality (e.g. a new IQC-multiplier), or result in the implementation of new IQC/LMI based algorithms (e.g. an alternative controller synthesis method). The following functions and class definitions provide the basis for such new routines.
To start, the command iqcprob defines an IQC-problem class, which allows initiating a new IQC/LMI problems. As before, the specifications of properties proceeds in different fashions as shown in the following table:
Option | Description |
1 | For prob=iqcprob(‘name’, varargin) the inputs come in pairs and can be specified by
|
2 | The properties can also be set by defining a structure
and subsequently specifying
|
3 | Finally, the properties can be set and retrieved respectively by
and
|
The properties that are (currently) supported (note that new ones can be easily added) are found the following table. This table is identical to Table 4-16 and is just repeated here for the convenience of the reader.
The following table provides an overview of properties that can be set in the IQC-analysis.
Property | Description |
Parser | It is possible to select either one of the following parsers: 1. ‘LMIlab’ (default) 2. ‘Yalmip’ Note: It is emphasized that the use of Yalmip in combination with whichever solver sometimes seems less reliable if compared to the use of LMIlab. To this end, it is always recommended to perform a post-solution check to confirm that a solution is indeed feasible (see Property SolChk for more details). |
Solver | If selecting LMIlab, the Matlab solvers mincx, and feasb are used to solve the minimization and feasibility problem respectively. On the other hand, if using Yalmip, you can consider various solvers, such as e.g., mosek, sdpt3, sedumi, etc. The reader is referred to https://yalmip.github.io/allsolvers/ for an overview of solvers that are supported. |
gmax | ‘gmax’ specifies the maximum worst-case performance value (default = 1e4). |
FeasbRad | ‘FeasbRad’ specifies the feasibility radius (default = 1e9). |
RelAcc | ‘RelAcc’ is an LMIlab option that specifies the relative accuracy on the computed optimal value (default = 1e-6). |
MaxNumIter | ‘MaxNumIter’ is an LMIlab option that specifies the maximum number of iterations that can be performed by the optimization procedure (default = 800). |
Terminate | ‘Terminate’ is an LMIlab option that helps speeding up the termination. If set to an integer value , the code terminates when the objective has not decreased by more than the desired relative accuracy during the last iterations. |
Display | ‘Display’ allows to turn on/off the trace of execution of the optimization procedure (default = ‘off’). |
Init | The option ‘Init’ can be used to specify an initial condition for the LMI optimization problem (default = []). |
eps | ‘eps’ allows to enforce strict LMI by a small nonnegative constant (default = 1e-9) |
SolChk | ‘SolChk’ allows to verify whether an obtained LMI solution is indeed feasible (default = ‘off’) |
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 is relevant for the synthesis algorithms presented here. |