-
Notifications
You must be signed in to change notification settings - Fork 115
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
Infeasible instead of 5552530 #599
Comments
Coding in CglPreProcess needs more thinking. Some code switched off for now. Thanks. |
Thanks for the fast feedback ;) Do I misunderstand that or should the last commit to master from today solve this? If yes, at least for me, cbc still runs into infeasibility. |
TwoMirCuts seems to cause the infeasibility if I am not wrong. |
Could not duplicate your error, but found a case where TwoMir was borderline. I have put a small tweak in dual which fixed my problem (master). |
Hmm, thanks for taking a look. Just pulled master, still get
|
Odd - your log Welcome to the CBC MILP Solver Where does "trunk" come from? |
Hmm, that diff might be because I build via CMake and not the normal build system. Will need to check if some other defines differ, too, thanks for the hint! |
Hmmm, updated the compiler, to LLVM 17, this happens now even for the older cbc version we have and not just master like it is now. Not sure how to debug this best, but it seems to depend on the compiler. We did use -ffp-model=strict, tried to remove that but didn't change it. |
I bisected now all repositories we use. |
The fault is not in CoinPresolveDual - it is just that those changes made a difference to the preprocessed model. Trying many different options I have managed to get a preprocessed model that goes wrong with my optimized code. The fault does seem to be a tolerance problem in CglTwomir. It creates the basis for a cut You will notice the very large rhs I am looking at best way to fix. This seems to fix and is in master +#define CGL_TWOMIR_LARGE_RHS 1.0e10
|
That change in master seems to fix our issues, with both versions of LLVM/clang we use, for the above ILP. |
Did the timeout one work well with previous code? The fix I put in was totally safe, but maybe one could just have weakened the cut a bit to allow for large value and many elements. If it did work well I could look further - or even better someone who knows that bit of code could look at problem. |
No, the timeout occurred already before with the old code, just with the LLVM update, seems to be some interaction with -reduce=on, without that, it is fast, but I need that in general. The standalone cbc solver has no issues, we drive it with
and that leads to the timeout. |
old LLVM 16 compiled variant ./clpsolve test/value_29051516.lp vs. new LLVM 17 binary ./clpsolve test/value_29051516.lp |
Older versions, e.g. from August last year still compute 5552530, current master results in infeasible.
value_5552530.lp.txt
The text was updated successfully, but these errors were encountered: