function output = callipqp(varargin) % Author Johan Löfberg % $Id: callipqp.m,v 1.2 2004/06/30 07:37:03 johanl Exp $ % Retrieve needed data interfacedata = varargin{1}; options = interfacedata.options; F_struc = interfacedata.F_struc; c = interfacedata.c; K = interfacedata.K; x0 = interfacedata.x0; Q = 2*interfacedata.Q; ub = interfacedata.ub; lb = interfacedata.lb; showprogress('Calling IPQP',options.showprogress); if K.f>0 A = -F_struc(1:K.f,2:end); b = F_struc(1:K.f,1); else A = []; b = []; end if K.l>0 C = -F_struc(1+K.f:K.f+K.l,2:end); d = F_struc(1+K.f:K.f+K.l,1); else C = []; d = []; end if ~isempty(ub) C = [C;eye(length(c))]; d = [d;ub]; end if ~isempty(lb) C = [C;-eye(length(c))]; d = [d;-lb]; end solvertime = clock; [x,problem] = ipqp(2*Q,c,C,d,A,b); solvertime = etime(clock,solvertime); % Internal format for duals D_struc = []; switch problem case 0 problem = 0; infostr = yalmiperror(problem,'IPQP'); case 1 problem = 1; infostr = yalmiperror(problem,'IPQP'); otherwise problem = 2; infostr = yalmiperror(problem,'IPQP'); end % Save all data sent to solver? if options.savesolverinput % solverinput.A = A; % solverinput.b = b; % solverinput.C = Aq; % solverinput.q = beq; % solverinput.c = c; % solverinput.H = Q; % solverinput.options = options.nag; else solverinput = []; end % Save all data from the solver? if options.savesolveroutput % solveroutput.x = x; % solveroutput.fmin = fmin; % solveroutput.flag = flag; % solveroutput.output=output; % solveroutput.lambda=lambda; else solveroutput = []; end % Standard interface output.x = x; output.problem = problem; output.infostr = infostr; output.solverinput = solverinput; output.solveroutput= solveroutput; output.solvertime = solvertime; output.D_struc = D_struc;