Closed odow closed 1 year ago
Niiiiiice.
julia> using JuMP
julia> import MiniZinc
julia> model = GenericModel{Int}(() -> MiniZinc.Optimizer{Int}(MiniZinc.Chuffed()))
A JuMP Model
Feasibility problem with:
Variables: 0
Model mode: AUTOMATIC
CachingOptimizer state: EMPTY_OPTIMIZER
Solver name: MiniZinc
julia> @variable(model, 1 <= x[1:3] <= 3, Int)
3-element Vector{GenericVariableRef{Int64}}:
x[1]
x[2]
x[3]
julia> @variable(model, z[1:2], Bin)
2-element Vector{GenericVariableRef{Int64}}:
z[1]
z[2]
julia> @constraint(model, z[1] <--> {[x[1], x[2]] in MOI.AllDifferent(2)})
z[1] <--> {[x[1], x[2]] ∈ MathOptInterface.AllDifferent(2)}
julia> @constraint(model, z[2] <--> {[x[2], x[3]] in MOI.AllDifferent(2)})
z[2] <--> {[x[2], x[3]] ∈ MathOptInterface.AllDifferent(2)}
julia> @constraint(model, z[1] + z[2] == 1)
z[1] + z[2] = 1
julia> optimize!(model)
Warning: included file "count.mzn" overrides a global constraint file from the standard library. This is deprecated. For a solver-specific redefinition of a global constraint, override "fzn_<global>.mzn" instead.
Warning: included file "global_cardinality_low_up.mzn" overrides a global constraint file from the standard library. This is deprecated. For a solver-specific redefinition of a global constraint, override "fzn_<global>.mzn" instead.
julia> value.(x)
3-element Vector{Int64}:
2
3
3
julia> value.(z)
2-element Vector{Int64}:
1
0
that's great!
Chuffed is a good candidate for the JuMP generic number type PR for
GenericModel{Int}(() -> MiniZinc.Optimizer(MiniZinc.Chuffed()))