From 0c2f860558019a26eb416b863cbcea5cac13f334 Mon Sep 17 00:00:00 2001 From: John Forrest Date: Tue, 10 Sep 2024 15:10:01 +0100 Subject: [PATCH] tolerance issue for variabls with large values --- src/CglGMI/CglGMI.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/CglGMI/CglGMI.cpp b/src/CglGMI/CglGMI.cpp index ceeffd83..7d91bef7 100644 --- a/src/CglGMI/CglGMI.cpp +++ b/src/CglGMI/CglGMI.cpp @@ -781,7 +781,7 @@ bool CglGMI::removeSmallCoefficients(double* cutElem, int* cutIndex, } else if ((value < 0.0) && (colUpper[col] < param.getINFINIT())) { cutRhs -= value * colUpper[col]; - } + } } else if (absval > param.getEPS_COEFF()) { if (currPos < i) { @@ -1259,6 +1259,15 @@ void CglGMI::generateCuts(OsiCuts &cs) } #endif if (cleanCut(cutElem, cutIndex, cutNz, cutRhs, xlp) && cutNz > 0) { + // relax if integer values can be large + for (int i=0;i 10.0) + cutRhs += 1.0e-8*difference; + } + } OsiRowCut rc; rc.setRow(cutNz, cutIndex, cutElem); rc.setLb(-param.getINFINIT());