next up previous contents
Next: Other versions Up: LMITOOL: a Package for Previous: Example

How lmisolver works

  The function lmisolver works essentially in four steps:

  1. Initial set-up. The sizes and structure of the initial guess are used to set up the problem, and in particular the size of the unknown vector.
  2. Elimination of equality constraints. Making repeated calls to the evaluation function, lmisolver generates a canonical representation of the form

    where z contains the coefficients of all matrix variables. This step uses extensively sparse matrices to speed up the computation and reduce memory requirement.

  3. Elimination of variables. Then, lmisolver eliminates the redundant variables. The equality constraints are eliminated by computing the null space N of A and a solution (if any) of Ax+b=0. At this stage, all solutions of the equality constraints are parametrized by

    where x is a vector containing the independent variables. The computation of is done using sparse LU functions of Scilab.

    Once the equality constraints are eliminated, the problem is reformulated as

    where c is a vector, and are symmetric matrices, and x contains the independent elements in the matrix variables . (If the 's are dependent, a column compression is performed.)

  4. Optimization. Finally, lmisolver makes a call to the function semidef (an interface to SP [1] ). This phase is itself divided into a feasibility phase and a minimization phase (only if the linear objective function is not empty). The feasibility phase is avoided if the initial guess is found to be feasible.

    The function semidef is called with the optimization parameters abstol, nu, maxiters, reltol. The parameter M is set above the value

    Mbnd*max(sum(abs([F0 ... Fm])))
    For details about the optimization phase, and the meaning of the above optimization parameters see manual page for semidef.


Scilab Group