Skip to content

Commit 31d9aa1

Browse files
committed
Update
1 parent e96adac commit 31d9aa1

File tree

6 files changed

+22
-4
lines changed

6 files changed

+22
-4
lines changed

src/algorithms/Chalmet.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ function _solve_constrained_model(
4141
end
4242

4343
function minimize_multiobjective!(algorithm::Chalmet, model::Optimizer)
44+
@assert MOI.get(model.inner, MOI.ObjectiveSense()) == MOI.MIN_SENSE
4445
start_time = time()
4546
if MOI.output_dimension(model.f) != 2
4647
error("Chalmet requires exactly two objectives")

src/algorithms/DominguezRios.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ function _update!(
143143
end
144144

145145
function minimize_multiobjective!(algorithm::DominguezRios, model::Optimizer)
146-
start_time = time()
147146
@assert MOI.get(model.inner, MOI.ObjectiveSense()) == MOI.MIN_SENSE
147+
start_time = time()
148148
n = MOI.output_dimension(model.f)
149149
L = [_DominguezRiosBox[] for i in 1:n]
150150
scalars = MOI.Utilities.scalarize(model.f)

src/algorithms/EpsilonConstraint.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ function minimize_multiobjective!(
6969
algorithm::EpsilonConstraint,
7070
model::Optimizer,
7171
)
72-
start_time = time()
7372
@assert MOI.get(model.inner, MOI.ObjectiveSense()) == MOI.MIN_SENSE
73+
start_time = time()
7474
if MOI.output_dimension(model.f) != 2
7575
error("EpsilonConstraint requires exactly two objectives")
7676
end

src/algorithms/KirlikSayin.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ function _update_list(L::Vector{_Rectangle}, f::Vector{Float64})
7575
end
7676

7777
function minimize_multiobjective!(algorithm::KirlikSayin, model::Optimizer)
78-
start_time = time()
7978
@assert MOI.get(model.inner, MOI.ObjectiveSense()) == MOI.MIN_SENSE
79+
start_time = time()
8080
solutions = SolutionPoint[]
8181
# Problem with p objectives.
8282
# Set k = 1, meaning the nondominated points will get projected

src/algorithms/TambyVanderpooten.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ function minimize_multiobjective!(
8585
algorithm::TambyVanderpooten,
8686
model::Optimizer,
8787
)
88-
start_time = time()
8988
@assert MOI.get(model.inner, MOI.ObjectiveSense()) == MOI.MIN_SENSE
89+
start_time = time()
9090
warm_start_supported = false
9191
if MOI.supports(model, MOI.VariablePrimalStart(), MOI.VariableIndex)
9292
warm_start_supported = true

test/algorithms/Chalmet.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,23 @@ function test_unbounded()
165165
return
166166
end
167167

168+
function test_invalid_feasibility()
169+
model = MOA.Optimizer(HiGHS.Optimizer)
170+
MOI.set(model, MOA.Algorithm(), MOA.Chalmet())
171+
MOI.set(model, MOI.Silent(), true)
172+
x = MOI.add_variables(model, 2)
173+
MOI.add_constraint.(model, x, MOI.GreaterThan(0.0))
174+
MOI.add_constraint(model, 1.0 * x[1] + 1.0 * x[2], MOI.LessThan(-1.0))
175+
MOI.set(model, MOI.ObjectiveSense(), MOI.FEASIBILITY_SENSE)
176+
f = MOI.Utilities.operate(vcat, Float64, 1.0 .* x...)
177+
MOI.set(model, MOI.ObjectiveFunction{typeof(f)}(), f)
178+
MOI.optimize!(model)
179+
@test MOI.get(model, MOI.TerminationStatus()) == MOI.INVALID_MODEL
180+
@test MOI.get(model, MOI.PrimalStatus()) == MOI.NO_SOLUTION
181+
@test MOI.get(model, MOI.DualStatus()) == MOI.NO_SOLUTION
182+
return
183+
end
184+
168185
function test_infeasible()
169186
model = MOA.Optimizer(HiGHS.Optimizer)
170187
MOI.set(model, MOA.Algorithm(), MOA.Chalmet())

0 commit comments

Comments
 (0)