Overview of TKLMITOOL

This package is the last release of a set of programs used to solve Linear Matrix Inequalities: This package is the last release of a set of programs used to solve Linear Matrix Inequalities: Tklmitool can be used on a lot of differents Operating Systems : several UNIX, Windows 3.1 and Mac OS. This package acts as an interface for the Semidefinite Programming package SP, developed by Lieven Vandenberghe and Stephen Boyd.

For more details and examples, see LMITOOL user's guide. If you have questions, comments, send mail to lmitool@ensta.fr .
For more references and information on LMI problems and engineering applications, see the quick reference guide Semidefinite Programming and Applications.

Purpose of TKLMITOOL

TKLMITOOL solves problems such as

		minimize     f(X1,...,XM,D1,...,DN) 
		subject to   Gi(X1,...,XM,D1,...,DN)  = 0, i=1,...,p 
            		     Hj(X1,...,XM,D1,...,DN) >= 0, j=1,...,q 

where: 

The main purpose of TKLMITOOL is to help write a Matlab .m function which admits the data matrices D1,...,DN as inputs, and has the unknown matrices X1,...,XM as outputs.

How to use TKLMITOOL?

To use TKLMITOOL, the user must issue the Matlab command tklmitool.
Then he can see a window with : Once all fields have been completed, the user may selection Build file in the Build menu.

The user is then ready to use the matlab function created by TKLMITOOL, with the syntax

		[X1,...,XM,infostr] = foo(D1,...,DN) 

where infostr is a string containing convergence information. The returned matrices X1,...XM are empty if the problem is infeasible.

An example : the stabilization problem

The following problem serves as a simple example for illustrating the use of TKLMITOOL.

Consider the linear, time-invariant, continuous-time system in state-space form :

		dx/dt = Ax + Bu, 

where x is the state, and A is n x n and B is n x nu; both matrices are constant.

We seek a constant, state-feedback control law u = Kx such that the closed-loop system is asymptotically stable, that is, all eigenvalues of A+BK have negative real part. In addition, we require that for every initial condition x(0) with ||x(0)|| <= 1, the resulting command input satisfies ||u(t)|| < umax for every t >= 0, where umax is a given number.

As shown in Boyd & al (1994), the above problem has a solution if and only if the following conditions hold for some matrix unknowns X, U :

		[X U'; U umax^2*I] < 0,
		A*X+X*A+B*U+U'*B'  < 0, X = X'

The above is a simple feasibility LMI problem in variables X, U. If it has a solution, then an appropriate control law is u = Kx, where K = U*X^{-1}.

TKLMITOOL helps writing a matlab function, which we choose to call sf_sat, with syntax

		 [X,U,infostr] = sf_sat(A,B,umax)  

where infostr is a string containing convergence information. We can solve this problem as follows : Once all fields have been completed, the user may selection Build file in the Build menu.

The function sf_sat is ready to use : within Matlab, assuming that A,B,umax of appropriate size exist in the workspace, the command

 		[X,U,infostr] = sf_sat(A,B,umax) 
returns X = [], U = [] if the problem is infeasible, and a solution to the problem otherwise (infostr is a string containing convergence information, such as 'optimal').

How it works?

TKLMITOOL invokes the Matlab function tklmitool.m.
tklmitool generates two Matlab functions: The solver and evaluation functions are created by tklmitool from the fields of the main window filled by the user.

lmisolver calls a matlab function, lmiformat, which puts the optimization problem into the standard optimization problem. Then, lmisolver calls the optimization code SP.

lmiformat works in three main steps.

How to get it ?

The package is available via anonymous ftp to ftp.ensta.fr under /pub/elghaoui/lmitool/v1.0.

The user should first obtain the SP package. This package can be obtained via anonymous ftp to isl.stanford.edu, under /pub/boyd/semidef_prog.