From 65a6024c3663b784249ab2830d7d960ebf4fb5e7 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Fri, 8 Aug 2025 15:46:24 -0500 Subject: [PATCH] assert_cuts_off: Improve performance --- src/Cuts/tableau/numerics.jl | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/Cuts/tableau/numerics.jl b/src/Cuts/tableau/numerics.jl index 4080be6..4882061 100644 --- a/src/Cuts/tableau/numerics.jl +++ b/src/Cuts/tableau/numerics.jl @@ -27,27 +27,19 @@ function assert_eq(a, b; atol = 1e-4) end function assert_cuts_off(cuts::ConstraintSet, x::Vector{Float64}, tol = 1e-6) + vals = cuts.lhs * x for i = 1:length(cuts.lb) - val = cuts.lhs[i, :]' * x - if (val <= cuts.ub[i] - tol) && (val >= cuts.lb[i] + tol) + if (vals[i] <= cuts.ub[i] - tol) && (vals[i] >= cuts.lb[i] + tol) throw(ErrorException("inequality fails to cut off fractional solution")) end end end function assert_does_not_cut_off(cuts::ConstraintSet, x::Vector{Float64}; tol = 1e-6) + vals = cuts.lhs * x for i = 1:length(cuts.lb) - val = cuts.lhs[i, :]' * x - ub = cuts.ub[i] - lb = cuts.lb[i] - if (val >= ub) || (val <= lb) - @show cuts.lhs[i, :] - @show x[cuts.lhs[i, :].nzind] - throw( - ErrorException( - "inequality $i cuts off integer solution ($lb <= $val <= $ub)", - ), - ) + if (vals[i] >= cuts.ub[i]) || (vals[i] <= cuts.lb[i]) + throw(ErrorException("inequality $i cuts off integer solution")) end end end