File tree Expand file tree Collapse file tree 1 file changed +12
-4
lines changed Expand file tree Collapse file tree 1 file changed +12
-4
lines changed Original file line number Diff line number Diff 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;
You can’t perform that action at this time.
0 commit comments