Now mapping to kHighsInf, any bounds on (semi-)integer variables that are not less than 1e9 - #3243
Now mapping to kHighsInf, any bounds on (semi-)integer variables that are not less than 1e9#3243jajhall wants to merge 1 commit into
kHighsInf, any bounds on (semi-)integer variables that are not less than 1e9#3243Conversation
… are not less than 1e9
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## latest #3243 +/- ##
=======================================
Coverage 73.23% 73.23%
=======================================
Files 445 445
Lines 108043 108075 +32
Branches 17321 17328 +7
=======================================
+ Hits 79120 79150 +30
- Misses 28647 28649 +2
Partials 276 276 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Opt-Mucca
left a comment
There was a problem hiding this comment.
I don't mind this change, but I do worry 1e9 is too small here (don't see an easy way that we can increase it).
We'd now risk giving "infeasible" solutions for people who modelled with such large bounds.
| // Any bounds on integer or semi-integer variables that are not less | ||
| // than infinite_integer_bound are set to kHighsInf | ||
| const double infinite_integer_bound = | ||
| 1e9; // Approx static_cast<double>(kHighsIInf/2); |
There was a problem hiding this comment.
Would it be worth having a separate option infinite_integer_bound (instead of hard-coding this)?
There was a problem hiding this comment.
I don't think so. There's no way we'd allow a larger value, and we don't need it to be any less for the original purpose.
The reason for the infinite_bound option is that some folk will not know the value to use for an "infinite" bound, so just put something large. To be honest, allowing them to vary the value of the infinite_bound option from its default value of 1e20 (with no upper limit!) gives the misleading impression that they can have meaningful bounds greater than 1e20. If it were not for the prospect of having some internal problem scaling facility, I'd be in favour of reducing the default value to 1e12, and only allowing users to reduce it - with the only lower limit being zero.
No, as the change relaxes the bounds on such columns. So unboundedness is the "risk". However, if someone sets 1e9 as a bound that might be active in an optimal solution they are asking for trouble. Even the simplex solver may fail as 1e9/primal_feasibility_tolerance is 1/double_precision. The reason for the |
It's not that uncommon for users to model terms with |
Description
Ridiculous large finite bounds on integer variables caused a failure addressed by #3241
This PR maps to
kHighsInf, any bounds on (semi-)integer variables that are not less than 1e9Checklist
latestbranch