## Documentation Center |

Consider the optimization problem:

Minimize Trace(*X*) subject to

with data

It can be shown that the minimizer *X** is
simply the stabilizing solution of the algebraic Riccati equation

*A*^{T}*X
+ XA + XBB*^{T}*X* + *Q* =
0

This solution can be computed directly with the Riccati solver `care` and
compared to the minimizer returned by `mincx`.

From an LMI optimization standpoint, the problem specified in Equation 4-9 is equivalent to the following linear objective minimization problem:

Minimize Trace(*X*) subject to

Since Trace(*X*) is a linear function of
the entries of *X*, this problem falls within the
scope of the `mincx` solver and
can be numerically solved as follows:

Define the LMI constraint of Equation 4-9 by the sequence of commands

setlmis([]) X = lmivar(1,[3 1]) % variable X, full symmetric lmiterm([1 1 1 X],1,a,'s') lmiterm([1 1 1 0],q) lmiterm([1 2 2 0],-1) lmiterm([1 2 1 X],b',1) LMIs = getlmis

Write the objective Trace(

*X*) as*c*^{T}*x*where*x*is the vector of free entries of*X*. Since*c*should select the diagonal entries of*X*, it is obtained as the decision vector corresponding to*X*=*I*, that is,c = mat2dec(LMIs,eye(3))

Note that the function

`defcx`provides a more systematic way of specifying such objectives (see Specifying c^{T}x Objectives for mincx for details).Call

`mincx`to compute the minimizer`xopt`and the global minimum`copt = c'*xopt`of the objective:options = [1e-5,0,0,0,0] [copt,xopt] = mincx(LMIs,c,options)

Here

`1e–5`specifies the desired relative accuracy on`copt`.The following trace of the iterative optimization performed by

`mincx`appears on the screen:Solver for linear objective minimization under LMI constraints Iterations : Best objective value so far

`new lower bound:`Result: feasible solution of required accuracy best objective value: -18.716695 guaranteed relative accuracy: 9.50e-06 f-radius saturation: 0.000% of R = 1.00e+09

The iteration number and the best value of

*c*^{T}*x*at the current iteration appear in the left and right columns, respectively. Note that no value is displayed at the first iteration, which means that a feasible*x*satisfying the constraint (Equation 4-10) was found only at the second iteration. Lower bounds on the global minimum of*c*^{T}*x*are sometimes detected as the optimization progresses. These lower bounds are reported by the message*** new lower bound: xxx

Upon termination,

`mincx`reports that the global minimum for the objective Trace(*X*) is –18.716695 with relative accuracy of at least 9.5×10^{–6}. This is the value`copt`returned by`mincx`.`mincx`also returns the optimizing vector of decision variables`xopt`. The corresponding optimal value of the matrix variable*X*is given byXopt = dec2mat(LMIs,xopt,X)

which returns

This result can be compared with the stabilizing Riccati solution computed by

`care`:Xst = care(a,b,q,-1) norm(Xopt-Xst) ans = 6.5390e-05

Was this topic helpful?