Skip to content

Commit b4c016a

Browse files
authored
Fix various usages of MOI.delete (#123)
1 parent 8ab9e07 commit b4c016a

File tree

4 files changed

+40
-3
lines changed

4 files changed

+40
-3
lines changed

src/algorithms/Chalmet.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@ function _solve_constrained_model(
3030
sets = MOI.LessThan.(rhs .- 1)
3131
c = MOI.Utilities.normalize_and_add_constraint.(model.inner, f, sets)
3232
MOI.optimize!(model.inner)
33-
MOI.delete.(model, c)
3433
status = MOI.get(model.inner, MOI.TerminationStatus())
3534
if !_is_scalar_status_optimal(status)
35+
MOI.delete.(model, c)
3636
return status, nothing
3737
end
3838
variables = MOI.get(model.inner, MOI.ListOfVariableIndices())
3939
X, Y = _compute_point(model, variables, model.f)
40+
MOI.delete.(model, c)
4041
return status, SolutionPoint(X, Y)
4142
end
4243

src/algorithms/KirlikSayin.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,9 @@ function minimize_multiobjective!(algorithm::KirlikSayin, model::Optimizer)
161161
MOI.EqualTo(zₖ),
162162
)
163163
MOI.optimize!(model.inner)
164-
MOI.delete.(model, ε_constraints)
165-
MOI.delete(model, zₖ_constraint)
166164
if !_is_scalar_status_optimal(model)
165+
MOI.delete.(model, ε_constraints)
166+
MOI.delete(model, zₖ_constraint)
167167
_remove_rectangle(L, _Rectangle(_project(yI, k), uᵢ))
168168
continue
169169
end
@@ -175,6 +175,8 @@ function minimize_multiobjective!(algorithm::KirlikSayin, model::Optimizer)
175175
L = _update_list(L, Y_proj)
176176
end
177177
_remove_rectangle(L, _Rectangle(Y_proj, uᵢ))
178+
MOI.delete.(model, ε_constraints)
179+
MOI.delete(model, zₖ_constraint)
178180
end
179181
return status, solutions
180182
end

src/algorithms/TambyVanderpooten.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ function minimize_multiobjective!(
159159
end
160160
MOI.optimize!(model.inner)
161161
if !_is_scalar_status_optimal(model)
162+
MOI.delete.(model, ε_constraints)
162163
return status, nothing
163164
end
164165
y_k = MOI.get(model.inner, MOI.ObjectiveValue())
@@ -171,6 +172,8 @@ function minimize_multiobjective!(
171172
)
172173
MOI.optimize!(model.inner)
173174
if !_is_scalar_status_optimal(model)
175+
MOI.delete.(model, ε_constraints)
176+
MOI.delete(model, y_k_constraint)
174177
return status, nothing
175178
end
176179
X, Y = _compute_point(model, variables, model.f)

test/problems.jl

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,4 +441,35 @@ function test_problem_issue_105(model)
441441
return
442442
end
443443

444+
function test_issue_122(model)
445+
m, n = 3, 10
446+
p1 = [5.0 1 10 8 3 5 3 3 7 2; 10 6 1 6 8 3 2 10 6 1; 2 3 1 6 9 7 1 5 4 8]
447+
p2 = [4.0 6 4 3 1 6 8 2 9 7; 8 8 8 2 4 8 8 1 10 1; 8 7 8 5 9 2 2 7 10 10]
448+
p3 = [4.0 3 6 4 7 5 9 5 8 4; 8 6 2 2 6 8 5 2 2 3; 2 8 10 3 5 7 5 9 5 5]
449+
w = [5.0 9 3 5 10 5 7 10 7 8; 4 8 8 6 10 8 10 7 5 1; 10 7 5 8 8 2 8 1 10 3]
450+
b = [34.0, 33.0, 31.0]
451+
x_ = MOI.add_variables(model, m * n)
452+
x = reshape(x_, m, n)
453+
MOI.add_constraint.(model, x, MOI.ZeroOne())
454+
f = MOI.Utilities.operate(
455+
vcat,
456+
Float64,
457+
sum(p1 .* x),
458+
sum(p2 .* x),
459+
sum(p3 .* x),
460+
)
461+
MOI.set(model, MOI.ObjectiveSense(), MOI.MAX_SENSE)
462+
MOI.set(model, MOI.ObjectiveFunction{typeof(f)}(), f)
463+
for i in 1:m
464+
f_i = sum(w[i, j] * x[i, j] for j in 1:n)
465+
MOI.add_constraint(model, f_i, MOI.LessThan(b[i]))
466+
end
467+
for j in 1:n
468+
MOI.add_constraint(model, sum(1.0 .* x[:, j]), MOI.EqualTo(1.0))
469+
end
470+
MOI.optimize!(model)
471+
@test MOI.get(model, MOI.ResultCount()) == 42
472+
return
473+
end
474+
444475
end # module Problems

0 commit comments

Comments
 (0)