CBLS.AllDifferent
— TypeGlobal constraint ensuring that all the values of a given configuration are unique.
@constraint(model, X in AllDifferent())
CBLS.AllEqual
— TypeGlobal constraint ensuring that all the values of X
are all equal.
@constraint(model, X in AllEqual())
CBLS.AtLeast
— TypeConstraint ensuring that the number of occurrences of the values in vals
in x
is at least val
.
@constraint(model, X in AtLeast(val, vals))
CBLS.AtMost
— TypeConstraint ensuring that the number of occurrences of the values in vals
in x
is at most val
.
@constraint(model, X in AtMost(val, vals))
CBLS.Conflicts
— TypeGlobal constraint ensuring that the tuple x
does not match any configuration listed within the conflict set pair_vars
. This constraint, originating from the extension model, stipulates that x
must avoid all configurations defined as conflicts: x ∉ pair_vars
. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.
@constraint(model, X in Conflicts(; pair_vars))
CBLS.Count
— TypeGlobal constraint ensuring that the number of occurrences of val
in X
is equal to count
.
@constraint(model, X in Count(count, val, vals))
CBLS.Cumulative
— TypeGlobal constraint ensuring that the cumulative sum of the heights of the tasks is less than or equal to val
.
@constraint(model, X in Cumulative(; pair_vars, op, val))
CBLS.DiscreteSet
— TypeDiscreteSet(values)
Create a discrete set of values.
Arguments
values::Vector{T}
: A vector of values to include in the set.
Returns
DiscreteSet{T}
: A discrete set containing the specified values.
CBLS.DistDifferent
— TypeA constraint ensuring that the distances between marks on the ruler are unique. Specifically, it checks that the distance between x[1]
and x[2]
, and the distance between x[3]
and x[4]
, are different. This constraint is fundamental in ensuring the validity of a Golomb ruler, where no two pairs of marks should have the same distance between them.
CBLS.Element
— TypeGlobal constraint ensuring that the value of X
at index id
is equal to val
.
@constraint(model, X in Element(; id = nothing, op = ==, val = 0))
CBLS.Error
— TypeError{F <: Function} <: JuMP.AbstractVectorSet
The solver will compute a straightforward error function based on the concept
. To run the solver efficiently, it is possible to provide an error function err
instead of concept
. err
must return a nonnegative real number.
@constraint(model, X in Error(err))
CBLS.Exactly
— TypeConstraint ensuring that the number of occurrences of the values in vals
in x
is exactly val
.
@constraint(model, X in Exactly(val, vals))
CBLS.Extension
— TypeGlobal constraint enforcing that the tuple x
matches a configuration within the supports set pair_vars[1]
or does not match any configuration within the conflicts set pair_vars[2]
. It embodies the logic: x ∈ pair_vars[1] || x ∉ pair_vars[2]
, providing a comprehensive way to define valid (supported) and invalid (conflicted) tuples for constraint satisfaction problems. This constraint is versatile, allowing for the explicit delineation of both acceptable and unacceptable configurations.
CBLS.Instantiation
— TypeThe instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.
CBLS.Intention
— TypeIntention{F <: Function} <: JuMP.AbstractVectorSet
Represents an intention set in the model.
Arguments
f::F
: A function representing the intention.
CBLS.MDDConstraint
— TypeMulti-valued Decision Diagram (MDD) constraint.
The MDD constraint is a constraint that can be used to model a wide range of problems. It is a directed graph where each node is labeled with a value and each edge is labeled with a value. The constraint is satisfied if there is a path from the first node to the last node such that the sequence of edge labels is a valid sequence of the value labels.
@constraint(model, X in MDDConstraint(; language))
CBLS.MOIAllDifferent
— TypeMOIAllDifferent <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIAllEqual
— TypeMOIAllEqual <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIConflicts
— TypeMOIConflicts{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOICumulative
— TypeMOICumulative{F <: Function, T1 <: Number, T2 <: Number} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIDistDifferent
— TypeMOIDistDifferent <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIElement
— TypeMOIElement{I <: Integer, F <: Function, T <: Union{Nothing, Number}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIError
— TypeMOIError{F <: Function} <: MOI.AbstractVectorSet
DOCSTRING
Arguments:
f::F
: DESCRIPTIONdimension::Int
: DESCRIPTIONMOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end
: DESCRIPTION
CBLS.MOIExtension
— TypeMOIExtension{T <: Number, V <: Union{Vector{Vector{T}}, Tuple{Vector{T}, Vector{T}}}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIInstantiation
— TypeMOIInstantiation{T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIIntention
— TypeMOIIntention{F <: Function} <: MOI.AbstractVectorSet
Represents an intention set in the model.
Arguments
f::F
: A function representing the intention.dimension::Int
: The dimension of the vector set.
CBLS.MOIMaximum
— TypeMOIMaximum {F <: Function, T <: Number} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIMinimum
— TypeMOIMinimum {F <: Function, T <: Number} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIMultivaluedDecisionDiagram
— TypeMOIMultivaluedDecisionDiagram{L <: ConstraintCommons.AbstractMultivaluedDecisionDiagram} <: AbstractVectorSet
DOCSTRING
CBLS.MOINValues
— TypeMOINValues{F <: Function, T1 <: Number, T2 <: Number, V <: Vector{T2}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOINoOverlap
— TypeMOINoOverlap{I <: Integer, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIOrdered
— TypeMOIOrdered{F <: Function, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIRegular
— TypeMOIRegular{L <: ConstraintCommons.AbstractAutomaton} <: AbstractVectorSet
DOCSTRING
CBLS.MOISum
— TypeMOISum{F <: Function, T1 <: Number, T2 <: Number, V <: Number} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOISupports
— TypeMOISupports{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.Maximum
— TypeGlobal constraint ensuring that the maximum value in the tuple x
satisfies the condition op(x) val
. This constraint is useful for specifying that the maximum value in the tuple must satisfy a certain condition.
@constraint(model, X in Maximum(; op = ==, val))
CBLS.Minimum
— TypeGlobal constraint ensuring that the minimum value in the tuple x
satisfies the condition op(x) val
. This constraint is useful for specifying that the minimum value in the tuple must satisfy a certain condition.
@constraint(model, X in Minimum(; op = ==, val))
CBLS.NValues
— TypeGlobal constraint ensuring that the number of distinct values in X
satisfies the given condition.
CBLS.NoOverlap
— TypeGlobal constraint ensuring that the tuple x
does not overlap with any configuration listed within the pair set pair_vars
. This constraint, originating from the extension model, stipulates that x
must avoid all configurations defined as pairs: x ∩ pair_vars = ∅
. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.
@constraint(model, X in NoOverlap(; bool = true, dim = 1, pair_vars = nothing))
CBLS.Optimizer
— TypeOptimizer(model = Model(); options = Options())
Create an instance of the Optimizer.
Arguments
model
: The model to be optimized.options::Options
: Options for configuring the solver.
Returns
Optimizer
: An instance of the optimizer.
CBLS.Optimizer
— TypeOptimizer <: MOI.AbstractOptimizer
Defines an optimizer for CBLS.
Fields
solver::LS.MainSolver
: The main solver used for local search.int_vars::Set{Int}
: Set of integer variables.compare_vars::Set{Int}
: Set of variables to compare.
CBLS.Ordered
— TypeGlobal constraint ensuring that the variables are ordered according to op
.
CBLS.Predicate
— TypePredicate{F <: Function} <: JuMP.AbstractVectorSet
Deprecated: Use Intention
instead.
Represents a predicate set in the model.
Arguments
f::F
: A function representing the predicate.
CBLS.Regular
— TypeEnsures that a sequence x
(interpreted as a word) is accepted by the regular language represented by a given automaton. This constraint verifies the compliance of x
with the language rules encoded within the automaton
parameter, which must be an instance of <:AbstractAutomaton
.
@constraint(model, X in RegularConstraint(; language))
CBLS.ScalarFunction
— TypeScalarFunction{F <: Function, V <: Union{Nothing, VOV}} <: MOI.AbstractScalarFunction
A container to express any function with real value in JuMP syntax. Used with the @objective
macro.
Arguments:
f::F
: function to be applied toX
X::V
: a subset of the variables of the model.
Given a model
, and some (collection of) variables X
to optimize. an objective function f
can be added as follows. Note that only Min
for minimization us currently defined. Max
will come soon.
# Applies to all variables in order of insertion.
# Recommended only when the function argument order does not matter.
@objective(model, ScalarFunction(f))
# Generic use
@objective(model, ScalarFunction(f, X))
CBLS.Sum
— TypeGlobal constraint ensuring that the sum of the variables in x
satisfies a given condition.
CBLS.Supports
— TypeGlobal constraint ensuring that the tuple x
matches a configuration listed within the support set pair_vars
. This constraint is derived from the extension model, specifying that x
must be one of the explicitly defined supported configurations: x ∈ pair_vars
. It is utilized to directly declare the tuples that are valid and should be included in the solution space.
@constraint(model, X in Supports(; pair_vars))
Base.copy
— MethodBase.copy(set::MOIError) = begin
DOCSTRING
Base.copy
— MethodBase.copy(set::MOIIntention)
Copy an intention set.
Arguments
set::MOIIntention
: The intention set to be copied.
Returns
MOIIntention
: A copy of the intention set.
Base.copy
— MethodBase.copy(set::DiscreteSet)
Copy a discrete set.
Arguments
set::DiscreteSet
: The discrete set to be copied.
Returns
DiscreteSet
: A copy of the discrete set.
Base.copy
— MethodBase.copy(op::F) where {F <: Function}
Copy a function.
Arguments
op::F
: The function to be copied.
Returns
F
: The copied function.
Base.copy
— MethodBase.copy(::Nothing)
Copy a Nothing
value.
Arguments
::Nothing
: TheNothing
value to be copied.
Returns
Nothing
: The copiedNothing
value.
JuMP.build_variable
— MethodJuMP.build_variable(::Function, info::JuMP.VariableInfo, set::T) where T <: MOI.AbstractScalarSet
Create a variable constrained by a scalar set.
Arguments
info::JuMP.VariableInfo
: Information about the variable to be created.set::T where T <: MOI.AbstractScalarSet
: The set defining the constraints on the variable.
Returns
JuMP.VariableConstrainedOnCreation
: A variable constrained by the specified set.
JuMP.moi_set
— MethodJuMP.moi_set(set::Intention, dim::Int) -> MOIIntention
Convert an Intention
set to a MOIIntention
set.
Arguments
set::Intention
: The intention set to be converted.dim::Int
: The dimension of the vector set.
Returns
MOIIntention
: The converted MOIIntention set.
JuMP.moi_set
— MethodJuMP.moi_set(set::Predicate, dim::Int) -> MOIIntention
Convert a Predicate
set to a MOIIntention
set.
Arguments
set::Predicate
: The predicate set to be converted.dim::Int
: The dimension of the vector set.
Returns
MOIIntention
: The converted MOIIntention set.
MathOptInterface.add_constraint
— MethodMOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)
DOCSTRING
Arguments:
optimizer
: DESCRIPTIONvars
: DESCRIPTIONset
: DESCRIPTION
MathOptInterface.add_constraint
— MethodMOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIIntention{F}) where {F <: Function}
Add an intention constraint to the optimizer.
Arguments
optimizer::Optimizer
: The optimizer instance.vars::MOI.VectorOfVariables
: The variables for the constraint.set::MOIIntention{F}
: The intention set defining the constraint.
Returns
CI{VOV, MOIIntention{F}}
: The constraint index.
MathOptInterface.add_constraint
— MethodMOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number
DOCSTRING
Arguments:
optimizer
: DESCRIPTIONv
: DESCRIPTIONset
: DESCRIPTION
MathOptInterface.add_variable
— MethodMOI.add_variable(model::Optimizer) = begin
DOCSTRING
MathOptInterface.copy_to
— MethodMOI.copy_to(model::Optimizer, src::MOI.ModelLike)
Copy the source model to the optimizer.
Arguments
model::Optimizer
: The optimizer instance.src::MOI.ModelLike
: The source model to be copied.
Returns
Nothing
MathOptInterface.empty!
— MethodMOI.empty!(opt)
Empty the optimizer.
Arguments
opt::Optimizer
: The optimizer instance.
Returns
Nothing
MathOptInterface.get
— MethodMOI.get(::Optimizer, ::MOI.SolverName)
Get the name of the solver.
Arguments
::Optimizer
: The optimizer instance.
Returns
String
: The name of the solver.
MathOptInterface.get
— MethodMoi.get(::Optimizer, ::MOI.SolverVersion)
Get the version of the solver, here LocalSearchSolvers.jl
.
MathOptInterface.is_empty
— MethodMOI.is_empty(model::Optimizer)
Check if the model is empty.
Arguments
model::Optimizer
: The optimizer instance.
Returns
Bool
: True if the model is empty, false otherwise.
MathOptInterface.is_valid
— MethodMOI.is_valid(optimizer::Optimizer, index::CI{VI, MOI.Integer})
Check if an index is valid for the optimizer.
Arguments
optimizer::Optimizer
: The optimizer instance.index::CI{VI, MOI.Integer}
: The index to be checked.
Returns
Bool
: True if the index is valid, false otherwise.
MathOptInterface.optimize!
— MethodMOI.optimize!(model::Optimizer)
Optimize the model using the optimizer.
Arguments
model::Optimizer
: The optimizer instance.
Returns
Nothing
MathOptInterface.set
— FunctionMOI.set(::Optimizer, ::MOI.Silent, bool = true)
Set the verbosity of the solver.
Arguments
::Optimizer
: The optimizer instance.::MOI.Silent
: The silent option for the solver.bool::Bool
: Whether to set the solver to silent mode.
Returns
Nothing
MathOptInterface.set
— MethodMOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)
Set a RawOptimizerAttribute to value
MathOptInterface.set
— MethodMOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})
Set the time limit
MathOptInterface.supports_constraint
— MethodMOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin
DOCSTRING
Arguments:
- ``: DESCRIPTION
- ``: DESCRIPTION
- ``: DESCRIPTION
MathOptInterface.supports_constraint
— MethodMOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIIntention{F}}) where {F <: Function}
Check if the optimizer supports a given intention constraint.
Arguments
::Optimizer
: The optimizer instance.::Type{VOV}
: The type of the variable.::Type{MOIIntention{F}}
: The type of the intention.
Returns
Bool
: True if the optimizer supports the constraint, false otherwise.
MathOptInterface.supports_incremental_interface
— MethodMOI.supports_incremental_interface(::Optimizer)
Check if the optimizer supports incremental interface.
Arguments
::Optimizer
: The optimizer instance.
Returns
Bool
: True if the optimizer supports incremental interface, false otherwise.