Closed pmlpm1986 closed 1 year ago
SCIP by default treats absolute values below 1e-9 as zero in many places. For this instance, it means that 4.6666667039999999e-10 objective coefficients do not make it into the problem that SCIP solves.
If I set numerics/epsilon = 1e-12
, I get +2.92427185532635e-04 as optimal value.
But I wouldn't recommend changing numerics/epsilon
in general. This isn't tested.
Thank you. Following your suggestion, I modified that parameter and was able to obtain the expected result. However, I wonder if this option should be kept as it is: shouldn't users be the ones to decide whether or not such low values can be regarded as zero? I suspect this has an impact on performance/matrix sparsity but couldn't it also break a problem?
The value of numerics/epsilon
is used at many different places, mainly to deal with rounding errors in floating point arithmetic.
It would be nice if the readers would notify that very small coefficients are dropped.
I have been using SCIP through pyomo and through the command line and have recently come across a funny result: the solution appears to be calculated correctly, since pyomo stores the variables with the correct result, but the solution is not shown in the printout. I have tested this also in the command line and the result is the same.
The optimal solution is 2.9242718553e-04 (determined through the variables stored in pyomo and confirmed manually and via CPLEX) but SCIP prints that it is +0.00000000000000e+00 instead.
I am using debian bookworm and SCIP 8.0.3 but I had to handle some dependencies in unusual ways to install it.
I am attaching the problem so that this may be confirmed. scip_problem.zip