From 9842ec46bd5f74046220a0b1020db0648ef5b805 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 4 Dec 2024 15:56:28 +1300 Subject: [PATCH] Fix dual objective value with free variable --- src/MOI_wrapper.jl | 5 +++-- test/MOI_wrapper.jl | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/MOI_wrapper.jl b/src/MOI_wrapper.jl index 37310f1..17dd080 100644 --- a/src/MOI_wrapper.jl +++ b/src/MOI_wrapper.jl @@ -2271,9 +2271,10 @@ function _active_bound(l, x, u, d) end elseif isfinite(l) return l - else - @assert isfinite(u) + elseif isfinite(u) return u + else + return 0.0 end end diff --git a/test/MOI_wrapper.jl b/test/MOI_wrapper.jl index 11b0482..f80a196 100644 --- a/test/MOI_wrapper.jl +++ b/test/MOI_wrapper.jl @@ -941,11 +941,13 @@ function test_active_bound() (0.0, 1.0, 1.0, -2.0) => 1.0, (0.0, 0.6, 1.0, -2.0) => 1.0, (0.0, 0.6, 1.0, 2.0) => 1.0, # incorrect d but doesn't matter + (-Inf, 0.0, Inf, 0.0) => 0.0, # It's a ray. Choose based on sign (0.0, NaN, 1.0, 2.0) => 0.0, (0.0, NaN, 1.0, 1e-10) => 0.0, (0.0, NaN, 1.0, -2.0) => 1.0, (0.0, NaN, 1.0, -1e-10) => 1.0, + (-Inf, NaN, Inf, 0.0) => 0.0, # It's a one-sided ray (0.0, NaN, Inf, 2.0) => 0.0, (0.0, NaN, Inf, -1e-10) => 0.0,