1 | function micp |
---|
2 | |
---|
3 | randn('seed',123456); |
---|
4 | n = 5; |
---|
5 | % 65.63177408018771 6.95052852960134 -58.66230788287043 -70.86445052912004 58.37564024957875 |
---|
6 | % 17.58996579270265 65.53001366712473 18.43985990767680 -58.43579533652219 -72.32340882851518 |
---|
7 | % -46.45728349558073 15.51300078651673 68.32913865172714 18.82218749426777 -57.90310836270277 |
---|
8 | % -79.19194296790369 -53.92234161527504 21.23787385808123 65.53955212353939 17.48548000466040 |
---|
9 | % 51.25486176425121 -73.14184210768217 -50.35188380380193 19.83022901147247 67.22698658022694 |
---|
10 | P = toeplitz(randn(n,1)*100)+randn(n,n)*5; |
---|
11 | Z = intvar(n,n,'toeplitz'); |
---|
12 | t = sdpvar(n,n,'full'); |
---|
13 | e = P(:)-Z(:); |
---|
14 | ops = sdpsettings('solver','bnb','verbose',2); |
---|
15 | |
---|
16 | F = set(-t < P-Z < t); |
---|
17 | obj = sum(sum(t)); |
---|
18 | sol = solvesdp(F,obj,ops); |
---|
19 | mbg_asserttolequal(sol.problem,0); |
---|
20 | mbg_asserttolequal(double(obj), 66.18236738983525, 1e-5); |
---|
21 | |
---|
22 | F = set([]); |
---|
23 | obj = norm(e,1); |
---|
24 | sol = solvesdp(F,obj,ops); |
---|
25 | mbg_asserttolequal(sol.problem,0); |
---|
26 | mbg_asserttolequal(double(obj), 66.18236738983525, 1e-5); |
---|
27 | |
---|
28 | obj = e'*e; |
---|
29 | F = set([]); |
---|
30 | sol = solvesdp(F,obj,ops); |
---|
31 | mbg_asserttolequal(sol.problem,0); |
---|
32 | mbg_asserttolequal(double(obj), 3.352603490492911e+002, 1e-5); |
---|
33 | |
---|
34 | t = sdpvar(1,1); |
---|
35 | obj = t; |
---|
36 | F = set(cone(e,t)); |
---|
37 | sol = solvesdp(F,obj,ops); |
---|
38 | mbg_asserttolequal(sol.problem,0); |
---|
39 | mbg_asserttolequal(double(obj), 18.31011603130778, 1e-5); |
---|
40 | |
---|
41 | t = sdpvar(1,1); |
---|
42 | obj = norm(e); |
---|
43 | F = set([]); |
---|
44 | sol = solvesdp(F,obj,ops); |
---|
45 | mbg_asserttolequal(sol.problem,0); |
---|
46 | mbg_asserttolequal(double(obj), 18.31011603130778, 1e-5); |
---|
47 | |
---|
48 | obj = t; |
---|
49 | F = set([t e';e eye(length(e))]>0); |
---|
50 | sol = solvesdp(F,obj,ops); |
---|
51 | mbg_asserttolequal(sol.problem,0); |
---|
52 | mbg_asserttolequal(double(obj), 3.352603420494530e+002, 1e-5); |
---|
53 | |
---|