Skip to content

Commit 4c3c98d

Browse files
committed
Tighten budget after 1000 cols probed on
1 parent e1d1477 commit 4c3c98d

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

highs/presolve/HPresolve.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,12 +1545,20 @@ HPresolve::Result HPresolve::runProbing(HighsPostsolveStack& postsolve_stack) {
15451545
if (cliquetable.getSubstitution(i) != nullptr || !domain.isBinary(i))
15461546
continue;
15471547

1548+
bool tightenLimits = (numProbed - oldNumProbed) >= 1000;
1549+
if (numProbed - oldNumProbed == 1000) splayContingent /= 2;
1550+
15481551
// when a large percentage of columns have been deleted, stop this round
15491552
// of probing
15501553
// if (numDel > std::max(model->num_col_ * 0.2, 1000.)) break;
1551-
probingEarlyAbort =
1552-
numDel >
1553-
std::max(HighsInt{1000}, (model->num_row_ + model->num_col_) / 20);
1554+
if (!tightenLimits) {
1555+
probingEarlyAbort =
1556+
numDel >
1557+
std::max(HighsInt{1000}, (model->num_row_ + model->num_col_) / 20);
1558+
} else {
1559+
probingEarlyAbort =
1560+
numDel > std::min(HighsInt{500}, model->num_col_ / 20);
1561+
}
15541562
if (probingEarlyAbort) break;
15551563

15561564
// break in case of too many new implications to not spent ages in
@@ -1591,16 +1599,17 @@ HPresolve::Result HPresolve::runProbing(HighsPostsolveStack& postsolve_stack) {
15911599
if (newNumDel > numDel) {
15921600
probingContingent += numDel;
15931601
if (!mipsolver->submip) {
1594-
splayContingent += 100 * (newNumDel + numDelStart);
1595-
splayContingent += 1000 * numNewCliques;
1602+
splayContingent +=
1603+
(tightenLimits ? 50 : 100) * (newNumDel + numDelStart);
1604+
splayContingent += (tightenLimits ? 500 : 1000) * numNewCliques;
15961605
}
15971606
numDel = newNumDel;
15981607
numFail = 0;
15991608
} else if (mipsolver->submip || numNewCliques == 0) {
1600-
splayContingent -= 100 * numFail;
1609+
splayContingent -= (tightenLimits ? 200 : 100) * numFail;
16011610
++numFail;
16021611
} else {
1603-
splayContingent += 1000 * numNewCliques;
1612+
splayContingent += (tightenLimits ? 500 : 1000) * numNewCliques;
16041613
numFail = 0;
16051614
}
16061615

0 commit comments

Comments
 (0)