[37] | 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 |
---|