[37] | 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 | |
---|