Skip to content

Commit 8a3404b

Browse files
authored
Support chuffed as a string (#35)
1 parent 1667dd9 commit 8a3404b

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ MathOptInterface
6363
julia> function main()
6464
model = MOI.Utilities.CachingOptimizer(
6565
MiniZinc.Model{Int}(),
66-
MiniZinc.Optimizer{Int}(MiniZinc.Chuffed()),
66+
MiniZinc.Optimizer{Int}("chuffed"),
6767
)
6868
# xᵢ ∈ {1, 2, 3} ∀i=1,2,3
6969
x = MOI.add_variables(model, 3)

src/optimize.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ mutable struct Optimizer{T} <: MOI.AbstractOptimizer
2828
primal_solution::Dict{MOI.VariableIndex,T}
2929
options::Dict{String,Any}
3030
function Optimizer{T}(solver::String) where {T}
31+
if solver == "chuffed"
32+
solver = Chuffed()
33+
end
3134
primal_solution = Dict{MOI.VariableIndex,T}()
3235
options = Dict{String,Any}("model_filename" => "")
3336
return new(solver, Model{T}(), "", zero(T), primal_solution, options)

test/runtests.jl

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,7 @@ function test_moi_basic_fzn()
917917
@test MOI.is_valid(model, x_int)
918918
@test MOI.is_valid(model, c1)
919919
@test MOI.is_valid(model, c2)
920-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
920+
solver = MiniZinc.Optimizer{Int}("chuffed")
921921
index_map, _ = MOI.optimize!(solver, model)
922922
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
923923
@test MOI.get(solver, MOI.ResultCount()) >= 1
@@ -935,7 +935,7 @@ function test_moi_var_domain_infeasible_fzn()
935935
@test MOI.is_valid(model, x_int)
936936
@test MOI.is_valid(model, c1)
937937
@test MOI.is_valid(model, c2)
938-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
938+
solver = MiniZinc.Optimizer{Int}("chuffed")
939939
MOI.optimize!(solver, model)
940940
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.INFEASIBLE
941941
@test MOI.get(solver, MOI.ResultCount()) == 0
@@ -949,7 +949,7 @@ function test_moi_infeasible_fzn()
949949
MOI.add_constraint.(model, x, MOI.Integer())
950950
MOI.add_constraint.(model, x, MOI.GreaterThan(1))
951951
MOI.add_constraint(model, sum(x, init = 0), MOI.LessThan(2))
952-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
952+
solver = MiniZinc.Optimizer{Int}("chuffed")
953953
MOI.optimize!(solver, model)
954954
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.INFEASIBLE
955955
@test MOI.get(solver, MOI.ResultCount()) == 0
@@ -962,14 +962,14 @@ function test_moi_one_solution_fzn()
962962
MOI.add_constraint(model, x, MOI.Interval(1, 10))
963963
MOI.set(model, MOI.ObjectiveFunction{typeof(x)}(), x)
964964
MOI.set(model, MOI.ObjectiveSense(), MOI.MAX_SENSE)
965-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
965+
solver = MiniZinc.Optimizer{Int}("chuffed")
966966
index_map, _ = MOI.optimize!(solver, model)
967967
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
968968
@test MOI.get(solver, MOI.ResultCount()) >= 1
969969
@test MOI.get(solver, MOI.VariablePrimal(), index_map[x]) == 10
970970
@test MOI.get(solver, MOI.ObjectiveValue()) == 10
971971
MOI.set(model, MOI.ObjectiveSense(), MOI.MIN_SENSE)
972-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
972+
solver = MiniZinc.Optimizer{Int}("chuffed")
973973
index_map, _ = MOI.optimize!(solver, model)
974974
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
975975
@test MOI.get(solver, MOI.ResultCount()) >= 1
@@ -987,7 +987,7 @@ function test_moi_int_lin()
987987
MOI.add_constraint(model, 1 * x[i], MOI.LessThan(1))
988988
end
989989
MOI.add_constraint(model, sum(1 * x[i] for i in 1:3), MOI.EqualTo(2))
990-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
990+
solver = MiniZinc.Optimizer{Int}("chuffed")
991991
index_map, _ = MOI.optimize!(solver, model)
992992
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
993993
@test MOI.get(solver, MOI.ResultCount()) >= 1
@@ -1016,7 +1016,7 @@ function test_moi_send_more_money()
10161016
(10_000 * M + 1_000 * O + 100 * N + 10 * E + Y)
10171017
MOI.add_constraint.(model, f, MOI.EqualTo(0))
10181018
MOI.add_constraint(model, MOI.VectorOfVariables(x), MOI.AllDifferent(8))
1019-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
1019+
solver = MiniZinc.Optimizer{Int}("chuffed")
10201020
index_map, _ = MOI.optimize!(solver, model)
10211021
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
10221022
@test MOI.get(solver, MOI.ResultCount()) >= 1
@@ -1031,7 +1031,7 @@ end
10311031
function test_moi_tests()
10321032
model = MOI.Utilities.CachingOptimizer(
10331033
MOI.Utilities.Model{Int}(),
1034-
MiniZinc.Optimizer{Int}(MiniZinc.Chuffed()),
1034+
MiniZinc.Optimizer{Int}("chuffed"),
10351035
)
10361036
config = MOI.Test.Config(Int)
10371037
MOI.Test.runtests(model, config, include = String["test_cpsat_"])
@@ -1047,7 +1047,7 @@ function test_model_filename()
10471047
@test MOI.is_valid(model, x_int)
10481048
@test MOI.is_valid(model, c1)
10491049
@test MOI.is_valid(model, c2)
1050-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
1050+
solver = MiniZinc.Optimizer{Int}("chuffed")
10511051
attr = MOI.RawOptimizerAttribute("model_filename")
10521052
@test MOI.supports(solver, attr)
10531053
@test MOI.get(solver, attr) == ""
@@ -1073,7 +1073,7 @@ function test_model_nlp_boolean()
10731073
backend = MOI.Nonlinear.ExprGraphOnly()
10741074
evaluator = MOI.Nonlinear.Evaluator(nlp, backend, x)
10751075
MOI.set(model, MOI.NLPBlock(), MOI.NLPBlockData(evaluator))
1076-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
1076+
solver = MiniZinc.Optimizer{Int}("chuffed")
10771077
MOI.set(solver, MOI.RawOptimizerAttribute("model_filename"), "test.mzn")
10781078
index_map, _ = MOI.optimize!(solver, model)
10791079
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
@@ -1107,7 +1107,7 @@ function test_model_nlp_boolean_nested()
11071107
backend = MOI.Nonlinear.ExprGraphOnly()
11081108
evaluator = MOI.Nonlinear.Evaluator(nlp, backend, x)
11091109
MOI.set(model, MOI.NLPBlock(), MOI.NLPBlockData(evaluator))
1110-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
1110+
solver = MiniZinc.Optimizer{Int}("chuffed")
11111111
MOI.set(solver, MOI.RawOptimizerAttribute("model_filename"), "test.mzn")
11121112
index_map, _ = MOI.optimize!(solver, model)
11131113
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
@@ -1134,7 +1134,7 @@ function test_model_nlp_boolean_jump()
11341134
backend = MOI.Nonlinear.ExprGraphOnly()
11351135
evaluator = MOI.Nonlinear.Evaluator(nlp, backend, x)
11361136
MOI.set(model, MOI.NLPBlock(), MOI.NLPBlockData(evaluator))
1137-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
1137+
solver = MiniZinc.Optimizer{Int}("chuffed")
11381138
MOI.set(solver, MOI.RawOptimizerAttribute("model_filename"), "test.mzn")
11391139
index_map, _ = MOI.optimize!(solver, model)
11401140
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
@@ -1163,7 +1163,7 @@ function test_model_nlp_boolean_registered()
11631163
backend = MOI.Nonlinear.ExprGraphOnly()
11641164
evaluator = MOI.Nonlinear.Evaluator(nlp, backend, x)
11651165
MOI.set(model, MOI.NLPBlock(), MOI.NLPBlockData(evaluator))
1166-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
1166+
solver = MiniZinc.Optimizer{Int}("chuffed")
11671167
MOI.set(solver, MOI.RawOptimizerAttribute("model_filename"), "test.mzn")
11681168
index_map, _ = MOI.optimize!(solver, model)
11691169
@test MOI.get(solver, MOI.TerminationStatus()) === MOI.OPTIMAL
@@ -1178,7 +1178,7 @@ function test_model_nlp_boolean_registered()
11781178
end
11791179

11801180
function test_model_solver_name()
1181-
solver = MiniZinc.Optimizer{Int}(MiniZinc.Chuffed())
1181+
solver = MiniZinc.Optimizer{Int}("chuffed")
11821182
@test MOI.get(solver, MOI.SolverName()) == "MiniZinc"
11831183
return
11841184
end

0 commit comments

Comments
 (0)