Dynamic-Calibration/utils/YALMIP-master/solvers/callintlinprog.m

53 lines
1.2 KiB
Mathematica
Raw Normal View History

2019-12-18 11:25:45 +00:00
function output = callintlinprog(interfacedata)
% Standard input interface
options = interfacedata.options;
model = yalmip2intlinprog(interfacedata);
if options.savedebug
save intlinprogdebug model ops
end
solvertime = tic;
showprogress('Calling INTLINPROG',options.showprogress);
[x,fval,exitflag,output] = intlinprog(model.c, model.intcon, model.A, model.b, model.Aeq, model.beq, model.lb, model.ub,model.ops);
solvertime = toc(solvertime);
problem = 0;
if isempty(x)
x = zeros(length(model.c),1);
end
% Check, currently not exhaustive...
switch exitflag
case 1
problem = 0;
case -2
problem = 1;
case -3
problem = 2;
otherwise
problem = 9;
end
infostr = yalmiperror(problem,'INTLINPROG');
% Save all data sent to solver?
if options.savesolverinput
solverinput.model = model;
solverinput.options = ops;
else
solverinput = [];
end
% Save all data from the solver?
if options.savesolveroutput
solveroutput.x = x;
solveroutput.fval = fval;
solveroutput.exitflag = exitflag;
solveroutput.output=output;
else
solveroutput = [];
end
% Standard interface
output = createOutputStructure(x(:),[],[],problem,infostr,solverinput,solveroutput,solvertime);