source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/dev/regress_spjot.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 4.0 KB
Line 
1sdpvar x1 x2 x3 x4 x5 x6 t1 t2
2
3lhs = [-x1+x5;-x1-x5;-x2+x6;-x2-x6;-x3;-x3-x5;-x3;-x3+x5;-x4-x5-x6;-x4+x5;-x4+x5;-x4+x5+x6;x5;-x5;x6;-x6]
4
5
6rhs = [0 0 0 0 t1+t2 t2 -t1-t2 -t2 t1+2*t2 t2 -t1-2*t2 -t2 1 1 1 1]';
7
8
9F = set(lhs < rhs);
10x = [x1 x2 x3 x4 x5];
11sol = solvemp(F+set(-4< [t1 t2]<4),x1+x2+x3+x4,[],[t1;t2])
12
13sdpvar x1 x2 y1 y2 t1 t2
14
15F = set(x1+3*x2-y1 < 9-2*t1+t2);
16F = F + set(2*x1+x2 < 8 + t1-2*t2);
17F = F + set(x1<4+t1+t2);
18F = F + set(-x1 < 0);
19F = F + set(-x2 < 0);
20F = F + set(binary([y1 y2])) + set(-10 <[t1 t2] < 10);
21
22
23[sol,dgn,Z,J] = solvemp(F,-2*x1-x2+y1+y2,sdpsettings('mp.al',3),[t1;t2]);sol = rmovlps(sol);
24
25
26sdpvar x1 x2 x3 x4 x5 x6 t1 t2
27
28lhs = [-x1+x5;-x1-x5;-x2+x6;-x2-x6;-x3;-x3-x5;-x3;-x3+x5;-x4-x5-x6;-x4+x5;-x4+x5;-x4+x5+x6;x5;-x5;x6;-x6]
29
30
31rhs = [0 0 0 0 t1+t2 t2 -t1-t2 -t2 t1+2*t2 t2 -t1-2*t2 -t2 1 1 1 1]';
32
33
34F = set(lhs < rhs);
35x = [x1 x2 x3 x4 x5];
36sol = solvemp(F+set(-4< [t1 t2]<4),x1+x2+x3+x4,[],[t1;t2])
37
38
39
40sdpvar x1 x2 t1 t2
41binvar y1 y2
42
43F = set(x1+3*x2-y1 < 9-2*t1+t2);
44F = F + set(2*x1+x2 < 8 + t1-2*t2);
45F = F + set(x1<4+t1+t2);
46F = F + set(-x1 < 0);
47F = F + set(-x2 < 0);
48F = F + set(-10 <[t1 t2] < 10);
49
50y = [y1;y2];
51t = [t1;t2];
52obj = -2*x1-x2+y1+y2;
53sol = solvemp(F,obj,[],t);
54sol = rmovlps(sol);
55
56sold = dua_test(F,obj,sdpsettings('relax',1,'mp.presolve',1),t,y)
57sold = rmovlps(sold);
58
59
60
61sol = rmovlps(sol);
62plot(sol.Pn)
63
64sol = mimpmilp(F,obj,[],t)
65
66sol = mimpmilp(F,-2*x1-x2+y1+y2,t,y);
67
68
69
70
71
72
73sol = mimpmilp(F,obj,x{k},dd);
74
75
76
77% Dua example 1
78sdpvar x1 x2  t1 t2
79binvar y1 y2
80
81obj = -3*x1-8*x2+4*y1+2*y2
82
83F = set([x1+x2 < 13+t1;5*x1-4*x2 < 20;-8*x1+22*x2 < 121+t2;4*x1+x2>8;x1-10*y1<0;x2-15*y2 < 0]);
84F = F + set([x1 x2]>0) + set(0<[t1 t2]<10)
85sol = solvemp(F,obj,[],[t1;t2]);
86
87
88
89% Dua example 2
90sdpvar x1 x2  t1 t2 t3
91binvar y1 y2
92
93obj = -3*x1-2*x2+10*y1+5*y2;
94
95F=set([x1 < 10+t1+2*t2;
96x2 < 10-t1 +t2;
97x1+x2<20-t2;
98x1+2*x2 < 12+t1-t3;
99x1-20*y1<0;
100x2-20*y2<0;
101-x1+x2>4-t3;
102y1+y2>1]);
103
104F = F + set([x1 x2]>0) + set(0<[t1 t2 t3]<5)
105
106sol = solvemp(F,obj,[],[t1;t2;t3]);
107
108sol = rmovlps(sol)
109
110
111% Dua 3
112sdpvar x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23
113sdpvar t1 t2 t3 t4
114binvar y1 y2 y3 y4 y5 y6 y7 y8
115
116x = [x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23]
117
118% x19 = 90000*y1+9600*x1;
119% x20 = 40000*y2+8500*x2;
120% x21 = 45000*(y3+y4) + 25*x17;
121% x22 = 25000*(y5+y6) + 14.5*x18;
122% x23 = 20000*(y7+y8)
123
124F = set([x19 == 90000*y1+9600*x1;
125x20 == 40000*y2+8500*x2;
126x21 == 45000*(y3+y4) + 25*x17;
127x22 == 25000*(y5+y6) + 14.5*x18;
128x23 == 20000*(y7+y8);
129x1  == x3+x4+x5+x6+x7;
130x12 == x2+x3+x4+x5-x8-x9-x10;
131x11 == x6+x7+x8+x9+x10;
132x17 == x13 + x14;
133x18 == x15+x16;
134x13 == 42.6*x3+121*x6;
135x14 == 42.6*x4+121*x7;
136x15 == 78.4*x8;
137x16 == 78.4*x9;
138x12 > 20+10*t1;
139x13+x15 > 7000+1000*t2;
140x14+x16 > 4000+1000*t3;
141x11 > 80+10*t4;
142x6 - 200*y7 < 0;
143x7 - 200*y8 < 0;
144x3+x6-200*y3 < 0;
145x4+x7-200*y4 < 0;
146x8-200*y5 < 0;
147x9-200*y6 < 0;
148y3-y1<0;
149y4-y1<0;
150y7-y3<0;
151y8-y4<0;
152y3+y5 == 1;
153y4+y6 == 1;
154x > 0;
155[t1 t2 t3 t4] <1;
156[t1 t2 t3 t4] > 0])
157obj = x19+x20+x21+x22+x23;
158sol = solvemp(F,obj,[],[t1;t2;t3;t4]);
159sol = rmovlps(sol);
160
161sold = dua_test(F,obj,[],[t1;t2;t3;t4],[y1 y2 y3 y4 y5 y6 y7 y8])
162sold = rmovlps(sold);
163
164sol = solvesdp(F,obj)
165
166y=[y1 y2 y3 y4 y5 y6 y7 y8]
167for i = 1:23
168solvesdp(F+set(x<1e7)+set(y==[1 0 0 1 1 0 0 0]),x(i),sdpsettings('relax',1));xl(i) = double(x(i));
169solvesdp(F+set(x<1e7)+set(y==[1 0 0 1 1 0 0 0]),-x(i),sdpsettings('relax',1));xu(i) = double(x(i));
170end
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211[sol,dgn,Z,J] = solvemp(F,-2*x1-x2+y1+y2,[],t,y);
212
213
214sol = rmovlps(sol);
215
216binary = [y1;y2];
217
218% Solve relaxed problem
219[sol,dgn,Z,J] = solvemp(F,-2*x1-x2+y1+y2,sdpsettings('relax',1),[t1;t2],y);
220
221
222not_integer = find((sum(abs([sol{1}.Fi{:}]),2) ~= 0) | sum(abs([sol{1}.Gi{:}]-round([sol{1}.Gi{:}])),2)~=0);
223
224if ~isempty(not_integer)
225    j = not_integer(1);
226    [sol_down,dgn,Z,J] = solvemp(F+set(y(j)==0),-2*x1-x2+y1+y2,sdpsettings('relax',1),[t1;t2],y);
227    [sol_up,dgn,Z,J] =   solvemp(F+set(y(j)==1),-2*x1-x2+y1+y2,sdpsettings('relax',1),[t1;t2],y);
228    sol = rmovlps({sol_down{1},sol_up{1}})
229end
230
231
Note: See TracBrowser for help on using the repository browser.