ADMITpresolveADMITpresolve
ADMITpresolve presolves the feasibility problem using interval arithmetics
[INFEASIBLE, BOUNDS_XI, BOUNDS_IMPL, BOUNDS_CONS] = ...
ADMITpresolve(OPTINFO,[OPTIONS])
Performs a feasibility test based on interval arithmetics. This approach
to feasibility testing is quite conservative (see manual). It is however
fast and actually necessary to derive implicit bounds on additional
variables and also other variables for which no explicit bounds were
given. The function is therefore used as a presolve algorithm and if the
problem is not proved infeasible, the less conservative feasibility
testing methods based on solving SDPs/MILPs are used. To only use the
presolve algorithm set the option named "ESTIMATE.presolve.only" to "1".
The presolver can be run in different modes. Please see ADMIToptions help
texts (section ESTIMATE.presolve.mode) for further information.
Inputs
[...] : square brackets notify that input is optional.
OPTINFO : valid ADMITinfo object
OPTIONS : options structure; if OPTIONS
is a valid options structure, then the option
"ESTIMATE.bounds.forcePositive" will be used to ensure that
all lower bounds on variables are positive; this is
necessary for the MILP-solvers;
also option ESTIMATE.presolve.maxIterations will be used
Returns
INFEASIBLE : ("0" or "1") indicating if problem is feasible based
on a interval arithmetics feasibility test
BOUNDS_XI : cell array with ADMITinterval objects containing the
bounds on the variables in the vector xi
BOUNDS_IMPL : cell array with ADMITinterval objects containing the
bounds on implications
BOUNDS_CONS : cell array with ADMITinterval objects containing the
bounds on constraints
Examples
opt = ADMITproject();
% Estimate interior of an ellipse
opt = opt + ADMITconstraint('a^2 + b^2 <= 2') + ...
ADMITconstraint('a := [-10,10]') + ...
ADMITconstraint('b := [-10,10]');
opt = opt + ADMITvariable('a := {ofInterest}') + ...
ADMITvariable('b := {ofInterest}')
[optInfo,opt] = ADMITcompose(opt)
% employ more sophisticated presolve mode
ops = ADMITsetOptions('ESTIMATE.presolve.mode',2);
% check if initial problem is feasible
infeasible = ADMITpresolve(optInfo,ops)
% no check infeasible region [3,4]x[3,4]
optInfo = ADMITcompose(optInfo,'setBounds',ADMITconstraint('a := [3,4]'));
optInfo = ADMITcompose(optInfo,'setBounds',ADMITconstraint('b := [3,4]'));
infeasible = ADMITpresolve(optInfo,ops)
% no check feasible region [1,2]x[0,1]
optInfo = ADMITcompose(optInfo,'setBounds',ADMITconstraint('a := [1,2]'));
optInfo = ADMITcompose(optInfo,'setBounds',ADMITconstraint('b := [0,1]'));
infeasible = ADMITpresolve(optInfo,ops)