CBLS.jl
Documentation for CBLS.jl
.
CBLS.AllDifferent Type
Global constraint ensuring that all the values of a given configuration are unique.
@constraint(model, X in AllDifferent())
CBLS.AllEqual Type
Global constraint ensuring that all the values of X
are all equal.
@constraint(model, X in AllEqual())
CBLS.AtLeast Type
Constraint 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 Type
Constraint 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 Type
Global 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 Type
Global 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 Type
Global 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 Type
DiscreteSet(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 Type
A 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 Type
Global 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 Type
Error{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 Type
Constraint 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 Type
Global 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 Type
The 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 Type
Intention{F <: Function} <: JuMP.AbstractVectorSet
Represents an intention set in the model.
Arguments
f::F
: A function representing the intention.
CBLS.MDDConstraint Type
Multi-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.MOIConflicts Type
MOIConflicts{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOICumulative Type
MOICumulative{F <: Function, T1 <: Number, T2 <: Number} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIElement Type
MOIElement{I <: Integer, F <: Function, T <: Union{Nothing, Number}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIError Type
MOIError{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 Type
MOIExtension{T <: Number, V <: Union{Vector{Vector{T}}, Tuple{Vector{T}, Vector{T}}}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIInstantiation Type
MOIInstantiation{T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIIntention Type
MOIIntention{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.MOIMultivaluedDecisionDiagram Type
MOIMultivaluedDecisionDiagram{L <: ConstraintCommons.AbstractMultivaluedDecisionDiagram} <: AbstractVectorSet
DOCSTRING
CBLS.MOINValues Type
MOINValues{F <: Function, T1 <: Number, T2 <: Number, V <: Vector{T2}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOINoOverlap Type
MOINoOverlap{I <: Integer, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIOrdered Type
MOIOrdered{F <: Function, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOIRegular Type
MOIRegular{L <: ConstraintCommons.AbstractAutomaton} <: AbstractVectorSet
DOCSTRING
CBLS.MOISum Type
MOISum{F <: Function, T1 <: Number, T2 <: Number, V <: Number} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.MOISupports Type
MOISupports{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet
DOCSTRING
CBLS.Maximum Type
Global 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 Type
Global 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 Type
Global constraint ensuring that the number of distinct values in X
satisfies the given condition.
CBLS.NoOverlap Type
Global 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 Type
Optimizer(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 Type
Optimizer <: 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.Predicate Type
Predicate{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 Type
Ensures 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 Type
ScalarFunction{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 Type
Global constraint ensuring that the sum of the variables in x
satisfies a given condition.
CBLS.Supports Type
Global 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 Method
Base.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 Method
Base.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 Method
Base.copy(op::F) where {F <: Function}
Copy a function.
Arguments
op::F
: The function to be copied.
Returns
F
: The copied function.
Base.copy Method
Base.copy(::Nothing)
Copy a Nothing
value.
Arguments
::Nothing
: TheNothing
value to be copied.
Returns
Nothing
: The copiedNothing
value.
JuMP.build_variable Method
JuMP.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 Method
JuMP.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 Method
JuMP.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 Method
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)
DOCSTRING
Arguments:
optimizer
: DESCRIPTIONvars
: DESCRIPTIONset
: DESCRIPTION
MathOptInterface.add_constraint Method
MOI.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 Method
MOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number
DOCSTRING
Arguments:
optimizer
: DESCRIPTIONv
: DESCRIPTIONset
: DESCRIPTION
MathOptInterface.copy_to Method
MOI.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! Method
MOI.empty!(opt)
Empty the optimizer.
Arguments
opt::Optimizer
: The optimizer instance.
Returns
Nothing
MathOptInterface.get Method
MOI.get(::Optimizer, ::MOI.SolverName)
Get the name of the solver.
Arguments
::Optimizer
: The optimizer instance.
Returns
String
: The name of the solver.
MathOptInterface.get Method
Moi.get(::Optimizer, ::MOI.SolverVersion)
Get the version of the solver, here LocalSearchSolvers.jl
.
MathOptInterface.is_empty Method
MOI.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 Method
MOI.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! Method
MOI.optimize!(model::Optimizer)
Optimize the model using the optimizer.
Arguments
model::Optimizer
: The optimizer instance.
Returns
Nothing
MathOptInterface.set Function
MOI.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 Method
MOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)
Set a RawOptimizerAttribute to value
MathOptInterface.set Method
MOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})
Set the time limit
MathOptInterface.supports_constraint Method
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin
DOCSTRING
Arguments:
``: DESCRIPTION
``: DESCRIPTION
``: DESCRIPTION
MathOptInterface.supports_constraint Method
MOI.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 Method
MOI.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.