Skip to content

Commit dc27d34

Browse files
authored
Merge pull request ERGO-Code#2512 from ERGO-Code/decrease-probing-budget
Decrease probing budget after some limit
2 parents 1aaa0c3 + c47a396 commit dc27d34

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

highs/presolve/HPresolve.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1613,12 +1613,20 @@ HPresolve::Result HPresolve::runProbing(HighsPostsolveStack& postsolve_stack) {
16131613
if (cliquetable.getSubstitution(i) != nullptr || !domain.isBinary(i))
16141614
continue;
16151615

1616+
bool tightenLimits = (numProbed - oldNumProbed) >= 2500;
1617+
16161618
// when a large percentage of columns have been deleted, stop this round
16171619
// of probing
16181620
// if (numDel > std::max(model->num_col_ * 0.2, 1000.)) break;
1619-
probingEarlyAbort =
1620-
numDel >
1621-
std::max(HighsInt{1000}, (model->num_row_ + model->num_col_) / 20);
1621+
if (!tightenLimits) {
1622+
probingEarlyAbort =
1623+
numDel >
1624+
std::max(HighsInt{1000}, (model->num_row_ + model->num_col_) / 20);
1625+
} else {
1626+
probingEarlyAbort =
1627+
numDel >
1628+
std::min(HighsInt{1000}, (model->num_row_ + model->num_col_) / 20);
1629+
}
16221630
if (probingEarlyAbort) break;
16231631

16241632
// break in case of too many new implications to not spent ages in
@@ -1665,7 +1673,7 @@ HPresolve::Result HPresolve::runProbing(HighsPostsolveStack& postsolve_stack) {
16651673
numDel = newNumDel;
16661674
numFail = 0;
16671675
} else if (mipsolver->submip || numNewCliques == 0) {
1668-
splayContingent -= 100 * numFail;
1676+
splayContingent -= (tightenLimits ? 250 : 100) * numFail;
16691677
++numFail;
16701678
} else {
16711679
splayContingent += 1000 * numNewCliques;

0 commit comments

Comments
 (0)