Run into numerical problems in discrete time Hinf LMIs

50 views
Skip to first unread message

Jose de Jesus Colin Robles

unread,
Mar 28, 2019, 9:20:30 PM3/28/19
to YALMIP
Hello every one!!  
I am actually trying to solving a Hinf norm problem using a pair of LMIs to design a discrete time Luenberger observer. I am using sedumi to solve the following LMIs.


 Ap1 = [1.0000  0.0060  0;  -0.0013  0.9870  0; 0.0048  0.0226  0.9930]
Bw1 = [ 0    0; 0.0070  0;  0    0.0070];

Ap2 = [0.9997  0.0000  0; -0.0009  0.9930  0;0.0035  0.0000 0.9930]
Bw2 = [ 0    0; 0.0070  0;  0    0.0070];

re = .95;
P = sdpvar(3,3,'symmetric');
Q = sdpvar(3,1);
gama = sdpvar(1);
C = [0 0 1];
M = [
        P >= 1e-10;
        gama >= 1e-10;
        [-re*P, P*Ap1-Q*C, Bw1, zeros(3,3); Ap1'*P'-C'*Q', -re*P, zeros(3,2), eye(3); Bw1', zeros(2,3), -gama*eye(2), zeros(2,3); zeros(3,3), eye(3), zeros(3,2), -gama*(eye(3))]<=-1e-10;   
        [-re*P, P*Ap2-Q*C, Bw2, zeros(3,3); Ap2'*P'-C'*Q', -re*P, zeros(3,2), eye(3); Bw2', zeros(2,3), -gama*eye(2), zeros(2,3); zeros(3,3), eye(3), zeros(3,2), -gama*(eye(3))]<=-1e-10;   
    ];

options = sdpsettings('solver','sedumi','showprogress','1');
 optimize(M, gama, options);
 P = double(P);
 Q = double(Q);
 L =(P^-1)*Q;

The problem si that sedumi can not solve them and I am trying to find error without succes.
As you can see the convergence ratio re = .99 is closed to the unit circle in the complex plane for discrete time Luenberger, so that means that it should be easy to sedumi find a solution but it is not. The results from sedumi are the following:

+ Solver chosen : SeDuMi-1.3
+ Processing objective function
+ Processing constraints
+ Calling SeDuMi-1.3
SeDuMi 1.3 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, theta = 0.250, beta = 0.500
eqs m = 10, order n = 27, dim = 253, blocks = 4
nnz(A) = 89 + 0, nnz(ADA) = 100, nnz(L) = 55
 it :     b*y       gap    delta  rate   t/tP*  t/tD*   feas cg cg  prec
  0 :            5.19E+00 0.000
  1 :  -3.45E+00 2.73E-01 0.000 0.0525 0.9900 0.9900   0.27  1  1  1.6E+00
  2 :  -6.75E+00 6.99E-02 0.000 0.2563 0.9000 0.9000   0.06  1  1  9.6E-01
  3 :  -1.16E+01 2.19E-02 0.000 0.3135 0.9000 0.9000  -0.19  1  1  6.3E-01
  4 :  -2.08E+01 6.45E-03 0.000 0.2944 0.9000 0.9000  -0.23  1  1  3.9E-01
  5 :  -3.21E+01 2.02E-03 0.000 0.3130 0.9000 0.9000  -0.08  1  1  2.2E-01
  6 :  -4.67E+01 6.95E-04 0.000 0.3439 0.9000 0.9000  -0.07  1  1  1.5E-01
  7 :  -6.22E+01 3.17E-04 0.000 0.4570 0.9000 0.9000  -0.18  1  1  1.2E-01
  8 :  -9.24E+01 1.21E-04 0.000 0.3827 0.9000 0.9000  -0.22  1  1  8.7E-02
  9 :  -1.22E+02 5.54E-05 0.000 0.4557 0.9000 0.9000  -0.21  1  1  7.0E-02
 10 :  -1.75E+02 2.05E-05 0.000 0.3703 0.9000 0.9000  -0.20  1  1  4.7E-02
 11 :  -2.26E+02 9.18E-06 0.000 0.4478 0.9000 0.9000  -0.21  1  1  3.8E-02
 12 :  -3.23E+02 3.33E-06 0.000 0.3632 0.9000 0.9000  -0.22  1  1  2.6E-02
 13 :  -4.19E+02 1.47E-06 0.000 0.4397 0.9000 0.9000  -0.23  1  1  2.1E-02
 14 :  -6.01E+02 5.29E-07 0.000 0.3611 0.9000 0.9000  -0.23  1  1  1.4E-02
 15 :  -7.78E+02 2.33E-07 0.000 0.4396 0.9000 0.9000  -0.24  1  1  1.1E-02
 16 :  -1.12E+03 8.40E-08 0.000 0.3608 0.9000 0.9000  -0.24  1  1  7.7E-03
 17 :  -1.44E+03 3.69E-08 0.000 0.4393 0.9000 0.9000  -0.25  1  1  6.1E-03
 18 :  -2.07E+03 1.33E-08 0.000 0.3594 0.9000 0.9000  -0.24  1  1  4.1E-03
 19 :  -2.68E+03 5.79E-09 0.000 0.4369 0.9000 0.9000  -0.25  1  1  3.3E-03
 20 :  -3.85E+03 2.08E-09 0.000 0.3590 0.9000 0.9000  -0.24  1  1  2.2E-03
 21 :  -4.98E+03 9.07E-10 0.000 0.4362 0.9000 0.9000  -0.25  1  1  1.8E-03
 22 :  -7.14E+03 3.25E-10 0.000 0.3587 0.9000 0.9000  -0.24  1  2  1.2E-03
 23 :  -9.24E+03 1.42E-10 0.000 0.4358 0.9000 0.9000  -0.25  2  2  9.5E-04
 24 :  -1.33E+04 5.09E-11 0.000 0.3588 0.9000 0.9000  -0.24  2  2  6.5E-04
 25 :  -1.72E+04 2.22E-11 0.000 0.4359 0.9000 0.9000  -0.25  2  2  5.1E-04
 26 :  -2.46E+04 7.95E-12 0.000 0.3586 0.9000 0.9000  -0.24  2  2  3.5E-04
 27 :  -3.19E+04 3.46E-12 0.000 0.4356 0.9000 0.9000  -0.25  2  2  2.8E-04
 28 :  -4.57E+04 1.24E-12 0.000 0.3585 0.9000 0.9000  -0.24  2  2  1.9E-04
 29 :  -5.92E+04 5.41E-13 0.000 0.4354 0.9000 0.9000  -0.25  2  2  1.5E-04
 30 :  -8.49E+04 1.94E-13 0.000 0.3584 0.9000 0.9000  -0.24  2  2  1.0E-04
 31 :  -1.10E+05 8.44E-14 0.000 0.4352 0.9000 0.9000  -0.25  3  2  8.0E-05
 32 :  -1.58E+05 3.02E-14 0.000 0.3584 0.9000 0.9000  -0.24  3  2  5.4E-05
 33 :  -2.04E+05 1.32E-14 0.000 0.4352 0.9000 0.9000  -0.25  3  3  4.3E-05
 34 :  -2.93E+05 4.72E-15 0.000 0.3584 0.9000 0.9000  -0.24  3  3  2.9E-05
 35 :  -3.79E+05 2.05E-15 0.000 0.4351 0.9000 0.9000  -0.25  3  3  2.3E-05
Run into numerical problems.

Dual infeasible, primal improving direction found.
iter seconds  |Ax|    [Ay]_+     |x|       |y|
 35      0.7   2.5e-06   6.1e-16   2.4e+05   1.5e-04

Detailed timing (sec)
   Pre          IPM          Post
2.330E-01    5.630E-01    3.900E-02   
Max-norms: ||b||=1, ||c|| = 2.000000e+00,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.51775.


I hope that you can help me to find the error in the LMIs system.
Best regards guys. Thanks for your replies

Johan Löfberg

unread,
Mar 29, 2019, 3:01:08 AM3/29/19
to YALMIP
You want 1e-10*eye(3) etc in your semidefinite constraints. BTW, 1e^-10 is essentially zero in the tolerance used by standard numerical solvers

Still, the problem appears to be infeasible. Set all those terms to 0, and Mosek still finds that the problem is ill-posed. I trust Mosek there

I don't know what you are doing, but a reason could perhaps be that A2,B is not controllable. Removing the constraint related to that dynamics and the problem is feasible

>> ctrb(Ap2,Bw2)

ans =

         0         0         0         0         0         0
    0.0070         0    0.0070         0    0.0069         0
         0    0.0070         0    0.0070         0    0.0069


Jose de Jesus Colin Robles

unread,
Mar 29, 2019, 11:58:41 AM3/29/19
to YALMIP
Thanks Johan to reply my question. 
I am trying to developing a discrete Luenberger observer using the H inf norm. The observer must be capable to compute estimations in spite of presence of perturbation at the input of a plant that is modeled by a set of ODEs of order 3.  Then, using the discrete bounded real lemma to minimize the gain gamma in the set of previous LMIs  ensures that the Luenberger observer is asymptotically stable.  The pair (Ap1,Bw1) is generated using the maximum value of the perturbations. On the other hand the pair (Ap2, Bw2) is generate with the minimum value of the perturbation. 

The controllability proof maybe it is a great idea to helps me to find the error. I am going to define another minimum point of the perturbations where the  pair (Ap2, Bw2) is controllable. 
Another think is about the semidefinite constrains, the bounded real lemma says the set of LMIs must be in the following way: 

       Exist a solution P = P' of the LMI's 
   
    min         gamma 
gamma,P

where the norm info of the transfer function in the error estimation (e = Xestimated - Xmessured) dynamics is minimized
     

  P > 0
  gamma > 0
     
       I                                                                                                           I
       I -re*P,                  P*Ap1-Q*C         Bw1                    zeros(3,3)         I
       I Ap1'*P'-C'*Q',     -re*P,                  zeros(3,2),           eye(3)              I    < 0
       I Bw1',                  zeros(2,3),         -gama*eye(2),      zeros(2,3)        I 
       I zeros(3,3),          eye(3),               zeros(3,2),          -gama*(eye(3)) I
       I                                                                                                           I
    
       I                                                                                                           I
       I -re*P,                  P*Ap2-Q*C         Bw2                    zeros(3,3)         I
       I Ap2'*P'-C'*Q',     -re*P,                  zeros(3,2),           eye(3)              I    < 0
       I Bw2',                  zeros(2,3),         -gama*eye(2),      zeros(2,3)        I 
       I zeros(3,3),          eye(3),               zeros(3,2),          -gama*(eye(3)) I
       I                                                                                                           I

As you know Johan, Sedumi does not allow me to put the strict LMIs, then I used a value 1e-10 near close to zero s you can see in the above code. Maybe there is a proper manner to define this, can you help with that? 
thanks for your reply best regards. 

Johan Löfberg

unread,
Mar 29, 2019, 12:14:37 PM3/29/19
to YALMIP
you constrained things to be less than -ones(.)*1e-10 instead of -eye(.)*1e-10.
Reply all
Reply to author
Forward
0 new messages