Skip to content
This repository was archived by the owner on Jun 14, 2020. It is now read-only.

Commit c9b8473

Browse files
authored
Update MOI to v0.7 (#82)
* Update MOI to v0.7 * Fix handling of copy * Update LinQuadOptInterface.jl
1 parent 4e13722 commit c9b8473

10 files changed

Lines changed: 70 additions & 91 deletions

File tree

REQUIRE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
julia 0.6
2-
MathOptInterface 0.6.3 0.7
2+
MathOptInterface 0.7 0.8
33
Compat 0.59

src/LinQuadOptInterface.jl

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,31 @@ function Base.show(io::IO, model::LinQuadOptimizer)
205205
return
206206
end
207207

208+
MOIU.supports_default_copy_to(model::LinQuadOptimizer, copy_names::Bool) = true
209+
210+
function MOI.copy_to(dest::LinQuadOptimizer, src::MOI.ModelLike; kwargs...)
211+
return MOIU.automatic_copy_to(dest, src; kwargs...)
212+
end
213+
214+
function MOI.get(::LinQuadOptimizer, ::MOI.ListOfVariableAttributesSet)
215+
return MOI.AbstractVariableAttribute[]
216+
end
217+
218+
function MOI.get(model::LinQuadOptimizer, ::MOI.ListOfModelAttributesSet)
219+
attributes = [
220+
MOI.ObjectiveSense(),
221+
MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}()
222+
]
223+
if MOI.get(model, MOI.Name()) != ""
224+
push!(attributes, MOI.Name())
225+
end
226+
return attributes
227+
end
228+
229+
function MOI.get(::LinQuadOptimizer, ::MOI.ListOfConstraintAttributesSet)
230+
return MOI.AbstractConstraintAttribute[]
231+
end
232+
208233
@enum(VariableType, Continuous, Binary, Integer, Semiinteger, Semicontinuous)
209234

210235
macro LinQuadOptimizerBase(inner_model_type=Any)
@@ -277,9 +302,9 @@ function MOI.is_empty(m::LinQuadOptimizer)
277302
ret = ret && isempty(m.constraint_names)
278303
ret = ret && isempty(m.constraint_names_rev)
279304
ret = ret && m.objective_constant == 0.0
280-
ret = ret && m.termination_status == MOI.OtherError
281-
ret = ret && m.primal_status == MOI.UnknownResultStatus
282-
ret = ret && m.dual_status == MOI.UnknownResultStatus
305+
ret = ret && m.termination_status == MOI.OptimizeNotCalled
306+
ret = ret && m.primal_status == MOI.NoSolution
307+
ret = ret && m.dual_status == MOI.NoSolution
283308
ret = ret && m.primal_result_count == 0
284309
ret = ret && m.dual_result_count == 0
285310
ret = ret && m.solvetime == 0.0
@@ -319,9 +344,9 @@ function MOI.empty!(m::M, env = nothing) where M<:LinQuadOptimizer
319344

320345
m.objective_constant = 0.0
321346

322-
m.termination_status = MathOptInterface.OtherError
323-
m.primal_status = MathOptInterface.UnknownResultStatus
324-
m.dual_status = MathOptInterface.UnknownResultStatus
347+
m.termination_status = MathOptInterface.OptimizeNotCalled
348+
m.primal_status = MathOptInterface.NoSolution
349+
m.dual_status = MathOptInterface.NoSolution
325350
m.primal_result_count = 0
326351
m.dual_result_count = 0
327352

@@ -360,7 +385,6 @@ include("variables.jl")
360385
include("constraints.jl")
361386
include("objective.jl")
362387
include("solve.jl")
363-
include("copy.jl")
364388

365389
include("solver_interface.jl")
366390

src/copy.jl

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/mockoptimizer.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ mutable struct MockLinQuadModel # <: LinQuadOptInterface.LinQuadOptimizer
6363

6464
m.sos = LinQuadSOS[]
6565

66-
m.termination_status = MOI.Success
67-
m.primal_status = MOI.FeasiblePoint
68-
m.dual_status = MOI.FeasiblePoint
66+
m.termination_status = MOI.OptimizeNotCalled
67+
m.primal_status = MOI.NoSolution
68+
m.dual_status = MOI.NoSolution
6969

7070
m.variable_primal_solution = zeros(0)
7171
m.variable_dual_solution = zeros(0)
@@ -288,7 +288,7 @@ function set_solution!(instance::MockLinQuadOptimizer;
288288
constraint_dual = Float64[],
289289
quadratic_primal = Float64[],
290290
quadratic_dual = Float64[],
291-
termination_status = MOI.Success,
291+
termination_status = MOI.Optimal,
292292
primal_status = MOI.FeasiblePoint,
293293
dual_status = MOI.FeasiblePoint
294294
)

src/solve.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ function MOI.optimize!(model::LinQuadOptimizer)
1515
fill!(model.variable_dual_solution, NaN)
1616
fill!(model.constraint_primal_solution, NaN)
1717
fill!(model.constraint_dual_solution, NaN)
18-
model.primal_status = MOI.UnknownResultStatus
19-
model.dual_status = MOI.UnknownResultStatus
18+
model.primal_status = MOI.NoSolution
19+
model.dual_status = MOI.NoSolution
2020
model.primal_result_count = 0
2121
model.dual_result_count = 0
2222

test/contconic.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ end
2323
function set_lin3test_solutions!(solver)
2424
# SOLVE 1
2525
LQOI.set_solution!(solver,
26-
termination_status = MOI.Success,
26+
termination_status = MOI.Infeasible,
2727
primal_status = MOI.NoSolution,
2828
dual_status = MOI.InfeasibilityCertificate,
2929
variable_primal = [NaN],
@@ -32,4 +32,4 @@ function set_lin3test_solutions!(solver)
3232
constraint_dual = [1.0, -1.0]
3333
)
3434
return
35-
end
35+
end

test/contlinear.jl

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,9 @@ end
198198
function set_linear8atest_solutions!(solver)
199199
# SOLVE 1
200200
LQOI.set_solution!(solver,
201-
termination_status = MOI.Success,
202-
primal_status = MOI.UnknownResultStatus,
201+
termination_status = MOI.Infeasible,
202+
primal_status = MOI.NoSolution,
203203
dual_status = MOI.InfeasibilityCertificate,
204-
variable_primal = [NaN, NaN],
205-
constraint_primal = [NaN],
206204
variable_dual = [NaN, NaN],
207205
constraint_dual = [-0.5]
208206
)
@@ -212,27 +210,23 @@ end
212210
function set_linear8btest_solutions!(solver)
213211
# SOLVE 1
214212
LQOI.set_solution!(solver,
215-
termination_status = MOI.Success,
213+
termination_status = MOI.DualInfeasible,
216214
primal_status = MOI.InfeasibilityCertificate,
217-
dual_status = MOI.UnknownResultStatus,
215+
dual_status = MOI.NoSolution,
218216
variable_primal = [2.0, 1.0],
219-
constraint_primal = [NaN],
220-
variable_dual = [NaN, NaN],
221-
constraint_dual = [NaN]
217+
constraint_primal = [NaN]
222218
)
223219
return
224220
end
225221

226222
function set_linear8ctest_solutions!(solver)
227223
# SOLVE 1
228224
LQOI.set_solution!(solver,
229-
termination_status = MOI.Success,
225+
termination_status = MOI.DualInfeasible,
230226
primal_status = MOI.InfeasibilityCertificate,
231-
dual_status = MOI.UnknownResultStatus,
227+
dual_status = MOI.NoSolution,
232228
variable_primal = [1.0, 1.0],
233-
constraint_primal = [NaN],
234-
variable_dual = [NaN, NaN],
235-
constraint_dual = [NaN]
229+
constraint_primal = [NaN]
236230
)
237231
return
238232
end
@@ -301,11 +295,9 @@ end
301295
function set_linear12test_solutions!(solver)
302296
# SOLVE 1
303297
LQOI.set_solution!(solver,
304-
termination_status = MOI.Success,
305-
primal_status = MOI.UnknownResultStatus,
298+
termination_status = MOI.Infeasible,
299+
primal_status = MOI.NoSolution,
306300
dual_status = MOI.InfeasibilityCertificate,
307-
variable_primal = [NaN, NaN],
308-
constraint_primal = [NaN, NaN],
309301
variable_dual = [2/3, 0.0],
310302
constraint_dual = [-1/3, -1.0]
311303
)

test/contquadratic.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,4 @@ function set_socp1test_solutions!(solver)
9595
quadratic_dual = [-1.41421]
9696
)
9797
return
98-
end
98+
end

test/intlinear.jl

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,43 @@
11
function set_knapsacktest_solutions!(solver)
22
# SOLVE 1
33
LQOI.set_solution!(solver,
4-
termination_status = MOI.Success,
4+
termination_status = MOI.Optimal,
55
primal_status = MOI.FeasiblePoint,
6-
dual_status = MOI.UnknownResultStatus,
6+
dual_status = MOI.NoSolution,
77
variable_primal = [1.0, 0.0, 0.0, 1.0, 1.0],
8-
constraint_primal = [9.0],
9-
quadratic_primal = Float64[],
10-
variable_dual = [NaN, NaN, NaN, NaN, NaN],
11-
constraint_dual = [NaN],
12-
quadratic_dual = Float64[]
8+
constraint_primal = [9.0]
139
)
1410
return
1511
end
1612

1713
function set_int1test_solutions!(solver)
1814
# SOLVE 1
1915
LQOI.set_solution!(solver,
20-
termination_status = MOI.Success,
16+
termination_status = MOI.Optimal,
2117
primal_status = MOI.FeasiblePoint,
22-
dual_status = MOI.UnknownResultStatus,
18+
dual_status = MOI.NoSolution,
2319
variable_primal = [4.0, 5.0, 1.0],
24-
constraint_primal = [10.0, 15.0],
25-
quadratic_primal = Float64[],
26-
variable_dual = [NaN, NaN, NaN],
27-
constraint_dual = [NaN, NaN],
28-
quadratic_dual = Float64[]
20+
constraint_primal = [10.0, 15.0]
2921
)
3022
return
3123
end
3224

3325
function set_int3test_solutions!(solver)
3426
# SOLVE 1
3527
LQOI.set_solution!(solver,
36-
termination_status = MOI.Success,
28+
termination_status = MOI.Optimal,
3729
primal_status = MOI.FeasiblePoint,
38-
dual_status = MOI.UnknownResultStatus,
30+
dual_status = MOI.NoSolution,
3931
variable_primal = [1.0, -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, -0.0, -0.0, -0.0, -0.0],
40-
constraint_primal = [0.9875],
41-
quadratic_primal = Float64[],
42-
variable_dual = [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN],
43-
constraint_dual = [NaN],
44-
quadratic_dual = Float64[]
32+
constraint_primal = [0.9875]
4533
)
4634
# SOLVE 2
4735
LQOI.set_solution!(solver,
48-
termination_status = MOI.Success,
36+
termination_status = MOI.Optimal,
4937
primal_status = MOI.FeasiblePoint,
50-
dual_status = MOI.UnknownResultStatus,
38+
dual_status = MOI.NoSolution,
5139
variable_primal = [1.0, -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, -0.0, -0.0, -0.0, -0.0],
52-
constraint_primal = [0.9875],
53-
quadratic_primal = Float64[],
54-
variable_dual = [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN],
55-
constraint_dual = [NaN],
56-
quadratic_dual = Float64[]
40+
constraint_primal = [0.9875]
5741
)
5842
return
59-
end
43+
end

test/runtests.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ end
135135

136136
@testset "ModelLike tests" begin
137137
config = MOIT.TestConfig(solve=false)
138+
@testset "default_objective_test" begin
139+
MOIT.default_objective_test(LQOI.MockLinQuadOptimizer())
140+
end
141+
@testset "default_status_test" begin
142+
MOIT.default_status_test(LQOI.MockLinQuadOptimizer())
143+
end
138144
@testset "nametest" begin
139145
MOIT.nametest(LQOI.MockLinQuadOptimizer())
140146
end

0 commit comments

Comments
 (0)