-
Notifications
You must be signed in to change notification settings - Fork 78
Exact solver returns spurious infeasible result with large coefficients #151
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
Comments
Thanks for reporting this! Some comments:
|
Not fixed yet (the report is already on latest |
Certainly exact SCIP is by default only exact for variables, activities, and objectives within the infinity bounds but in this case it should just provide the correct result without a warning. |
No difference if I switch it to
Yeah, I know this is the standard advice, but it's unfortunately not possible in my case. The actual problem has one huge integer variable (with up to hundreds of digits) and a few hundred boolean variables (all separated by orders of magnitude). The integrality constraint is very important for the huge variable, since a trivial solution will always exist if it is relaxed to a fraction, so there's no way to neglect any of its digits. In particular, trying to solve this problem with traditional branching will fail miserably. I figured that ILP solvers may have a few more tricks up their sleeve, but it was always a long shot, especially since I've found that ~all of them are optimized for many variables with small coefficients. My other option is to try SAT solvers with bitvector arithmetic, but I've had poor experiences with how slow they are to give unsat results, and with how opaque those results can be. I may just be entirely out of luck here. |
Here with scaling just a multiplication by some small factor is meant without changing the variable definitions. In this case it is enough to plug a @ambros-gleixner Nevertheless, please check why the empty solution is not accepted in the end of presolving. |
I can shrink the coefficients, but large solution values still cause issues, and I can't shrink those without affecting integrality. To give another minimal example (note that scaling down the objective coefficient further does not help):
|
This is expected. If you have a common upper bound on the absolute solution values, try redefining |
I've been attempting to use SCIP's exact mode to solve some ILP instances with very large coefficients. However, even with
exact/enabled = TRUE
, there seems to be some rounding in the objective function that causes issues when the coefficients are more than ~20 digits. As a minimal example, this instance returnsSCIP Status: problem is solved [infeasible]
, even thoughx = 1
is quite clearly a feasible solution:(See stdout.txt.) I'm not entirely sure if there's some other parameter I have to set to "actually make it exact", or if SCIP is simply the wrong tool for the job here.
The text was updated successfully, but these errors were encountered: