source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/solvers/callbpmpd.m @ 37

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

Added original make3d

File size: 2.3 KB
Line 
1function output = callbpmpd(interfacedata)
2
3% Author Johan Löfberg
4% $Id: callbpmpd.m,v 1.4 2005/05/07 13:53:20 joloef Exp $
5
6% Retrieve needed data
7options = interfacedata.options;
8F_struc = interfacedata.F_struc;
9c       = interfacedata.c;
10K       = interfacedata.K;
11x0      = interfacedata.x0;
12Q       = interfacedata.Q;
13lb      = interfacedata.lb;
14ub      = interfacedata.ub;
15 
16if ~isempty(F_struc)
17    A =-F_struc(1:end,2:end);
18    b = F_struc(1:end,1); 
19    e = [zeros(K.f,1);-ones(K.l,1)];
20else
21    A = [];
22    b = [];
23    e = [];
24end
25
26if isempty(ub) | all(isinf(lb))
27    llist = [];
28    lval = [];
29else
30    llist = find(~isinf(lb));
31    lval = lb(llist);       
32end
33
34if isempty(ub) | all(isinf(ub))
35    ulist = [];
36    uval = [];
37else
38    ulist = find(~isinf(ub));
39    uval = ub(ulist);   
40end
41
42Q = 2*Q;
43b = full(b);
44c = full(c);
45
46if nnz(Q)==0
47    Q = [];
48end
49
50opts = options.bpmpd.opts;
51if options.savedebug
52    ops = options.quadprog;
53    save bpmpdebug Q A b c e llist lval ulist uval opts
54end
55
56if options.showprogress;showprogress(['Calling ' interfacedata.solver.tag],options.showprogress);end
57solvertime = clock;
58[x,y,s,w,how] = bp(Q, A, b, c, e,llist,lval,ulist,uval,opts);
59if interfacedata.getsolvertime solvertime = etime(clock,solvertime);else solvertime = 0;end
60
61problem = 0;
62
63% Internal format for duals
64D_struc = -y;
65
66switch how
67    case 'optimal solution'
68        problem = 0;
69    case 'infeasible primal'
70        problem = 1;
71    case 'infeasible dual'
72        problem = 2;
73    otherwise
74        problem = 11;
75end
76
77% Save all data sent to solver?
78if options.savesolverinput
79    solverinput.A = A;
80    solverinput.b = b;
81    solverinput.c = c;
82    solverinput.Q = Q;
83    solverinput.e = e;
84    solverinput.llist = llist;
85    solverinput.lval = lval;
86    solverinput.ulist = ulist;
87    solverinput.uval = uval;   
88    solverinput.bpoptss = bpopt;
89else
90    solverinput = [];
91end
92
93% Save all data from the solver?
94if options.savesolveroutput
95    solveroutput.x = x;
96    solveroutput.y = y;
97    solveroutput.s = s;
98    solveroutput.w = w;
99    solveroutput.how=how; 
100else
101    solveroutput = [];
102end
103
104
105
106% Standard interface
107output.Primal      = x;
108output.Dual        = D_struc;
109output.Slack       = [];
110output.problem     = problem;
111output.solverinput = solverinput;
112output.solveroutput= solveroutput;
113output.solvertime  = solvertime;
Note: See TracBrowser for help on using the repository browser.