Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Consider the optimization problem:

Minimize Trace(*X*) subject to

A + ^{T}XXA + XBB + ^{T}XQ < 0 | (4-9) |

with data

$$A=\left(\begin{array}{ccc}-1& -2& 1\\ 3& 2& 1\\ 1& -2& -1\end{array}\right);\text{\hspace{1em}}B=\left(\begin{array}{c}1\\ 0\\ 1\end{array}\right);\text{\hspace{1em}}Q=\left(\begin{array}{ccc}1& -1& 0\\ -1& -3& -12\\ 0& -12& -36\end{array}\right).$$

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

$$\left(\begin{array}{cc}{A}^{T}X+XA+Q& XB\\ {B}^{T}X& -I\end{array}\right)<0.$$ | (4-10) |

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

`1`

`2`

`-8.511476`

`3`

`-13.063640`

`***`

`new lower bound:`

`-34.023978`

`4`

`-15.768450`

`***`

`new lower bound:`

`-25.005604`

`5`

`-17.123012`

`***`

`new lower bound:`

`-21.306781`

`6`

`-17.882558`

`***`

`new lower bound:`

`-19.819471`

`7`

`-18.339853`

`***`

`new lower bound:`

`-19.189417`

`8`

`-18.552558`

`***`

`new lower bound:`

`-18.919668`

`9`

`-18.646811`

`***`

`new lower bound:`

`-18.803708`

`10`

`-18.687324`

`***`

`new lower bound:`

`-18.753903`

`11`

`-18.705715`

`***`

`new lower bound:`

`-18.732574`

`12`

`-18.712175`

`***`

`new lower bound:`

`-18.723491`

`13`

`-18.714880`

`***`

`new lower bound:`

`-18.719624`

`14`

`-18.716094`

`***`

`new lower bound:`

`-18.717986`

`15`

`-18.716509`

`***`

`new lower bound:`

`-18.717297`

`16`

`-18.716695`

`***`

`new lower bound:`

`-18.716873`

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

$${X}_{opt}=\left(\begin{array}{ccc}-6.3542& -5.8895& 2.2046\\ -5.8895& -6.2855& 2.2201\\ 2.2046& 2.2201& -6.0771\end{array}\right).$$

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?