(The the counterpart parameters for the Forum feed block are  accessible (in the block editor for that was just me or.   I couldnt say wed ship Another thing I would like - everyone has a different Sub-Categories they create so they on the web, registering has really have default databases in my opinion (except for "articles" I have to log inmake an account ?!". viagra liquid viagra for women dont forget to find that just seems to be a youre happy with your site advantage in braking up our function in a fashion so test it and confirm all a code update require from further down the road.

null) this-plugin-postSave(dataArray)

 
 
Welcome, Guest
Please Login or Register.    Lost Password?

ILMI algorithm
(1 viewing) (1) Guest
Go to bottomPage: 12
TOPIC: ILMI algorithm
#6876
ILMI algorithm 10 Months, 4 Weeks ago Karma: 0
Iterative linear matrix inequality (ILMI) algorithm

Given & (with realization ( A, B, C)) stabilizable via state feed-back.

Step 1. Select Q>0, and solve P from the following algebraic
Riccati equation
A'P+PA-PBB'P+Q=0.

Set i=1 and X1=P.

Step 2. Solve the following optimization problem for Pi , F and ai.
OP1: Minimize ai subject to the following LMI constraints
[A'Pi+ Pi A-XiBB'Pi-PiBB'Xi+XiBB'Xi-aiPi (B'Pi+FC)' ; (B'Pi+FC) -I] < 0 (8)
Pi = Pi' > 0 (9)
Denote a*i as the minimized value of ai.

Step 3. If a*i <= 0, F is a stabilizing static output feedback gain. Stop.

Step 4. Solve the following optimization proble for Pi and F.

OP2: Minimize trace(Pi) subject to the above LMI constraints (8) and (9) with ai = a*i . Denote P*i as the Pi that mini-mized trace (Pi).

Step 5. If || Xi - P*i || < delta , a prescribed tolerance, go to Step 6,
else set i=i+1 and Xi = P*i-1 , then go to Step 2.

Step 6. The system may not be stabilizable via static output feedback. Stop


example :
A=[0 1;1 0] ; B=[1 0]' ; C=[1 15]
a=-0.0377 after 15 iterations and P=[9.2557 6.4888 ; 6.4848 92.9376] ; F=-0.7369

Could you please help me solving this problem in YALMIP ? Thank you!
wajdibelhaj
Fresh Boarder
Posts: 11
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
#6878
Re: ILMI algorithm 10 Months, 4 Weeks ago Karma: 32
Well, it is easily implemented, but how do intend to solve (8). It is bilinear in ai and Pi. Sure, easily solved using a bisection since it is quasi-convex, but are you aware of this. Your notation iterative LMI is not correct, it should be iterative bilinear matrix inequality, or iterative GEVP.
lofberg
Platinum Boarder
Posts: 2280
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
#6879
Re: ILMI algorithm 10 Months, 4 Weeks ago Karma: 32
Solution (implements a generic GEVP solver)
Code:


function [P,F] = ilmi

Q = eye(2);
A=[0 1;1 0]; 
B=[1 0]';
C=[1 15];
delta = 1e-3;

sdpvar a
F = sdpvar(1,1);
P = sdpvar(2);
X = sdpvar(2);

X = are(A,B*B',Q);

i = 1;
while i <= 100    
    RHS = [P zeros(2,1); zeros(1,2) 0];
    LHS = [A'*P+P*A-X*B*B'*P-P*B*B'*X+X*B*B'*X (B'*P+F*C)' ; (B'*P+F*C) -eye(1)];
    
    % Find optimal ai
    ai = solvelocalgevp(LHS,RHS,[],a)  
       
    % Now solve with that ai to recover the last feasible solution in the
    % gevp code (could have been returned from there but it is easier to
    % solve again...)    
    Constraints = [LHS <= ai*RHS,P >= 0];
    solvesdp(Constraints,trace(P))
    
    if ai <= 0
        P = double(P);
        F = double(F);
        break
    end
    
    Pi = double(P);
    if norm(X-Pi) <= delta
        P = [];
        F = [];
        break
    end
    X = Pi;
end

function t_upper = solvelocalgevp(A,B,C,t)
% Solves min t s.t  A(x)<=t*B(x), B>=0, C>=0

% Find initial lower and upper bounds
ops = sdpsettings('verbose',0);
sol = solvesdp([C>=0, A <= 0*B, B>=0],[],ops);
if sol.problem == 0
    % Ok, 0 is an upper_bound, i.e. feasible
    t_upper = 0;
    t_lower = -1;
    while sol.problem == 0
        t_lower = (t_lower)*2;
        sol = solvesdp([C>=0, A <= t_lower*B, B>=0],[],ops);
    end
elseif sol.problem == 1
    % Ok 0 is a lower bound, i.e. infeasible
    t_lower = 0;
    t_upper = 1;
     while sol.problem == 1
        t_upper = t_upper*2;
        sol = solvesdp([C>=0, A <= t_upper*B, B>=0],[],ops);
    end
else
    error('Hmm, you''d better robustify the code!')
end
% OK, we have the bounds, start bisecting
while t_upper-t_lower >= 1e-3
    t_mid = (t_upper+t_lower)/2;
    sol = solvesdp([C>=0, A <= t_mid*B, B>=0],[],ops);
    if sol.problem == 0
        t_upper = t_mid;       
    else
        t_lower = t_mid;
    end
    disp([t_lower t_upper]);
end



lofberg
Platinum Boarder
Posts: 2280
graphgraph
User Offline Click here to see the profile of this user
Last Edit: 2012/06/28 03:21 By lofberg.
The administrator has disabled public write access.
 
#6881
Re: ILMI algorithm 10 Months, 4 Weeks ago Karma: 0
Thank you Lofberg for the advices . In fact , it's SOF (Static Output Feedback) resolved by an iterative LMI (iterative GEVP ). But when I simulated the program and it showed , failure of FEASP . Perhaps I should change the parameters of the system .
wajdibelhaj
Fresh Boarder
Posts: 11
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
#6882
Re: ILMI algorithm 10 Months, 4 Weeks ago Karma: 32
I hope you are not using LMILAB. If you are, don't, at least not if you intend to use YALMIP. Install sedumi or SDPT3 before continuing.
users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Solvers.LMILAB
lofberg
Platinum Boarder
Posts: 2280
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
#6884
Re: ILMI algorithm 10 Months, 4 Weeks ago Karma: 0
I have obtained the following results by implementing the previous program :

SeDuMi 1.1 by AdvOL, 2005 and Jos F. Sturm, 1998, 2001-2003.
Alg = 2: xz-corrector, theta = 0.250, beta = 0.500
eqs m = 4, order n = 6, dim = 14, blocks = 3
nnz(A) = 14 + 0, nnz(ADA) = 16, nnz(L) = 10
it : b*y gap delta rate t/tP* t/tD* feas cg cg prec
0 : 5.62E+000 0.000
1 : -2.45E+000 5.12E-001 0.000 0.0911 0.9900 0.9900 1.38 1 1 9.1E-001
2 : -2.46E+000 1.11E-001 0.000 0.2170 0.9000 0.9000 1.21 1 1 1.8E-001
3 : -2.56E+000 2.99E-003 0.000 0.0270 0.9900 0.9900 0.94 1 1 5.0E-003
4 : -2.56E+000 5.30E-004 0.000 0.1768 0.9000 0.9000 1.01 1 1 8.8E-004
5 : -2.56E+000 3.20E-005 0.347 0.0603 0.9900 0.9900 1.01 1 1 5.2E-005
6 : -2.56E+000 7.82E-006 0.000 0.2447 0.9000 0.9000 1.00 1 1 1.3E-005
7 : -2.56E+000 2.49E-007 0.000 0.0319 0.9900 0.9900 1.00 1 1 4.0E-007
8 : -2.56E+000 4.54E-008 0.000 0.1821 0.9000 0.9000 1.00 2 2 7.3E-008
9 : -2.56E+000 2.61E-009 0.313 0.0575 0.9900 0.9900 1.00 2 2 4.2E-009
10 : -2.56E+000 1.19E-010 0.000 0.0455 0.9900 0.9900 1.00 2 2 1.9E-010

iter seconds digits c*x b*y
10 0.4 Inf -2.5582458114e+000 -2.5582458113e+000
|Ax-b| = 1.7e-010, [Ay-c]_+ = 4.9E-011, |x|= 2.7e+000, |y|= 2.0e+000

Detailed timing (sec)
Pre IPM Post
3.120E-002 4.212E-001 0.000E+000
Max-norms: ||b||=1, ||c|| = 2.488584e+000,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.27425.
ans =
yalmiptime: 0.221000000000000
solvertime: 0.251000000000001
info: 'Successfully solved (SeDuMi-1.1)'
problem: 0
dimacs: [NaN NaN NaN NaN NaN NaN]
ans =
[]


How can I retrieve the values of P , F and ai ?
wajdibelhaj
Fresh Boarder
Posts: 11
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
Go to topPage: 12
Moderators: jcg207