# ConstraintModels

Documentation for ConstraintModels.

ConstraintModels.SudokuInstanceType
mutable struct SudokuInstance{T <: Integer} <: AbstractMatrix{T}

A struct for SudokuInstances, which is a subtype of AbstractMatrix.

SudokuInstance(A::AbstractMatrix{T})
SudokuInstance(::Type{T}, n::Int) # fill in blank sudoku of type T
SudokuInstance(n::Int) # fill in blank sudoku of type Int
SudokuInstance(::Type{T}) # fill in "standard" 9×9 sudoku of type T
SudokuInstance() # fill in "standard" 9×9 sudoku of type Int
SudokuInstance(n::Int, P::Pair{Tuple{Int, Int}, T}...) where {T <: Integer} # construct a sudoku given pairs of coordinates and values
SudokuInstance(P::Pair{Tuple{Int, Int}, T}...) # again, default to 9×9 sudoku, constructing given pairs

Constructor functions for the SudokuInstance struct.

Base.Multimedia.displayMethod
display(io::IO, S::SudokuInstance)
display(S::SudokuInstance) # default to stdout

Displays an $n\times n$ SudokuInstance.

Base.sizeMethod
Base.size(S::SudokuInstance)

Extends Base.size for SudokuInstance.

ConstraintModels.golombFunction
golomb(n, L=n²)

Model the Golomb problem of n marks on the ruler 0:L. The modeler argument accepts :raw, and :JuMP (default), which refer respectively to the solver internal model, the MathOptInterface model, and the JuMP model.

ConstraintModels.magic_squareMethod
magic_square(n; modeler = :JuMP)

Create a model for the magic square problem of order n. The modeler argument accepts :JuMP (default), which refer to the solver the JuMP model.

ConstraintModels.mincutMethod
mincut(graph::AbstractMatrix{T}; source::Int, sink::Int, interdiction::Int = 0) where T <: Number

Compute the minimum cut of a graph.

Arguments:

• graph: Any matrix <: AbstractMatrix that describes the capacities of the graph
• source: Id of the source node; must be set
• sink: Id of the sink node; must be set
• interdiction: indicates the number of forbidden links
ConstraintModels.n_queensMethod
n_queens(n; modeler = :JuMP)

Create a model for the n-queens problem with n queens. The modeler argument accepts :JuMP (default), which refer to the JuMP model.

ConstraintModels.schedulingMethod
scheduling(processing_time, due_date; modeler=:JuMP)

Create a model for the n-queens problem with n queens. The modeler argument accepts :JuMP (default), which refer to the JuMP model.

ConstraintModels.sudokuMethod
sudoku(n; start= Dictionary{Int, Int}(), modeler = :JuMP)

Create a model for the sudoku problem of domain 1:n² with optional starting values. The modeler argument accepts :raw, :MOI, and :JuMP (default), which refer respectively to the solver internal model, the MathOptInterface model, and the JuMP model.

# Construct a JuMP model m and its associated matrix grid for sudoku 9×9
m, grid = sudoku(3)

# Same with a starting instance
instance = [
9  3  0  0  0  0  0  4  0
0  0  0  0  4  2  0  9  0
8  0  0  1  9  6  7  0  0
0  0  0  4  7  0  0  0  0
0  2  0  0  0  0  0  6  0
0  0  0  0  2  3  0  0  0
0  0  8  5  3  1  0  0  2
0  9  0  2  8  0  0  0  0
0  7  0  0  0  0  0  5  3
]
m, grid = sudoku(3, start = instance)

# Run the solver
optimize!(m)

# Retrieve and display the values
solution = value.(grid)
display(solution, Val(:sudoku))