Yalmip LMI solving H2 optimal control problem run into numerical problem

35 次查看(过去 30 天)
Hi, everybody ,l am trying to use Yalmip toolbox to solve H2 optimal control problem,
l use the following LMI, While there is something wrong with my code, l can't get the expected result,
clear;
clc;
% system parameters
A = [-3 -2 1;
1 2 1;
1 -1 -1];
B1 = [1 0.2 0]';
B2 = [0.4 1 0.6]';
C1 = [1.2 0.5 0.3];
D12 = 1;
% declare the variable
P = sdpvar(3);
Z = sdpvar(1);
F = sdpvar(1,3);
mu = sdpvar(1);
% describe the LMI
mat1 = [A*P+P*A'+B2*F+F'*B2' P*C1'+F'*D12';
(P*C1'+F'*D12')' -eye(1)];
mat2 = [Z B1';
B1 P];
% declare the constraints
F = [mat1=<0; mat2>=0; P>=0; Z>=0 ;trace(Z)<=mu];
optimize(F, mu);
% result
Kd = value(F)*inv(value(P))
H2_norm = sqrt(value(mu))
I get the following result ,
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 = 11, order n = 14, dim = 44, blocks = 4
nnz(A) = 61 + 0, nnz(ADA) = 97, nnz(L) = 54
it : b*y gap delta rate t/tP* t/tD* feas cg cg prec
0 : 2.90E+00 0.000
1 : -6.66E-01 6.49E-01 0.000 0.2239 0.9000 0.9000 1.72 1 1 1.9E+00
2 : -7.69E-01 1.94E-01 0.000 0.2995 0.9000 0.9000 1.17 1 1 5.3E-01
3 : -9.76E-01 6.63E-02 0.000 0.3410 0.9000 0.9000 0.50 1 1 2.2E-01
4 : -1.18E+00 2.25E-02 0.000 0.3396 0.9000 0.9000 0.25 1 1 9.0E-02
5 : -1.44E+00 9.77E-03 0.000 0.4343 0.9000 0.9000 0.10 1 1 6.0E-02
6 : -1.75E+00 3.75E-03 0.000 0.3836 0.9000 0.9000 0.03 1 1 3.7E-02
7 : -2.16E+00 1.33E-03 0.000 0.3553 0.9000 0.9000 0.22 1 1 1.9E-02
8 : -2.46E+00 5.28E-04 0.000 0.3964 0.9000 0.9000 0.23 1 1 1.1E-02
9 : -2.79E+00 1.44E-04 0.000 0.2725 0.9000 0.9000 0.58 1 1 3.6E-03
10 : -2.93E+00 3.91E-05 0.000 0.2716 0.9000 0.9000 0.68 1 1 1.2E-03
11 : -2.99E+00 3.03E-06 0.000 0.0775 0.9900 0.9900 0.90 1 2 9.5E-05
12 : -2.99E+00 1.98E-07 0.000 0.0653 0.9900 0.9900 0.97 1 2 6.3E-06
13 : -2.99E+00 3.82E-08 0.000 0.1934 0.9000 0.9000 0.93 3 3 1.3E-06
14 : -2.99E+00 1.16E-08 0.000 0.3044 0.9000 0.9000 0.76 7 4 4.6E-07
15 : -2.99E+00 4.26E-09 0.000 0.3662 0.9000 0.9000 0.60 16 14 2.1E-07
Run into numerical problems.
iter seconds digits c*x b*y
15 0.1 5.9 -2.9940592991e+00 -2.9940558596e+00
|Ax-b| = 2.8e-07, [Ay-c]_+ = 6.4E-08, |x|= 2.2e+02, |y|= 1.7e+02
Detailed timing (sec)
Pre IPM Post
8.500E-02 1.940E-01 7.800E-02
Max-norms: ||b||=1, ||c|| = 2,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 167.62.
the error message:
错误使用 lmi/value (line 12)
Double not applicable on list of constraints
出错 H2_state_feedback_control_LMI_method (line 274)
Kd = value(F)*inv(value(P))
any suggestions will be appreciated!
Thanks in advance!
  4 个评论
yuan
yuan 2020-7-9
l use the variable F two times, but it is not the same things , so l can't get the result .
Great thanks to Professor Johan. By the way, the constrains can't be strict inequalities or you will get sad Kittens.
making the following changes,it will works!
% declare the constraints
Fd = [mat1=<0; mat2>=0; P>=0; Z>=0 ;trace(Z)<=mu];
optimize(Fd, mu);
% result
Kd = value(F)*inv(value(P))
H2_norm = sqrt(value(mu))

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 LMI Solvers 的更多信息

产品


版本

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by