-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
failing assert at MIPSolverCbc.cpp:1464 #72
Comments
No, my version of SHOT with Cbc seems to solve this problem fine... Can you see the value of |
|
#76 should fix this as well I assume. Can you verify @svigerske? |
No, I still get that one. |
Hmm... Cannot still reproduce this, but the asserts are there for a reason, because I noticed there was some issues with Cbc not saving the variable limits. Can you try to set |
Yes, that makes the assert go away. This is where Clp changes everything below -1e27 to -COIN_DBL_MAX: There is this line in MIPSolverCbc.cpp, which may then use a wrong constant: double MIPSolverCbc::getUnboundedVariableBoundValue() { return 1e50; } If I change this to 1e27, things also work. I guess that's the same reason why setting the parameter to 1e10 worked - it's still a finite bound for Cbc. But I suspect that this means that when there is an unbounded variable in SHOT, then it will have a very large finite bound for the MIP solver? |
Yes, the same is true for Gurobi and Cplex as well afaik: infinity is 1e+20. So perhaps I will change this into
(or should it rather be 1e26 since there is strict inequality in the Clp code?). |
1e26 or 1e27 doesn't really matter. For both values, the solver will assume that the variable has a finite bound. If you want Cbc to handle the variable as unbounded, then you need to set it to something above 1e27. Setting it to COIN_DBL_MAX would help to avoid the assert for unbounded variables, but Cbc will then set any (finite) bound above 1e27 to COIN_DBL_MAX. Setting it to |
When I'm thinking about it everything except the assert works well now. I am afraid that if I change the logic behind this things might break down (for example, with regards to the infeasibility repair, unbounded MIP iterations, etc.). I think I will disable the assert for now, close this issue and create a new issue to look into changing the Cbc max variable bound to 1e27. |
When I run GAMS test library model miqcp01 with SHOT compiled without -DNDEBUG and use Cbc as MIP solver, this assert fails:
gdb doesn't want to tell me
osiInterface->getColLower()[varIndex]
, butlowerBound
is -1e50.I usually don't build solver source without -DNDEBUG, so I don't really need a fix, but is that something to worry about or easy to fix? (or first question: can you reproduce?)
The text was updated successfully, but these errors were encountered: