diff --git a/src/algorithms/Chalmet.jl b/src/algorithms/Chalmet.jl index 4eb44a7..639087a 100644 --- a/src/algorithms/Chalmet.jl +++ b/src/algorithms/Chalmet.jl @@ -89,7 +89,7 @@ function optimize_multiobjective!(algorithm::Chalmet, model::Optimizer) end _, y2[1] = _compute_point(model, variables, f1) if y2[1] ≈ solutions[1].y[1] - return MOI.OPTIMAL, [solutions] + return MOI.OPTIMAL, solutions end MOI.set(model.inner, MOI.ObjectiveFunction{typeof(f2)}(), f2) y2_constraint = MOI.Utilities.normalize_and_add_constraint( diff --git a/test/algorithms/Chalmet.jl b/test/algorithms/Chalmet.jl index 8ffefb7..cb5a607 100644 --- a/test/algorithms/Chalmet.jl +++ b/test/algorithms/Chalmet.jl @@ -218,6 +218,23 @@ function test_too_many_objectives() return end +function test_single_point() + model = MOA.Optimizer(HiGHS.Optimizer) + MOI.set(model, MOA.Algorithm(), MOA.Chalmet()) + MOI.set(model, MOI.Silent(), true) + x = MOI.add_variables(model, 2) + MOI.add_constraint.(model, x, MOI.EqualTo(1.0)) + MOI.set(model, MOI.ObjectiveSense(), MOI.MIN_SENSE) + f = MOI.Utilities.operate(vcat, Float64, 1.0 .* x...) + MOI.set(model, MOI.ObjectiveFunction{typeof(f)}(), f) + MOI.optimize!(model) + @test MOI.get(model, MOI.TerminationStatus()) == MOI.OPTIMAL + @test MOI.get(model, MOI.ResultCount()) == 1 + @test MOI.get(model, MOI.PrimalStatus()) == MOI.FEASIBLE_POINT + @test ≈(MOI.get(model, MOI.VariablePrimal(), x), [1.0, 1.0]; atol = 1e-6) + return +end + end # module TestChalmet TestChalmet.run_tests()