1 | t0 = cputime; |
---|
2 | |
---|
3 | yalmip('clear') |
---|
4 | clc |
---|
5 | x1 = sdpvar(1,1); |
---|
6 | x2 = sdpvar(1,1); |
---|
7 | x3 = sdpvar(1,1); |
---|
8 | |
---|
9 | objective = -2*x1+x2-x3; |
---|
10 | |
---|
11 | F = set(x1*(4*x1-4*x2+4*x3-20)+x2*(2*x2-2*x3+9)+x3*(2*x3-13)+24>0); |
---|
12 | F = F + set(4-(x1+x2+x3)>0); |
---|
13 | F = F + set(6-(3*x2+x3)>0); |
---|
14 | F = F + set(x1>0); |
---|
15 | F = F + set(2-x1>0); |
---|
16 | F = F + set(x2>0); |
---|
17 | F = F + set(x3>0); |
---|
18 | F = F + set(3-x3>0); |
---|
19 | |
---|
20 | % Explicitly specify solvers (this is currently recommended) |
---|
21 | ops = sdpsettings('solver','bmibnb'); % Global solver |
---|
22 | ops = sdpsettings(ops,'bmibnb.lowersolver','glpk'); % Lower solver |
---|
23 | ops = sdpsettings(ops,'bmibnb.uppersolver','penbmi'); % Local solver |
---|
24 | ops = sdpsettings(ops,'bmibnb.lpsolver','glpk'); % LP solver |
---|
25 | ops = sdpsettings(ops,'verbose',0); % LP solver |
---|
26 | ops = sdpsettings(ops,'penbmi.P0',0.01); |
---|
27 | |
---|
28 | solvesdp(F,objective,ops) |
---|
29 | |
---|
30 | yalmip('clear') |
---|
31 | x1 = sdpvar(1,1); |
---|
32 | x2 = sdpvar(1,1); |
---|
33 | x3 = sdpvar(1,1); |
---|
34 | x4 = sdpvar(1,1); |
---|
35 | x5 = sdpvar(1,1); |
---|
36 | x6 = sdpvar(1,1); |
---|
37 | |
---|
38 | objective = -25*(x1-2)^2-(x2-2)^2-(x3-1)^2-(x4-4)^2-(x5-1)^2-(x6-4)^2; |
---|
39 | |
---|
40 | F = set((x3-3)^2+x4>4) + set((x5-3)^2+x6>4); |
---|
41 | F = F + set(x1-3*x2<2) + set(-x1+x2<2) + set(x1+x2>2); |
---|
42 | F = F + set(6>x1+x2>2); |
---|
43 | F = F + set(1<x3<5) + set(0<x4<6)+set(1<x5<5)+set(0<x6<10)+set(x1>0)+set(x2>0); |
---|
44 | |
---|
45 | |
---|
46 | t = sdpvar(1,1); |
---|
47 | F = F + set(objective<t); |
---|
48 | |
---|
49 | solvesdp(F,t,ops) |
---|
50 | |
---|
51 | |
---|
52 | yalmip('clear') |
---|
53 | A0 = [-10 -0.5 -2;-0.5 4.5 0;-2 0 0]; |
---|
54 | A1 = [9 0.5 0;0.5 0 -3 ; 0 -3 -1]; |
---|
55 | A2 = [-1.8 -0.1 -0.4;-0.1 1.2 -1;-0.4 -1 0]; |
---|
56 | K12 = [0 0 2;0 -5.5 3;2 3 0]; |
---|
57 | |
---|
58 | x = sdpvar(1,1); |
---|
59 | y = sdpvar(1,1); |
---|
60 | t = sdpvar(1,1); |
---|
61 | |
---|
62 | F = set(A0+x*A1+y*A2+x*y*K12-t*eye(3)<0); |
---|
63 | F = F + set(-0.5 < x < 2) + set(-3 < y < 7); |
---|
64 | |
---|
65 | % Specify solvers |
---|
66 | ops = sdpsettings('solver','bmibnb'); % Global solver |
---|
67 | ops = sdpsettings(ops,'bmibnb.lowersolver','pensdp'); % Lower solver |
---|
68 | ops = sdpsettings(ops,'bmibnb.uppersolver','penbmi'); % Local solver |
---|
69 | ops = sdpsettings(ops,'bmibnb.lpsolver','glpk'); % LP solver |
---|
70 | ops = sdpsettings(ops,'penbmi.P0',0.01); % Typically good |
---|
71 | |
---|
72 | ops = sdpsettings(ops,'verbose',0); % Typically good |
---|
73 | |
---|
74 | solvesdp(F,t,ops) |
---|
75 | |
---|
76 | |
---|
77 | A = [-1 2;-3 -4];B = [1;1]; |
---|
78 | |
---|
79 | P = sdpvar(2,2); |
---|
80 | K = sdpvar(1,2); |
---|
81 | |
---|
82 | F = set(P>0)+set((A+B*K)'*P+P*(A+B*K) < -eye(2)-K'*K); |
---|
83 | F = F + set(K<0.1)+set(K>-0.1); |
---|
84 | F = F + set(1000> P(:)>-1000); |
---|
85 | solvesdp(F,trace(P),ops) |
---|
86 | |
---|
87 | A = [-1 2;-3 -4]; |
---|
88 | t = sdpvar(1,1); |
---|
89 | P = sdpvar(2,2); |
---|
90 | F = set(P>eye(2))+set(A'*P+P*A < -2*t*P); |
---|
91 | F = F + set(-1e4 < P(:) < 1e4) + set(100 > t > 0) ; |
---|
92 | solvesdp(F,-t,ops) |
---|
93 | |
---|
94 | A = [-1 2;-3 -4]; |
---|
95 | t = sdpvar(1,1); |
---|
96 | P = sdpvar(2,2); |
---|
97 | F = set(P>0)+set(A'*P+P*A < -2*t*P); |
---|
98 | F = F + set(trace(P)==1) + set(100 > t > 0) ; |
---|
99 | solvesdp(F,-t,ops) |
---|
100 | |
---|
101 | F = F + set(trace(A'*P+P*A) < -2*t); |
---|
102 | solvesdp(F,-t,ops) |
---|
103 | |
---|
104 | F = set(P>0)+set(A'*P+P*A < -2*t*P); |
---|
105 | F = F + set(trace(P)==1) + set(100 > t > 0) ; |
---|
106 | F = F + cut(trace(A'*P+P*A) < -2*t); |
---|
107 | |
---|
108 | solvesdp(F,-t,ops) |
---|
109 | |
---|
110 | yalmip('clear'); |
---|
111 | A = [-1 2 ;0.5 0.3]; |
---|
112 | B = [0;1]; |
---|
113 | |
---|
114 | P = sdpvar(2,2); |
---|
115 | K = sdpvar(1,2); |
---|
116 | |
---|
117 | F = lmi(P>0); |
---|
118 | F = F + lmi([-(A+B*K)'*P-P*(A+B*K)-eye(2) K';K eye(1)] > 0); |
---|
119 | F = F+lmi(diag(P)>0)+lmi(P(:)>-150) + lmi(P(:)<150) + lmi(K>-5) + lmi(K<5); |
---|
120 | F = F + cut((A+B*K)'*P+P*(A+B*K) < -eye(2)-K'*K); |
---|
121 | |
---|
122 | F = F + cut(kron(P,P)>0); |
---|
123 | |
---|
124 | ops = sdpsettings('bmibnb.lowersolver','pensdp','verbose',0,'solver','bmibnb','pensdp.P0',0.9); |
---|
125 | ops = sdpsettings(ops,'bmibnb.vartol',1e-4,'bmibnb.lpreduce',1,'bmibnb.roottight',1,'bmibnb.maxiter',30,'penbmi.P0',0.01,'bmibnb.lpsolver','glpk'); |
---|
126 | solvesdp(F,trace(P),ops) |
---|
127 | |
---|
128 | |
---|
129 | |
---|
130 | cputime-t0 |
---|