libminizinc
libminizinc copied to clipboard
float_EPS=0.0 leads to strong presolve
The following model arguably should produce optimal obj value 10 with MIP at default solver's tolerance settings and -Dfloat_EPS=0.0:
array [1..2] of var 0.0..100.0: x;
solve maximize
if x[1]<=4.9999999 /\ x[2]>=5.0000001
then x[1]+x[2] else 0.0 endif;
constraint x[1]==x[2];
output [
"OBJ_SOLVER: \(_objective), x[]: \(x), "
++ "OBJ_ACTUAL: \(if x[1]<=4.9999999 /\ x[2]>=5.0000001
then x[1]+x[2] else 0 endif)"
];
However the conjunction is presolved as false, as can be seen from the LP file. Moreover, it is not presolved out at default setting of float_EPS (1e-6) which only strengthens the inequalities.