From ed6bc6be755c812bdad3209f28ee0894060eca12 Mon Sep 17 00:00:00 2001 From: joaquimg Date: Sun, 11 Oct 2026 00:42:39 -0300 Subject: [PATCH] Fix SCS test tolerances in test_JuMP.jl The SCS tests checked answers to 1e-5 while SCS ran at its default tolerance of 1e-4, so they broke when SCS_jll 3.3.1 landed slightly further away. Tighten eps_abs/eps_rel to 1e-9 in the four failing tests and replace solver output pasted as expected values (-2.9999734, 0.7499854, ...) with the exact answers. Co-Authored-By: Claude Opus 5.5 --- test/test_JuMP.jl | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/test/test_JuMP.jl b/test/test_JuMP.jl index b373596f..268ff930 100644 --- a/test/test_JuMP.jl +++ b/test/test_JuMP.jl @@ -909,6 +909,9 @@ end function test_jump_dual_delete_constraint_3() model = direct_model(POI.Optimizer(SCS.Optimizer)) set_silent(model) + # the default tolerances of SCS (1e-4) are looser than the checks below + set_attribute(model, "eps_abs", 1e-9) + set_attribute(model, "eps_rel", 1e-9) list = [] @variable(model, α in Parameter(1.0)) @variable(model, β in Parameter(0.0)) @@ -1360,6 +1363,9 @@ end function test_jump_psd_cone_with_parameter_pv_v_pv() model = Model(() -> POI.Optimizer(SCS.Optimizer)) set_silent(model) + # the default tolerances of SCS (1e-4) are looser than the checks below + set_attribute(model, "eps_abs", 1e-9) + set_attribute(model, "eps_rel", 1e-9) @variable(model, x) @variable(model, p in Parameter(1.0)) @constraint( @@ -1376,11 +1382,9 @@ function test_jump_psd_cone_with_parameter_pv_v_pv() @objective(model, Min, x) @test is_valid(model, con) optimize!(model) - @test value(x) ≈ 0.803845 atol = 1e-5 @test value(x) ≈ 6 - 3 * sqrt(3) atol = 1e-5 set_parameter_value(p, 3.0) optimize!(model) - @test value(x) ≈ 0.416888 atol = 1e-5 @test value(x) ≈ (9 * sqrt(3) - 6) / 23 atol = 1e-5 delete(model, con) return @@ -1389,6 +1393,9 @@ end function test_jump_psd_cone_with_parameter_pp_v_pv() model = Model(() -> POI.Optimizer(SCS.Optimizer)) set_silent(model) + # the default tolerances of SCS (1e-4) are looser than the checks below + set_attribute(model, "eps_abs", 1e-9) + set_attribute(model, "eps_rel", 1e-9) @variable(model, x) @variable(model, p in Parameter(1.0)) @constraint( @@ -1400,10 +1407,12 @@ function test_jump_psd_cone_with_parameter_pp_v_pv() @objective(model, Min, x) @test is_valid(model, con) optimize!(model) - @test value(x) ≈ 0.7499854 atol = 1e-5 + # for p == 1: 3 * x - (2 * x - 3)^2 >= 0, so x >= 3 / 4 + @test value(x) ≈ 0.75 atol = 1e-5 set_parameter_value(p, 3.0) optimize!(model) - @test value(x) ≈ 0.0971795 atol = 1e-5 + # for p == 3: 81 * x - (2 * x - 3)^2 >= 0 + @test value(x) ≈ (93 - sqrt(8505)) / 8 atol = 1e-5 delete(model, con) return end @@ -1432,6 +1441,9 @@ end function test_jump_psd_cone_with_parameter_p_v_pp() model = Model(() -> POI.Optimizer(SCS.Optimizer)) set_silent(model) + # the default tolerances of SCS (1e-4) are looser than the checks below + set_attribute(model, "eps_abs", 1e-9) + set_attribute(model, "eps_rel", 1e-9) @variable(model, x) @variable(model, p in Parameter(1.0)) @constraint( @@ -1442,10 +1454,12 @@ function test_jump_psd_cone_with_parameter_p_v_pp() @objective(model, Min, x - p) @test is_valid(model, con) optimize!(model) - @test value(x) ≈ 0.633969 atol = 1e-5 + # for p == 1: 3 - (2 * x - 3)^2 >= 0, so x >= (3 - sqrt(3)) / 2 + @test value(x) ≈ (3 - sqrt(3)) / 2 atol = 1e-5 set_parameter_value(p, Float32(3.0)) optimize!(model) - @test value(x) ≈ -2.9999734 atol = 1e-5 + # for p == 3: 81 - (2 * x - 3)^2 >= 0, so x >= -3 + @test value(x) ≈ -3.0 atol = 1e-5 delete(model, con) return end