Rank constrained LMIsThis example requires the solver LMIRank (and a semidefinite solver) A lot of problems, in particular in control theory, can be addressed using rank constraints. Unfortunately, adding a simple rank constraint to a matrix in a standard LMI problem leads to an NP-hard optimization problem. Nevertheless, with a reasonable initial guess, a local search can be efficient for finding a low-rank solution in some cases. The solver LMIRank performs such a local search and is interfaced by YALMIP. Details on the algorithm LMIRank can be found in [Orsi et. al.]. Dynamic controller design using rank constraintsTo illustrate rank constraints in YALMIP, and how to use the solver LMIRank, we solve one of the examples in [Orsi et. al.]. The problem is to design a dynamic output feedback controller for the system x' = Ax+Bu, y=Cx
Define matrices X and Y (essentially modeling a Lyapunov matrix and its inverse)
Without going into the theoretical background, the following LMI constraints are necessary for the existence of a controller.
The rank constraint enter when we want to couple the matrices X and Y, and ensure the existence of a dynamic controller with at most 2 states. Once again stating the equations without any theoretical justification, the resulting constraints are
In the current implementation in YALMIP, a rank constraint
automatically appends a positive semidefiniteness constraint on the
involved matrix (i.e. a non-strict constraint, so these appended cones are
not affected by the option At this point, we are ready to solve the problem. The solver LMIRank
needs an initial guess, and this can be supplied either by the user
(by initializing variables and using the
The following call ensures that the solver for the initial guess is SeDuMi, and uses an accuracy recommended by the author of LMIRank.
Note that these computations only give a feasible pair X and Y. To actually compute the controller (called reconstruction) requires some additional steps. If we compute the eigenvalues of our rank constrained matrix, we immediately see that we effectively have a rank of 6.
indeed, this is the rank reported by YALMIP.
Note that rank computations are inherently hard from a numerical point of view, hence it may easily happen that the reported rank is higher than the desired rank, even though LMIRank claimed feasibility. In such cases, a more detailed analysis using tolerances might be necessary (YALMIP always uses the default tolerance.)
|