Bug report: infeasible with 1 thread



  • Daniel Espinoza

    Hi Gleb,


    I am guessing that the problems comes from the fact that you are using a tighter tolerance for integer feasibility than for primal feasibility.... I did run your model with a tighter primal feasibility (1e-9) and got solutions without problem. Note however that for this model it does not seem that you need tighter tolerances at al!

  • Greg Glockner

    In general, whenever you get an infeasible model, it is useful to run IIS, to understand why it is infeasible.

  • Gleb Belov

    Hi Daniel and Greg,

    @Daniel: what do you mean by primal feasibility? Running IntFeasTol=1e-8 MIPGap=1e-9 Threads=1 gives infeasible as well, however IntFeasTol=1e-9 MIPGap=1e-8 Threads=1 finds solutions. I don't remember hearing about relation of absolute/relative objective gap to integrality tolerance. Would be grateful for an explanation and what parameters you recommend when using tighter IntFeasTol.

    @Greg: I stopped IIS after over 1h, it still had 20000 constraints and 30000 bounds. But if this result is due to (numerical?) instability, what can IIS tell us?

    @Daniel: this instance does need tighter tolerance because it has constraints like X = 200c + 1000000(1-c) where c is binary, meaning (c=1 -> X=200) /\ (c=0 -> X=1000000). Obviously not good modeling but the question is why the solver behaves differently depending on the number of threads. Just numerical problems?

  • Daniel Espinoza

    Hi Gleb,

    I meant the relation between IntFeasTol and FeasibilityTol, and it should be that IntFeasTol >= FeasibilityTol.

    Also, regarding the large numbers.... did you test that if using default parameters you got solutions that could not be trusted?

  • Gleb Belov

    Hi Daniel,

    the advice that it should be that IntFeasTol >= FeasibilityTol appears more familiar to me but still I'd found it helpful to have it reminded in the descriptions of those parameters.

    Yes I tested several instances of this model, which is the "road-construction" from MiniZinc Challenge 2014. Solution checker rounds the value of c, see the example above. When you have c=0.999999, which is feasible with default tolerance, the MIP solution has X~201 but the MiniZinc solution checker recomputes it from X = 200c + 1000000(1-c)  with c=1 and obtains a contradiction.

  • Daniel Espinoza

    Hi Gleb,


    Sure, we will update the docs in that regard.... now, numerics is a tricky area... and sometimes the numbers just don't add up, defining what truly is a wrong answer and a right one is not as easy as it might seem


    Best regards,


Please sign in to leave a comment.

Powered by Zendesk