1 | function regress_sos |
---|
2 | |
---|
3 | ops1 = sdpsettings('solver','sdpt3','sos.cong',0,'sos.model',1,'verbose',0); |
---|
4 | ops2 = sdpsettings('solver','sdpt3','sos.cong',1,'sos.model',2,'verbose',0); |
---|
5 | ops3 = sdpsettings('solver','sdpt3','sos.cong',0,'sos.newton',0,'verbose',0,'sos.extlp',0); |
---|
6 | |
---|
7 | if 1 |
---|
8 | sdpvar x s t; |
---|
9 | F = set(sos(1+x+(1-s)*x^2-s))+set(sos(2+2*x+x^4-8*t))+set(s>0.49)+set(s+t<0.55); |
---|
10 | obj= -s-t; |
---|
11 | |
---|
12 | fail = regresstest(F,obj,ops1); |
---|
13 | regressreport('Test 1',fail) |
---|
14 | fail = regresstest(F,obj,ops2); |
---|
15 | regressreport('Test 2',fail) |
---|
16 | fail = regresstest(F,obj,ops3); |
---|
17 | regressreport('Test 3',fail) |
---|
18 | |
---|
19 | |
---|
20 | % Disjoint variables |
---|
21 | x = sdpvar(1,1); |
---|
22 | y = sdpvar(1,1); |
---|
23 | t = sdpvar(1,1); |
---|
24 | F = set(sos(1+y^2-t))+set(sos(1+x^2-t)); |
---|
25 | obj = -t; |
---|
26 | fail = regresstest(F,obj,ops1); |
---|
27 | regressreport('Test 4',fail) |
---|
28 | fail = regresstest(F,obj,ops2); |
---|
29 | regressreport('Test 5',fail) |
---|
30 | fail = regresstest(F,obj,ops3); |
---|
31 | regressreport('Test 6',fail) |
---|
32 | |
---|
33 | % Disjoint variables and parameters |
---|
34 | x = sdpvar(1,1); |
---|
35 | y = sdpvar(1,1); |
---|
36 | t = sdpvar(1,1); |
---|
37 | s = sdpvar(1,1); |
---|
38 | F = set(sos(1+y^2-t))+set(sos(1+x^2-s)); |
---|
39 | obj = -s-t; |
---|
40 | fail = regresstest(F,obj,ops1); |
---|
41 | regressreport('Test 7',fail) |
---|
42 | fail = regresstest(F,obj,ops2); |
---|
43 | regressreport('Test 8',fail) |
---|
44 | fail = regresstest(F,obj,ops3); |
---|
45 | regressreport('Test 9',fail) |
---|
46 | |
---|
47 | |
---|
48 | % Disjoint variables and parameters |
---|
49 | x = sdpvar(1,1); |
---|
50 | y = sdpvar(1,1); |
---|
51 | t = sdpvar(1,1); |
---|
52 | s = sdpvar(1,1); |
---|
53 | F = set(sos(1+y^2-t))+set(sos(1+x^2-s))+set(t>0); |
---|
54 | obj = -s-t; |
---|
55 | fail = regresstest(F,obj,ops1); |
---|
56 | regressreport('Test 10',fail) |
---|
57 | fail = regresstest(F,obj,ops2); |
---|
58 | regressreport('Test 11',fail) |
---|
59 | fail = regresstest(F,obj,ops3); |
---|
60 | regressreport('Test 12',fail) |
---|
61 | |
---|
62 | % Disjoint variables and parameters |
---|
63 | x = sdpvar(1,1); |
---|
64 | y = sdpvar(1,1); |
---|
65 | t = sdpvar(1,1); |
---|
66 | s = sdpvar(1,1); |
---|
67 | F = set(sos(1+y^2-t))+set(sos(1+x^2-s))+set(t>0)+set(s>0); |
---|
68 | obj = -s-t; |
---|
69 | fail = regresstest(F,obj,ops1); |
---|
70 | regressreport('Test 13',fail) |
---|
71 | fail = regresstest(F,obj,ops2); |
---|
72 | regressreport('Test 14',fail) |
---|
73 | fail = regresstest(F,obj,ops3); |
---|
74 | regressreport('Test 15',fail) |
---|
75 | |
---|
76 | x = sdpvar(1,1); |
---|
77 | y = sdpvar(1,1); |
---|
78 | t = sdpvar(1,1); |
---|
79 | s = sdpvar(1,1); |
---|
80 | F = set(sos(1+y^2-t))+set(sos(1+x^2-s))+set(t>0)+set(s>0.5); |
---|
81 | obj = -s-t; |
---|
82 | fail = regresstest(F,obj,ops1); |
---|
83 | regressreport('Test 16',fail) |
---|
84 | fail = regresstest(F,obj,ops2); |
---|
85 | regressreport('Test 17',fail) |
---|
86 | fail = regresstest(F,obj,ops3); |
---|
87 | regressreport('Test 18',fail) |
---|
88 | |
---|
89 | x = sdpvar(1,1); |
---|
90 | y = sdpvar(1,1); |
---|
91 | t = sdpvar(1,1); |
---|
92 | s = sdpvar(1,1); |
---|
93 | F = set(sos(1+y^2-t-s))+set(sos(1+x^2-s))+set(t>0)+set(s>-0.5); |
---|
94 | obj = -s-t; |
---|
95 | fail = regresstest(F,obj,ops1); |
---|
96 | regressreport('Test 19',fail) |
---|
97 | fail = regresstest(F,obj,ops2); |
---|
98 | regressreport('Test 20',fail) |
---|
99 | fail = regresstest(F,obj,ops3); |
---|
100 | regressreport('Test 21',fail) |
---|
101 | |
---|
102 | |
---|
103 | x = sdpvar(1,1); |
---|
104 | y = sdpvar(1,1); |
---|
105 | t = sdpvar(1,1); |
---|
106 | s = sdpvar(1,1); |
---|
107 | F = set(sos(1+y^2-t-s))+set(sos(1+x^2-s))+set(t>0)+set(s>-0.5)+set(s>0); |
---|
108 | obj = -s-t; |
---|
109 | fail = regresstest(F,obj,ops1); |
---|
110 | regressreport('Test 19',fail) |
---|
111 | fail = regresstest(F,obj,ops2); |
---|
112 | regressreport('Test 20',fail) |
---|
113 | fail = regresstest(F,obj,ops3); |
---|
114 | regressreport('Test 21',fail) |
---|
115 | |
---|
116 | x = sdpvar(1,1); |
---|
117 | y = sdpvar(1,1); |
---|
118 | t = sdpvar(1,1); |
---|
119 | s = sdpvar(1,1); |
---|
120 | F = set(sos(t*x^4+s*y^2-t))+set(sos(1+x^2-s)); |
---|
121 | obj = -t; |
---|
122 | fail = regresstest(F,obj,ops1,[s t]); |
---|
123 | regressreport('Test 22',fail) |
---|
124 | fail = regresstest(F,obj,ops2,[s t]); |
---|
125 | regressreport('Test 23',fail) |
---|
126 | fail = regresstest(F,obj,ops3,[s t]); |
---|
127 | regressreport('Test 24',fail) |
---|
128 | |
---|
129 | x = sdpvar(1,1); |
---|
130 | y = sdpvar(1,1); |
---|
131 | t = sdpvar(1,1); |
---|
132 | s = sdpvar(1,1); |
---|
133 | sdpvar u |
---|
134 | F = set(sos(t*x^4+s*y^2-t))+set(sos(1+x^2-s)); |
---|
135 | obj = -t; |
---|
136 | fail = regresstest(F,obj,ops1,[s t u]); |
---|
137 | regressreport('Test 25',fail) |
---|
138 | fail = regresstest(F,obj,ops2,[s t u]); |
---|
139 | regressreport('Test 26',fail) |
---|
140 | fail = regresstest(F,obj,ops3,[s t u]); |
---|
141 | regressreport('Test 27',fail) |
---|
142 | |
---|
143 | |
---|
144 | x = sdpvar(1,1); |
---|
145 | y = sdpvar(1,1); |
---|
146 | z = sdpvar(1,1); |
---|
147 | t = sdpvar(1,1); |
---|
148 | s = sdpvar(1,1); |
---|
149 | w = sdpvar(1,1); |
---|
150 | F = set(sos(x^4+z^6))+set(sos(x^2+(t+s+w-6)*x*z)) + set([w;s]>0)+set(t>3); |
---|
151 | obj = w; |
---|
152 | fail = regresstest(F,obj,ops1,t+s+w); |
---|
153 | regressreport('Test 28',fail) |
---|
154 | fail = regresstest(F,obj,ops2,t+s+w); |
---|
155 | regressreport('Test 29',fail) |
---|
156 | fail = regresstest(F,obj,ops3,t+s+w); |
---|
157 | regressreport('Test 30',fail) |
---|
158 | |
---|
159 | sdpvar x s t u |
---|
160 | F = set(sos(1+x+16*s*x^2+13*u+t))+set(sos(2+2*x+(-8+u)*x^4+5-pi*t))+set(t>0)+set(t+u>0); |
---|
161 | obj = t; |
---|
162 | fail = regresstest(F,obj,ops1,t+s+u); |
---|
163 | regressreport('Test 31',fail) |
---|
164 | fail = regresstest(F,obj,ops2,t+s+u); |
---|
165 | regressreport('Test 32',fail) |
---|
166 | fail = regresstest(F,obj,ops3,t+s+u); |
---|
167 | regressreport('Test 33',fail) |
---|
168 | |
---|
169 | sdpvar x s t u |
---|
170 | F = set(sos(1+x+16*s*x^2+13*u+t))+set(sos(2+2*x+(-8+u)*x^4+5-pi*t))+set(t>0)+set(t+u>0); |
---|
171 | obj = t; |
---|
172 | fail = regresstest(F,obj,ops1,t+s+u); |
---|
173 | regressreport('Test 34',fail) |
---|
174 | fail = regresstest(F,obj,ops2,t+s+u); |
---|
175 | regressreport('Test 35',fail) |
---|
176 | fail = regresstest(F,obj,ops3,t+s+u); |
---|
177 | regressreport('Test 36',fail) |
---|
178 | |
---|
179 | sdpvar x s t u |
---|
180 | F = set(sos(1+x+16*s*x^2+13*u+t))+set(sos(2+2*x+(-8+u)*x^4+5-pi*t))+set(t>0)+set(t+u>0); |
---|
181 | obj = s; |
---|
182 | fail = regresstest(F,obj,ops1,t+s+u); |
---|
183 | regressreport('Test 37',fail) |
---|
184 | fail = regresstest(F,obj,ops2,t+s+u); |
---|
185 | regressreport('Test 38',fail) |
---|
186 | fail = regresstest(F,obj,ops3,t+s+u); |
---|
187 | regressreport('Test 39',fail) |
---|
188 | |
---|
189 | sdpvar x s u |
---|
190 | F = set(sos(x+(t-100)*x^2+4*s-2+u))+set(s>0) + set(s<3) + set(u<4) + set(u>3) + set(t<102)+set(t>101.8)+set(t>0); |
---|
191 | obj = -s-t; |
---|
192 | fail = regresstest(F,obj,ops1,t+s+u); |
---|
193 | regressreport('Test 40',fail) |
---|
194 | fail = regresstest(F,obj,ops2,t+s+u); |
---|
195 | regressreport('Test 41',fail) |
---|
196 | fail = regresstest(F,obj,ops3,t+s+u); |
---|
197 | regressreport('Test 42',fail) |
---|
198 | |
---|
199 | |
---|
200 | sdpvar x s t u |
---|
201 | F = set(sos(1+x+s*x^2))+set(sos(2+2*s*x+u*x^4)); |
---|
202 | obj = s; |
---|
203 | fail = regresstest(F,obj,ops1,t+s+u); |
---|
204 | regressreport('Test 43',fail) |
---|
205 | fail = regresstest(F,obj,ops2,t+s+u); |
---|
206 | regressreport('Test 44',fail) |
---|
207 | fail = regresstest(F,obj,ops3,t+s+u); |
---|
208 | regressreport('Test 45',fail) |
---|
209 | |
---|
210 | end |
---|
211 | sdpvar x y a b c |
---|
212 | V = x^2*a+b*y^2+x*y+3; |
---|
213 | F=set(sos(V))+set([a-4 b c]); |
---|
214 | obj=a; |
---|
215 | fail = regresstest(F,obj,ops1,a+b+c); |
---|
216 | regressreport('Test 46',fail) |
---|
217 | fail = regresstest(F,obj,ops2,a+b+c); |
---|
218 | regressreport('Test 47',fail) |
---|
219 | fail = regresstest(F,obj,ops3,a+b+c); |
---|
220 | regressreport('Test 48',fail) |
---|
221 | |
---|
222 | |
---|
223 | sdpvar x s t |
---|
224 | F = set(sos(x^4+(s+t-2)*x^3+s+t)); |
---|
225 | obj = max(s,t); |
---|
226 | fail = regresstest(F,obj,ops1,s+t); |
---|
227 | regressreport('Test 49',fail) |
---|
228 | fail = regresstest(F,obj,ops2,s+t); |
---|
229 | regressreport('Test 50',fail) |
---|
230 | fail = regresstest(F,obj,ops3,s+t); |
---|
231 | regressreport('Test 51',fail) |
---|
232 | |
---|
233 | |
---|
234 | % Markus tentacles problem |
---|
235 | sdpvar x y a |
---|
236 | f = x^4 * y^2 + x^2 * y^4 - 3 * x^2 * y^2 + 1, k = 0; |
---|
237 | df = jacobian(f, [x y]); |
---|
238 | g = 1 - (df(1)^2 + df(2)^2) * (x^2 + y^2); |
---|
239 | if k >= 0 |
---|
240 | v = monolist([x; y], 2*k); |
---|
241 | coeffVec = sdpvar(length(v), 1); |
---|
242 | t = coeffVec' * v; |
---|
243 | constraints = set(sos(f - a - t * g)) + set(sos(t)); |
---|
244 | else |
---|
245 | coeffVec = []; |
---|
246 | constraints = set(sos(f - a)); |
---|
247 | end |
---|
248 | F = constraints; |
---|
249 | obj = -a; |
---|
250 | fail = regresstest(F,obj,ops1,[a; coeffVec]); |
---|
251 | regressreport('Test 52',fail) |
---|
252 | fail = regresstest(F,obj,ops2,[a; coeffVec]); |
---|
253 | regressreport('Test 53',fail) |
---|
254 | fail = regresstest(F,obj,ops3,[a; coeffVec]); |
---|
255 | regressreport('Test 54',fail) |
---|
256 | |
---|
257 | |
---|
258 | |
---|
259 | |
---|
260 | return |
---|
261 | |
---|
262 | |
---|
263 | |
---|
264 | F = set(sos(x^4+z^6))+set(sos(x^2+(t+s+w-6)*x*z)) + set([w;s]>0)+set(t>3); |
---|
265 | solvesos(F,[],sdpsettings('sos.traceobj',1,'sos.model',1,'solver','sedumi'),s+t+w) |
---|
266 | double([s t w]) |
---|
267 | solvesos(F,[],sdpsettings('sos.traceobj',1,'sos.model',0,'solver','sedumi'),s+t+w) |
---|
268 | double([s t w]) |
---|
269 | |
---|
270 | % Automatic detection of non-negative cones |
---|
271 | sdpvar x s t u |
---|
272 | F = set(sos(1+x+16*x^2+1)); |
---|
273 | solvesos(F,[],sdpsettings('sos.traceobj',1,'sos.solvedual',0,'solver','sedumi')) |
---|
274 | |
---|
275 | |
---|
276 | % Failure before since no free |
---|
277 | sdpvar x s t u |
---|
278 | F = set(sos(x+(t-100)*x^2+4*s-2+u))+set(s>0) + set(s<3) + set(u<4) + set(u>3) + set(t<102)+set(t>101.8)+set(t>0); |
---|
279 | solvesos(F,-s-t,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t) |
---|
280 | double([s t]) |
---|
281 | |
---|
282 | % Mixed constraint, all free |
---|
283 | sdpvar x s t |
---|
284 | F = set(sos(x+(t-100)*x^2+4*s-2))+set(s>1) + set(s<3) + set(t<102)+set(t>101.8)+set(2*s+t>104); |
---|
285 | solvesos(F,s+t,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t) |
---|
286 | double([s t]) |
---|
287 | |
---|
288 | % Mixed constraint, one free |
---|
289 | sdpvar x s t |
---|
290 | F = set(sos(x+(t-100)*x^2+4*s-2))+set(s>1) + set(s>0) + set(s<3) + set(t<102)+set(t>101.8)+set(2*s+t>104); |
---|
291 | solvesos(F,s+t,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t) |
---|
292 | double([s t]) |
---|
293 | |
---|
294 | |
---|
295 | % Mixed constraint, all free |
---|
296 | sdpvar x s t |
---|
297 | F = set(sos(x+(t-100)*x^2+4*s-2))+set(s>1) + set(t>0) + set(s<3) + set(t<102)+set(t>101.8)+set(2*s+t>104); |
---|
298 | solvesos(F,s+t,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t) |
---|
299 | double([s t]) |
---|
300 | |
---|
301 | |
---|
302 | |
---|
303 | % Mixed constraint, all free |
---|
304 | sdpvar x s t |
---|
305 | F = set(sos(x+(t-100)*x^2+4*s-2))+set(1.001*s>1) + set(1.001*t>1) + set(s<3) + set(t<102)+set(1.01*t>101.8)+set(2*s+t>104); |
---|
306 | solvesos(F,s+t,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t) |
---|
307 | double([s t]) |
---|
308 | |
---|
309 | |
---|
310 | % Mixed constraint, negative variables |
---|
311 | sdpvar x s u t |
---|
312 | F = set(sos(x+(t-100)*x^2+pi*s+6+u)) + set(t>1) + set(-12.34567<s<-1) + set(t<102)+set(t>101.8); |
---|
313 | solvesos(F,s+t+u,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t+u) |
---|
314 | double([s t u]) |
---|
315 | |
---|
316 | % Mixed constraint, all free |
---|
317 | sdpvar x s t u |
---|
318 | F = set(sos(x+t*x^2+s+u)) + set(t>1.2) + set(s+t==4) + set(u<0.01) + set(u+t==0.1) |
---|
319 | solvesos(F,s+t,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t+u) |
---|
320 | double([s t u]) |
---|
321 | |
---|
322 | |
---|
323 | % Mixed constraint, all constrained |
---|
324 | sdpvar x s t u |
---|
325 | F = set(sos(x+t*x^2+s+u)) + +set(u>0) + set(t==9) + set(s+t==11) + set(u==0.01) |
---|
326 | solvesos(F,s+t,sdpsettings('sos.traceobj',0,'sos.solvedual',1),s+t+u) |
---|
327 | double([s t u]) |
---|
328 | |
---|
329 | % |
---|
330 | % |
---|
331 | % % Failure : t is not used |
---|
332 | sdpvar x s t u |
---|
333 | F = set(sos(1+x+s*x^2))+set(sos(2+2*s*x+u*x^4)); |
---|
334 | solvesos(F,[],sdpsettings('sos.traceobj',1,'sos.solvedual',1,'solver','sedumi'),s+t+u) |
---|
335 | double([s t u]) |
---|
336 | |
---|
337 | |
---|
338 | |
---|
339 | |
---|
340 | |
---|
341 | % Automatic detection of diagional constraints |
---|
342 | sdpvar x s t u |
---|
343 | F = set(sos(s+x+x^2))+set(sos(s+2*s*x+u*x^4)); |
---|
344 | solvesos(F,[],sdpsettings('sos.traceobj',1,'sos.solvedual',1,'solver','sedumi'),s+u) |
---|
345 | double([s t u]) |
---|
346 | |
---|
347 | |
---|
348 | |
---|
349 | % Automatic detection of diagional constraints |
---|
350 | sdpvar x s t u |
---|
351 | F = set(sos(1+x^2+x^4)); |
---|
352 | solvesos(F,[],sdpsettings('sos.traceobj',1,'sos.solvedual',1,'solver','sedumi')) |
---|
353 | double([s t u]) |
---|
354 | |
---|
355 | |
---|
356 | % Automatic detection of diagional constraints |
---|
357 | sdpvar x y s t u |
---|
358 | F = set(sos(1+x^2+x^4+x^2*y^2+y^4))+set(sos((7-t)*y^8+y^12)); |
---|
359 | solvesos(F,[],sdpsettings('sos.traceobj',1,'sos.solvedual',1,'solver','sedumi'),t) |
---|
360 | double([s t u]) |
---|
361 | |
---|
362 | |
---|
363 | x = sdpvar(1,1); |
---|
364 | y = sdpvar(1,1); |
---|
365 | z = sdpvar(1,1); |
---|
366 | p = x^4*y^2+x^2*y^4+z^6-3*x*x*y*y*z*z; |
---|
367 | solvesos(set(sos(p))) |
---|
368 | solvesos(set(sos(p)),[],sdpsettings('sos.model',2)) |
---|
369 | |
---|
370 | % PP, p 41 |
---|
371 | x = sdpvar(1,1); |
---|
372 | y = sdpvar(1,1); |
---|
373 | z = sdpvar(1,1); |
---|
374 | p = 2*x^4+2*x^3*y-x^2*y^2+5*y^4; |
---|
375 | solvesos(set(sos(p))) |
---|
376 | solvesos(set(sos(p)),[],sdpsettings('sos.model',2)) |
---|
377 | |
---|
378 | % PP, p 42 |
---|
379 | x = sdpvar(1,1); |
---|
380 | y = sdpvar(1,1); |
---|
381 | z = sdpvar(1,1); |
---|
382 | p = x^4-(2*y*z+1)*x^2+(y^2*z^2+2*y*z+2) |
---|
383 | solvesos(set(sos(p))) |
---|
384 | solvesos(set(sos(p)),[],sdpsettings('sos.model',2)) |
---|
385 | |
---|
386 | |
---|
387 | % PP, p 43 |
---|
388 | x = sdpvar(1,1); |
---|
389 | y = sdpvar(1,1); |
---|
390 | z = sdpvar(1,1); |
---|
391 | p = x^4+x^2+z^6-3*x*x*z*z; |
---|
392 | solvesos(set(sos(p))) |
---|
393 | solvesos(set(sos(p)),[],sdpsettings('sos.model',2)) |
---|
394 | |
---|
395 | x = sdpvar(1,1); |
---|
396 | y = sdpvar(1,1); |
---|
397 | z = sdpvar(1,1); |
---|
398 | p = x^2+y^2+x^4+z^6+(x*x-y^3+z*z*y)^2 |
---|
399 | solvesos(set(sos(p))) |
---|
400 | solvesos(set(sos(p)),[],sdpsettings('sos.model',2)) |
---|
401 | |
---|
402 | |
---|
403 | % robinson |
---|
404 | x = sdpvar(1,1); |
---|
405 | y = sdpvar(1,1); |
---|
406 | p = x^6+y^6-x^4*y^2-y^4*x^2-x^4-y^4-x^2-y^2+3*x^2*y^2+10 |
---|
407 | solvesos(set(sos(p))) |
---|
408 | solvesos(set(sos(p)),[],sdpsettings('sos.model',2)) |
---|
409 | |
---|
410 | |
---|
411 | |
---|
412 | |
---|
413 | |
---|
414 | |
---|
415 | |
---|
416 | |
---|
417 | |
---|
418 | function regressreport(text,fail) |
---|
419 | |
---|
420 | switch fail |
---|
421 | case 0 |
---|
422 | disp(['No problems in ' text]); |
---|
423 | case 1 |
---|
424 | disp(['Objective differ in ' text]); |
---|
425 | case 2 |
---|
426 | disp(['Infeasible solution in ' text]); |
---|
427 | otherwise |
---|
428 | end |
---|
429 | |
---|
430 | |
---|
431 | function fail = regresstest(F,obj,ops,pv); |
---|
432 | |
---|
433 | if nargin==3 |
---|
434 | pv = []; |
---|
435 | end |
---|
436 | |
---|
437 | ops.sos.model = 1; |
---|
438 | solvesos(F,obj,ops,pv); |
---|
439 | obj1 = double(obj); |
---|
440 | p1s = checkset(F(find(is(F,'sos')))); |
---|
441 | p1e = checkset(F(find(~is(F,'sos')))); |
---|
442 | |
---|
443 | ops.sos.model = 2; |
---|
444 | solvesos(F,obj,ops,pv); |
---|
445 | obj2 = double(obj); |
---|
446 | p2s = checkset(F(find(is(F,'sos')))); |
---|
447 | p2e = checkset(F(find(~is(F,'sos')))); |
---|
448 | |
---|
449 | |
---|
450 | fail = 0; |
---|
451 | |
---|
452 | if abs(obj1-obj2) > 1e-4 |
---|
453 | fail = 1; |
---|
454 | end |
---|
455 | |
---|
456 | if any(p1s>1e-4) |
---|
457 | fail = 2; |
---|
458 | p1s |
---|
459 | end |
---|
460 | if any(p2s>1e-4) |
---|
461 | fail = 2; |
---|
462 | p2s |
---|
463 | end |
---|
464 | if any(p1e<-1e-4) |
---|
465 | fail = 2; |
---|
466 | p1e |
---|
467 | end |
---|
468 | if any(p2e<-1e-4) |
---|
469 | fail = 2; |
---|
470 | p2e |
---|
471 | end |
---|
472 | if fail==0 |
---|
473 | disp('Correct solution'); |
---|
474 | end |
---|
475 | |
---|