Skip to content

Commit 9502836

Browse files
committed
WIP
1 parent b2aa2a7 commit 9502836

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

highs/presolve/HPresolve.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,6 +1156,7 @@ HPresolve::Result HPresolve::dominatedColumns(
11561156
}
11571157

11581158
// count number of fixed columns and modified bounds
1159+
HighsInt numCols = 0;
11591160
HighsInt numFixedCols = 0;
11601161
HighsInt numFixedColsPredBndAnalysis = 0;
11611162
HighsInt numModifiedBndsPredBndAnalysis = 0;
@@ -1167,6 +1168,9 @@ HPresolve::Result HPresolve::dominatedColumns(
11671168
// skip deleted columns
11681169
if (colDeleted[j]) continue;
11691170

1171+
// increment counter for number of columns
1172+
numCols++;
1173+
11701174
// initialise
11711175
HighsInt bestRowPlus = -1;
11721176
HighsInt bestRowPlusLen = kHighsIInf;
@@ -1411,6 +1415,16 @@ HPresolve::Result HPresolve::dominatedColumns(
14111415
HPRESOLVE_CHECKED_CALL(checkRow(bestRowPlus, j, HighsInt{1},
14121416
ajBestRowPlus, upperImplied,
14131417
hasPosCliques));
1418+
1419+
// do not use predictive bound analysis if it requires many domination
1420+
// checks and does not yield fixings or improved bounds
1421+
allowPredBndAnalysis =
1422+
allowPredBndAnalysis &&
1423+
(numDomChecksPredBndAnalysis == 0 ||
1424+
(numDomChecksPredBndAnalysis / static_cast<double>(numCols) <= 1e4 &&
1425+
(numFixedColsPredBndAnalysis + numModifiedBndsPredBndAnalysis) /
1426+
static_cast<double>(numDomChecksPredBndAnalysis) >=
1427+
1e-5));
14141428
}
14151429

14161430
if (numFixedCols > 0 || numModifiedBndsPredBndAnalysis > 0)

0 commit comments

Comments
 (0)