Numeric Tolerances¶
PICOS allows you to finetune how accurate your solution needs to be. Tolerances fall in three categories:
Feasibility tolerances, abbreviated
fsb
, control the magnitude of constraint violation that is tolerated. The integrality tolerance also falls into this category.Optimality tolerances, abbreviated
opt
, control the maximum allowed deviation from the mathematically exact optimum solution and serve as a termination criterion. An exception is the the Simplex algorithm that uses the dual feasibility as its stopping criterion.The remaining tolerances are used at intermediate steps of specific algorithms, such as the Markowitz threshold used in a pivoting strategy of the Simplex algoritm.
Solvers differ in how they measure deviations from the ideal values. Some bound
absolute values while others consider the deviation in relation to the
magnitude of the numbers that occur in the problem.
PICOS abbreviates the former measurement with abs
and the latter with
rel
.
If both measurements are supported by a solver, then the standard approach is to
allow values if they are sufficiently accurate according to either one.
If solvers use a single value for primal and dual feasibility but PICOS
is configured to use differing accuracies, supplied in the options with the
prim
and dual
abbreviations respectively, it will supply the smaller of
both values to such solvers.
By default, PICOS overrides the solver’s default accuracies with common values,
so that the choice of solver becomes transparent to you.
Given that P
is your problem instance, you can make PICOS respect the
solvers’ individual choices as follows:
>>> import picos
>>> P = picos.Problem()
>>> P.options["*_tol"] = None
Comparison Table¶
The table shows what tolerance options
are supported by
PICOS and each solver, and what their respective default value is.
Option 
PICOS 
CPLEX 
CVXOPT 
ECOS 
GLPK 
Gurobi 
MOSEK 
SCIP 
SMCP 

unused 
unused ? 
unused 

unused ? 
unused ? 

unused 
unused ? 
unused 

unused ? 
unused 

unused 
unused 
unused 
unused 

unused 

no IP 
unused 
no IP 

no IP 
no IP 

no IP 
unused 
no IP 


no SX 
no SX 
unused ? 
unused 
no SX 
Pooled options
ECOS, CVXOPT, SCIP and SMCP merge rel_prim_fsb_tol and rel_dual_fsb_tol.
CPLEX merges rel_prim_fsb_tol, rel_dual_fsb_tol and rel_ipm_opt_tol.
SCIP appears to merge abs_ipm_opt_tol with abs_bnb_opt_tol and rel_ipm_opt_tol with rel_bnb_opt_tol with its
limits/absgap
andlimits/gap
options, respectively.
Legend
? 
It is unclear whether an absolute or relative measure is used, or if an option is not available. 
SX 
Linear Programs via Simplex 
LP 
Linear Programs via InteriorPoint Method 
CP 
Conic Programs 
LQ 
Linear and Quadratic Programs 
QP 
Quadratic Programs 
QC 
Quadratically Constrained (Quadratic) Programs 
NL 
Nonlinear Programs 
IP 
(Mixed) Integer Programs 