[37] | 1 | |
---|
| 2 | A1 = randn(8,2); |
---|
| 3 | b1 = rand(8,1)*2-A1*[3;3]; |
---|
| 4 | A2 = randn(8,2); |
---|
| 5 | b2 = rand(8,1)*2-A2*[-3;3]; |
---|
| 6 | A3 = randn(8,2); |
---|
| 7 | b3 = rand(8,1)*2-A3*[3;-3]; |
---|
| 8 | A4 = randn(8,2); |
---|
| 9 | b4 = rand(8,1)*2-A4*[-3;-3]; |
---|
| 10 | |
---|
| 11 | plot(polytope(A1,b1),polytope(A2,b2),polytope(A3,b3),polytope(A4,b4)) |
---|
| 12 | |
---|
| 13 | yalmip('clear') |
---|
| 14 | binvar inp1 inp2 inp3 inp4 |
---|
| 15 | |
---|
| 16 | x = sdpvar(2,1);bounds(x,-100,100) |
---|
| 17 | y = sdpvar(1); bounds(y,-100,100); |
---|
| 18 | |
---|
| 19 | F = set([]); |
---|
| 20 | F = F + set(iff(inp1,A1*x < b1)); |
---|
| 21 | F = F + set(iff(inp2,A2*x < b2)); |
---|
| 22 | F = F + set(iff(inp3,A3*x < b3)); |
---|
| 23 | F = F + set(iff(inp4,A4*x < b4)) |
---|
| 24 | F = F + set(iff(inp4,y==pi)); |
---|
| 25 | F = F + set(inp1 | inp2 | inp3 | inp4); |
---|
| 26 | %F = F + set(inp1 + inp2 + inp3 + inp4 == 1); |
---|
| 27 | F=F+set(x==[-3;-4]) |
---|
| 28 | |
---|
| 29 | solvesdp(F,x(2)) |
---|
| 30 | |
---|
| 31 | F = set([]); |
---|
| 32 | F = F + set(inp1 == (A1*x < b1)); |
---|
| 33 | F = F + set(inp2 == (A2*x < b2)); |
---|
| 34 | F = F + set(inp3 == (A3*x < b3)); |
---|
| 35 | F = F + set(inp4 == (A4*x < b4)) |
---|
| 36 | F = F + set(inp2 == (y==pi)); |
---|
| 37 | F = F + set(inp1 | inp2 | inp3 | inp4); |
---|
| 38 | solvesdp(F,x(2)) |
---|
| 39 | |
---|
| 40 | |
---|
| 41 | binvar inp1 inp2 inp3 inp4 |
---|
| 42 | |
---|
| 43 | x = sdpvar(2,1); |
---|
| 44 | |
---|
| 45 | F = set([]); |
---|
| 46 | F = F + set(iff(A1*x < b1,inp1)); |
---|
| 47 | F = F + set(iff(A2*x < b2,inp2)); |
---|
| 48 | F = F + set(iff(A3*x < b3,inp3)); |
---|
| 49 | F = F + set(iff(A4*x < b4,inp4)) |
---|
| 50 | |
---|
| 51 | F = F + set(inp1 | inp2 | inp3 | inp4); |
---|
| 52 | |
---|
| 53 | |
---|
| 54 | solvesdp(F,x(2)) |
---|
| 55 | |
---|
| 56 | |
---|
| 57 | |
---|
| 58 | x = sdpvar(2,1);bounds(x,-1000,1000) |
---|
| 59 | F = set( (A1*x < b1) | (A2*x < b2) | (A3*x < b3) | (A4*x < b4)); |
---|
| 60 | solvesdp(F,x(2)); |
---|
| 61 | |
---|
| 62 | |
---|
| 63 | clear all |
---|
| 64 | pwa_di |
---|
| 65 | yalmip('clear') |
---|
| 66 | N=3; |
---|
| 67 | for i=1:N |
---|
| 68 | x{i} = sdpvar(2,1);bounds(x{i},-[5;5],[5;5]); |
---|
| 69 | u{i} = sdpvar(1,1);bounds(u{i},-1,1); |
---|
| 70 | y{i} = sdpvar(2,1);bounds(y{i},-[5;5],[5;5]); |
---|
| 71 | end |
---|
| 72 | delta = binvar(N,4); |
---|
| 73 | |
---|
| 74 | F = set(x{1} == [0.1;0.11]); |
---|
| 75 | |
---|
| 76 | for i = 1:N |
---|
| 77 | F = F + set(sysStruct.umin < u{i} < sysStruct.umax); |
---|
| 78 | F = F + set(sysStruct.ymin < y{i} < sysStruct.ymax); |
---|
| 79 | |
---|
| 80 | for j = 1:4 |
---|
| 81 | F = F + set(iff(sysStruct.guardX{j}*x{i} < sysStruct.guardC{j},delta(i,j))); |
---|
| 82 | F = F + set(iff(delta(i,j),y{i} == [sysStruct.C{j} sysStruct.D{j} sysStruct.g{j}]*[x{i};u{i};1])); |
---|
| 83 | end |
---|
| 84 | end |
---|
| 85 | for i = 1:N-1 |
---|
| 86 | for j = 1:4 |
---|
| 87 | F = F + set(iff(delta(i,j),x{i+1} == [sysStruct.A{j} sysStruct.B{j} sysStruct.f{j}]*[x{i};u{i};1])); |
---|
| 88 | end |
---|
| 89 | end |
---|
| 90 | |
---|
| 91 | tu = sdpvar(N,1) |
---|
| 92 | ty = sdpvar(N,1) |
---|
| 93 | tx = sdpvar(N,1) |
---|
| 94 | for i = 1:N |
---|
| 95 | F = F + set(-tu(i) < u{i} < tu(i))+set(-ty(i) < y{i} < ty(i))+set(-tx(i) < 8*(x{i}-0*[0.1;0.11]) < tx(i)); |
---|
| 96 | end |
---|
| 97 | F=F+set(sum(delta,2)==1); |
---|
| 98 | solvesdp(F,sum(2*tu)+sum(ty(1:end))+sum(tx(1:end))) |
---|
| 99 | |
---|
| 100 | |
---|
| 101 | |
---|
| 102 | |
---|
| 103 | |
---|