File: lmisolver.man

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (82 lines) | stat: -rw-r--r-- 2,772 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
.TH lmisolver 1 "April 1993" "Scilab Group" "Scilab Function"
.so ../sci.an 
.SH NAME
lmisolver - linear matrix inequation solver
.SH CALLING SEQUENCE
.nf
[XLISTF[,OPT]] = lmisolver(XLIST0,evalfunc [,options])
.fi
.SH PARAMETERS
.TP 10
XLIST0
: a list of containing initial guess (e.g. \fVXLIST0=list(X1,X2,..,Xn)\fR)
.TP
evalfunc
: a Scilab function ("external" function with specific syntax)
.TP 10
XLISTF
: a list of matrices (e.g. \fVXLIST0=list(X1,X2,..,Xn)\fR)
.TP
options
: optional parameter. If given, \fVoptions\fR is 
a real row vector with 5 components
\fV[Mbound,abstol,nu,maxiters,reltol]\fR
.LP
The syntax the function \fVevalfunc\fR must be as follows:
.LP
\fV[LME,LMI,OBJ]=evalfunct(X)\fR where \fVX\fR is a list of matrices,
\fVLME, LMI\fR are lists and \fVOBJ\fR a real scalar.
.SH DESCRIPTION
\fVlmisolver\fR solves the following problem:
.LP
minimize \fVf(X1,X2,...,Xn)\fR a linear function of Xi's
.LP
under the linear constraints:
\fVGi(X1,X2,...,Xn)=0\fR for i=1,...,p and LMI (linear matrix
inequalities) constraints:
.LP
\fVHj(X1,X2,...,Xn) > 0\fR for j=1,...,q
.LP
The functions f, G, H are coded in the Scilab function \fVevalfunc\fR
and the set of matrices Xi's in the list X (i.e.
\fVX=list(X1,...,Xn)\fR).
.LP
The function \fVevalfun\fR must return in the list \fVLME\fR the matrices
\fVG1(X),...,Gp(X)\fR (i.e. \fVLME(i)=Gi(X1,...,Xn),\fR i=1,...,p).
\fVevalfun\fR must return in the list \fVLMI\fR the matrices
\fVH1(X0),...,Hq(X)\fR (i.e. \fVLMI(j)=Hj(X1,...,Xn)\fR, j=1,...,q). 
\fVevalfun\fR must return in \fVOBJ\fR the value of \fVf(X)\fR
(i.e. \fVOBJ=f(X1,...,Xn)\fR).
.LP
\fVlmisolver\fR  returns in \fVXLISTF\fR, a list of real matrices,
i. e. \fVXLIST=list(X1,X2,..,Xn)\fR where the Xi's solve the LMI
problem: 
.LP
Defining \fVY,Z\fR and \fVcost\fR by:
.LP
\fV[Y,Z,cost]=evalfunc(XLIST)\fR, \fVY\fR is a list of zero matrices, 
\fVY=list(Y1,...,Yp)\fR, \fVY1=0, Y2=0, ..., Yp=0\fR.
.LP
\fV Z \fR is a list of square symmetric matrices, 
\fV Z=list(Z1,...,Zq) \fR, which are semi positive definite
\fV Z1>0, Z2>0, ..., Zq>0 \fR (i.e. \fVspec(Z(j))\fR > 0),
.LP
\fVcost\fR is minimized.
.LP
\fVlmisolver\fR can also solve LMI problems in which the \fVXi's\fR 
are not matrices but lists of matrices. More details are given in the 
documentation of LMITOOL.
.SH EXAMPLE
.nf
//Find diagonal matrix X (i.e. X=diag(diag(X), p=1) such that
//A1'*X+X*A1+Q1 < 0, A2'*X+X*A2+Q2 < 0 (q=2) and trace(X) is maximized 
n=2;A1=rand(n,n);A2=rand(n,n);
Xs=diag(1:n);Q1=-(A1'*Xs+Xs*A1+0.1*eye);
Q2=-(A2'*Xs+Xs*A2+0.2*eye);
deff('[LME,LMI,OBJ]=evalf(Xlist)','X=Xlist(1),LME=X-diag(diag(X));...
LMI=list(-(A1''*X+X*A1+Q1),-(A2''*X+X*A2+Q2)),OBJ= -sum(diag(X))  ');
X=lmisolver(list(zeros(A1)),evalf);X=X(1)
[Y,Z,c]=evalf(X)
.fi
.SH SEE ALSO
lmitool