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

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

Added original make3d

File size: 4.5 KB
Line 
1function regress_dualize
2
3
4ops = sdpsettings('verbose',0);
5
6% TEST 1
7yalmip('clear')
8A = randn(3,3);A = -A*A';
9P = sdpvar(3,3);
10t = sdpvar(1,1);
11y = sdpvar(1,1);
12F = set(A'*P+P*A < -eye(3));
13F = F + set(P > A*A') + set(P(3,3)>0) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>12);
14obj = trace(P)+y;
15
16fail  = regresstest(F,obj,ops);
17regressreport('Test 1',fail)
18
19% TEST 2
20yalmip('clear')
21A = randn(3,3);A = -A*A';
22P = sdpvar(3,3);
23t = sdpvar(1,1);
24y = sdpvar(1,1);
25F = set(A'*P+P*A < -eye(3));
26F = F + set(P > 0) + set(P(3,3)>0) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>12);
27obj = trace(P)+y;
28
29fail  = regresstest(F,obj,ops);
30regressreport('Test 2',fail)
31
32yalmip('clear')
33A = randn(3,3);A = -A*A';
34P = sdpvar(3,3);
35t = sdpvar(1,1);
36y = sdpvar(1,1);
37F = set(A'*P+P*A < -eye(3));
38F = F + set(P > 0) + set(P(3,3)>0) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>0);
39obj = trace(P)+y;
40
41fail  = regresstest(F,obj,ops);
42regressreport('Test 3',fail)
43
44yalmip('clear')
45A = randn(3,3);A = -A*A';
46P = sdpvar(3,3);
47t = sdpvar(1,1);
48y = sdpvar(1,1);
49F = set(A'*P+P*A < -eye(3));
50F = F + set(P > 0) + set(P(3,3)>0) + set(t-y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>0);
51obj = trace(P);
52
53fail  = regresstest(F,obj,ops);
54regressreport('Test 4',fail)
55
56yalmip('clear')
57X = sdpvar(3,3);
58x = sdpvar(3,1);
59obj = trace(X)+sum(x);
60F = set(X>0) + set(cone(x(2:end),x(1))) + set(trace(X)==x(1)+2*x(2)+3*x(3)+4)+set(X(1,3)==8);
61fail  = regresstest(F,obj,ops);
62regressreport('Test 5',fail)
63
64yalmip('clear')
65X = sdpvar(3,3);
66x = sdpvar(3,1);
67obj = trace(X)+sum(x);
68F = set(X>0) + set(cone(x(2:end),1+x(1))) + set(trace(X)==x(1)+2*x(2)+3*x(3)+4)+set(X(1,3)==8);
69fail  = regresstest(F,obj,ops);
70regressreport('Test 6',fail)
71
72yalmip('clear')
73X = sdpvar(3,3);
74x = sdpvar(3,1);
75obj = trace(X)+sum(x);
76F = set(X>0) + set(cone(x(2:end),1+x(1))) + set(trace(X)==x(1)+2*x(2)+3*x(3)+4)+set(X(1,3)==8);
77fail  = regresstest(F,obj,ops);
78regressreport('Test 7',fail)
79
80yalmip('clear')
81X = sdpvar(3,3);
82x = sdpvar(3,1);
83obj = trace(X)+sum(x);
84F = set(X>0) + set(cone(1-x(2:end),1+x(1))) + set(trace(X)==x(1)+2*x(2)+3*x(3)+4)+set(X(1,3)==8);
85fail  = regresstest(F,obj,ops);
86regressreport('Test 8',fail)
87
88yalmip('clear')
89A = randn(3,3);A = -A*A';
90P = sdpvar(3,3);
91t = sdpvar(1,1);
92y = sdpvar(1,1);
93F = set(A'*P+P*A < -eye(3));
94F = F + set(P > A*A') + set(P(3,3)>0) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>12)+set(t>-12);
95obj = trace(P)+y;
96fail  = regresstest(F,obj,ops);
97regressreport('Test 9',fail)
98
99%yalmip('clear')
100A = randn(3,3);A = -A*A';
101P = sdpvar(3,3);
102%t = sdpvar(1,1);
103%y = sdpvar(1,1);
104F = set(A'*P+P*A < -eye(3));
105F = F + set(P > A*A') + set(P(3,3)>0) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>12)+set(t>-12);
106obj = trace(P)+y+t;
107fail  = regresstest(F,obj,ops);
108regressreport('Test 10',fail)
109
110yalmip('clear')
111A = randn(3,3);A = -A*A';
112P = sdpvar(3,3);
113t = sdpvar(1,1);
114y = sdpvar(1,1);
115F = set(A'*P+P*A < -eye(3));
116F = F + set(P > A*A') + set(P(3,3)>0) + set(P>0) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>12)+set(t>-12);
117obj = trace(P)+y+t;
118fail  = regresstest(F,obj,ops);
119regressreport('Test 11',fail)
120
121%yalmip('clear')
122A = randn(3,3);A = -A*A';
123P = sdpvar(3,3);
124%t = sdpvar(1,1);
125y = sdpvar(1,1);
126F = set(A'*P+P*A < -eye(3));
127F = F + set(P > A*A') + set(P(3,3)>0) + set(P>0) + set(t+y > 7) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>12)+set(t>-12);
128obj = trace(P)+y+t;
129fail  = regresstest(F,obj,ops);
130regressreport('Test 12',fail)
131
132yalmip('clear')
133A = randn(3,3);A = -A*A';
134P = sdpvar(3,3);
135t = sdpvar(1,1);
136y = sdpvar(1,1);
137F = set(A'*P+P*A < -eye(3));
138F = F + set(2*P > A*A') + set(P(3,3)>0) + set(P>0) + set(t+y > 7) + set(t+y > 7) + set(P(2,2)>4)+set(P(1,1:2)>t) + set(t>12)+set(t>-12);
139obj = trace(P)+y+t;
140fail  = regresstest(F,obj,ops);
141regressreport('Test 13',fail)
142
143
144
145
146function regressreport(text,fail)
147
148switch fail
149    case 0
150        disp(['No problems in ' text]);
151    case 1
152        disp(['Objective differ in ' text]);
153    case 2
154        disp(['Infeasible solution in ' text]);
155    otherwise
156end
157
158   
159function fail  = regresstest(F,obj,ops);
160solvesdp(F,obj,ops);
161obj1 = double(obj);
162p1 = checkset(F);
163
164x = recover(getvariables(F));
165setsdpvar(x,0*double(x));
166
167[Fdual,objdual,X,free,err]  = dualize(F,obj);
168solvesdp(Fdual,-objdual,ops);
169
170if length(X)>0
171    for i = 1:length(X);setsdpvar(X{i},dual(Fdual(i)));end
172end
173if ~isempty(free)
174    setsdpvar(free,dual(Fdual(end)));
175end
176
177obj2 = double(obj);
178p2 = checkset(Fdual);
179
180fail = 0;
181
182if abs(obj1-obj2) > 1e-4
183    fail = 1;
184    [obj1 obj2]
185end
186if any(p2<-1e-5)
187    fail = 2;
188end
189
Note: See TracBrowser for help on using the repository browser.