source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/solvers/callsdpa.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 = callsdpa(interfacedata)
2
3% Author Johan Löfberg
4% $Id: callsdpa.m,v 1.4 2005/06/08 13:52:18 joloef Exp $
5
6% Retrieve needed data
7options = interfacedata.options;
8F_struc = interfacedata.F_struc;
9c       = interfacedata.c;
10K       = interfacedata.K;
11x0      = interfacedata.x0;
12ub      = interfacedata.ub;
13lb      = interfacedata.lb;
14
15% Bounded variables converted to constraints
16if ~isempty(ub)
17    [F_struc,K] = addbounds(F_struc,K,ub,lb);
18end
19
20% Convert from internal (sedumi) format
21[mDIM,nBLOCK,bLOCKsTRUCT,c,F] = sedumi2sdpa(F_struc,c,K);
22
23solvertime = clock;
24
25if options.verbose==0
26    options.sdpa.print = 'no';
27else
28    options.sdpa.print = 'display';
29end
30
31if options.savedebug
32    ops = options.sdpa;
33    save sdpadebug mDIM nBLOCK bLOCKsTRUCT c F ops
34end
35
36if options.showprogress;showprogress(['Calling ' interfacedata.solver.tag],options.showprogress);end
37
38solvertime = clock;
39[objVal,x,X,Y,INFO]=sdpam(mDIM,nBLOCK,bLOCKsTRUCT,c,F,[],[],[],options.sdpa);
40solvertime = etime(clock,solvertime);
41
42% Create variables in YALMIP internal format
43Primal = x;
44
45Dual = [];
46for i = 1:length(Y)
47    Dual = [Dual;Y{i}(:)];
48end
49
50Slack = [];
51if options.saveduals
52    for i = 1:length(X)
53        Slack = [Slack;X{i}(:)];
54    end
55end
56
57switch (INFO.phasevalue)
58    case 'pdOPT'
59        problem = 0;
60    case {'noINFO','pFEAS','dFEAS','pdFEAS'}
61        problem = 3;
62    case 'pFEAS_dINF'
63        problem = 2;
64    case 'pINF_dFEAS'
65        problem = 1;
66    case 'pUNBD'
67        problem = 2;
68    case 'dUNBD'
69        problem = 1;
70    case 'pdINF'
71        problem = 12;
72    otherwise
73        problem = -1;
74end
75infostr = yalmiperror(problem,interfacedata.solver.tag);
76
77if options.savesolveroutput
78    solveroutput.objVal = objVal;
79    solveroutput.x = x;
80    solveroutput.X = X;
81    solveroutput.Y = Y;
82    solveroutput.INFO = INFO;
83else
84    solveroutput = [];
85end
86
87if options.savesolverinput
88    solverinput.mDIM = mDIM;
89    solverinput.nBLOCK=nBLOCK;
90    solverinput.bLOCKsTRUCT=bLOCKsTRUCT;
91    solverinput.c=c;
92    solverinput.F=F;
93else
94    solverinput = [];
95end
96
97% Standard interface
98output.Primal      = Primal;
99output.Dual        = Dual;
100output.Slack       = Slack;
101output.problem     = problem;
102output.infostr     = infostr;
103output.solverinput = solverinput;
104output.solveroutput= solveroutput;
105output.solvertime  = solvertime;
Note: See TracBrowser for help on using the repository browser.