API
DisjunctiveProgramming.@disjunction
— Macro@disjunction(model, expr, kw_args...)
Add a disjunction described by the expression expr
, which must be a Vector
of LogicalVariableRef
s.
@disjunction(model, ref[i=..., j=..., ...], expr, kw_args...)
Add a group of disjunction described by the expression expr
parameterized by i
, j
, ..., which must be a Vector
of LogicalVariableRef
s.
In both of the above calls, a Disjunct
tag can be added to create nested disjunctions.
The recognized keyword arguments in kw_args
are the following:
base_name
: Sets the name prefix used to generate constraint names. It corresponds to the constraint name for scalar constraints, otherwise, the constraint names are set tobase_name[...]
for each index...
of the axesaxes
.container
: Specify the container type.exactly1
: Specify aBool
whether a constraint should be added to only allow selecting one disjunct in the disjunction.
To create disjunctions without macros, see disjunction
.
DisjunctiveProgramming.@disjunctions
— Macro@disjunctions(model, args...)
Adds groups of disjunctions at once, in the same fashion as the @disjunction
macro.
The model must be the first argument, and multiple disjunctions can be added on multiple lines wrapped in a begin ... end
block.
The macro returns a tuple containing the disjunctions that were defined.
Example
julia model = GDPModel(); @variable(model, w); @variable(model, x); @variable(model, Y[1:4], LogicalVariable); @constraint(model, [i=1:2], w == i, Disjunct(Y[i])); @constraint(model, [i=3:4], x == i, Disjunct(Y[i])); @disjunctions(model, begin [Y[1], Y[2]] [Y[3], Y[4]] end);
`
Base.getindex
— MethodBase.getindex(map::GenericReferenceMap, cref::DisjunctConstraintRef)
...
Base.getindex
— MethodBase.getindex(map::GenericReferenceMap, cref::DisjunctionRef)
...
Base.getindex
— MethodBase.getindex(map::GenericReferenceMap, cref::LogicalConstraintRef)
...
DisjunctiveProgramming.GDPModel
— MethodGDPModel([optimizer]; [kwargs...])::Model
The core model object for building general disjunction programming models.
DisjunctiveProgramming.disjunction
— Functiondisjunction(
+API · DisjunctiveProgramming.jl API
DisjunctiveProgramming.@disjunction
— Macro@disjunction(model, expr, kw_args...)
Add a disjunction described by the expression expr
, which must be a Vector
of LogicalVariableRef
s.
@disjunction(model, ref[i=..., j=..., ...], expr, kw_args...)
Add a group of disjunction described by the expression expr
parameterized by i
, j
, ..., which must be a Vector
of LogicalVariableRef
s.
In both of the above calls, a Disjunct
tag can be added to create nested disjunctions.
The recognized keyword arguments in kw_args
are the following:
base_name
: Sets the name prefix used to generate constraint names. It corresponds to the constraint name for scalar constraints, otherwise, the constraint names are set to base_name[...]
for each index ...
of the axes axes
.container
: Specify the container type.exactly1
: Specify a Bool
whether a constraint should be added to only allow selecting one disjunct in the disjunction.
To create disjunctions without macros, see disjunction
.
sourceDisjunctiveProgramming.@disjunctions
— Macro@disjunctions(model, args...)
Adds groups of disjunctions at once, in the same fashion as the @disjunction
macro.
The model must be the first argument, and multiple disjunctions can be added on multiple lines wrapped in a begin ... end
block.
The macro returns a tuple containing the disjunctions that were defined.
Example
julia model = GDPModel(); @variable(model, w); @variable(model, x); @variable(model, Y[1:4], LogicalVariable); @constraint(model, [i=1:2], w == i, Disjunct(Y[i])); @constraint(model, [i=3:4], x == i, Disjunct(Y[i])); @disjunctions(model, begin [Y[1], Y[2]] [Y[3], Y[4]] end);
`
sourceDisjunctiveProgramming.GDPModel
— MethodGDPModel([optimizer]; [kwargs...])::Model
The core model object for building general disjunction programming models.
sourceDisjunctiveProgramming.disjunction
— Functiondisjunction(
model::Model,
disjunct_indicators::Vector{LogicalVariableRef},
[nested_tag::Disjunct],
[name::String = ""];
[exactly1::Bool = true]
-)
Create a disjunction comprised of disjuncts with indicator variables disjunct_indicators
and add it to model
. For nested disjunctions, the nested_tag
is required to indicate which disjunct it will be part of in the parent disjunction. By default, exactly1
adds a constraint of the form @constraint(model, disjunct_indicators in Exactly(1))
only allowing one of the disjuncts to be selected; this is required for certain reformulations like Hull
. For nested disjunctions, exactly1
creates a constraint of the form @constraint(model, disjunct_indicators in Exactly(nested_tag.indicator))
. To conveniently generate many disjunctions at once, see @disjunction
and @disjunctions
.
sourceDisjunctiveProgramming.gdp_data
— Methodgdp_data(model::Model)::GDPData
Extract the GDPData
from a GDPModel
.
sourceDisjunctiveProgramming.is_gdp_model
— Methodis_gdp_model(model::Model)::Bool
Return if model
was created via the GDPModel
constructor.
sourceDisjunctiveProgramming.reformulate_disjunct_constraint
— Methodreformulate_disjunct_constraint(
+)
Create a disjunction comprised of disjuncts with indicator variables disjunct_indicators
and add it to model
. For nested disjunctions, the nested_tag
is required to indicate which disjunct it will be part of in the parent disjunction. By default, exactly1
adds a constraint of the form @constraint(model, disjunct_indicators in Exactly(1))
only allowing one of the disjuncts to be selected; this is required for certain reformulations like Hull
. For nested disjunctions, exactly1
creates a constraint of the form @constraint(model, disjunct_indicators in Exactly(nested_tag.indicator))
. To conveniently generate many disjunctions at once, see @disjunction
and @disjunctions
.
sourceDisjunctiveProgramming.gdp_data
— Methodgdp_data(model::Model)::GDPData
Extract the GDPData
from a GDPModel
.
sourceDisjunctiveProgramming.is_gdp_model
— Methodis_gdp_model(model::Model)::Bool
Return if model
was created via the GDPModel
constructor.
sourceDisjunctiveProgramming.reformulate_disjunct_constraint
— Methodreformulate_disjunct_constraint(
model::JuMP.Model,
con::JuMP.AbstractConstraint,
bvref::JuMP.VariableRef,
method::AbstractReformulationMethod
-)
Extension point for reformulation method method
to reformulate disjunction constraint con
over each constraint. If method
needs to specify how to reformulate the entire disjunction, see reformulate_disjunction
.
sourceDisjunctiveProgramming.reformulate_disjunction
— Methodreformulate_disjunction(
- model::Model,
+)
Extension point for reformulation method method
to reformulate disjunction constraint con
over each constraint. If method
needs to specify how to reformulate the entire disjunction, see reformulate_disjunction
.
sourceDisjunctiveProgramming.reformulate_disjunction
— Methodreformulate_disjunction(
+ model::JuMP.Model,
disj::Disjunction,
method::AbstractReformulationMethod
-) where {T<:Disjunction}
Reformulate a disjunction using the specified method
. Current reformulation methods include BigM
, Hull
, and Indicator
. This method can be extended for other reformulation techniques.
The disj
field is the ConstraintData
object for the disjunction, stored in the disjunctions
field of the GDPData
object.
sourceDisjunctiveProgramming.reformulate_model
— Methodreformulate_model(model::Model, method::AbstractSolutionMethod)
Reformulate a GDPModel
using the specified method
. Prior to reformulation, all previous reformulation variables and constraints are deleted.
sourceDisjunctiveProgramming.requires_exactly1
— Methodrequires_exactly1(method::AbstractReformulationMethod)
Return a Bool
whether method
requires that Exactly 1
disjunct be selected as true for each disjunction. For new reformulation method types, this should be extended to return true
if such a constraint is required (defaults to false
otherwise).
sourceJuMP.add_constraint
— FunctionJuMP.add_constraint(
+) where {T<:Disjunction}
Reformulate a disjunction using the specified method
. Current reformulation methods include BigM
, Hull
, and Indicator
. This method can be extended for other reformulation techniques.
The disj
field is the ConstraintData
object for the disjunction, stored in the disjunctions
field of the GDPData
object.
sourceDisjunctiveProgramming.reformulate_model
— Methodreformulate_model(model::JuMP.Model, method::AbstractSolutionMethod)
Reformulate a GDPModel
using the specified method
. Prior to reformulation, all previous reformulation variables and constraints are deleted.
sourceDisjunctiveProgramming.requires_exactly1
— Methodrequires_exactly1(method::AbstractReformulationMethod)
Return a Bool
whether method
requires that Exactly 1
disjunct be selected as true for each disjunction. For new reformulation method types, this should be extended to return true
if such a constraint is required (defaults to false
otherwise).
sourceJuMP.add_constraint
— FunctionJuMP.add_constraint(
model::Model,
con::_DisjunctConstraint,
name::String = ""
-)::DisjunctConstraintRef
Extend JuMP.add_constraint
to add a Disjunct
to a GDPModel
. The constraint is added to the GDPData
in the .ext
dictionary of the GDPModel
.
sourceJuMP.add_constraint
— Methodfunction JuMP.add_constraint(
- model::Model,
- c::ScalarConstraint{<:F, S},
- name::String = ""
-) where {F <: Union{LogicalVariableRef, _LogicalExpr}, S}
Extend JuMP.add_constraint
to allow creating logical proposition constraints for a GDPModel
with the @constraint
macro.
function JuMP.add_constraint(
+)::DisjunctConstraintRef
Extend JuMP.add_constraint
to add a Disjunct
to a GDPModel
. The constraint is added to the GDPData
in the .ext
dictionary of the GDPModel
.
sourceJuMP.add_constraint
— Methodfunction JuMP.add_constraint(
model::Model,
c::VectorConstraint{<:F, S, Shape},
name::String = ""
-) where {F <: Union{Number, LogicalVariableRef, _LogicalExpr}, S, Shape}
Extend JuMP.add_constraint
to allow creating logical cardinality constraints for a GDPModel
with the @constraint
macro.
sourceJuMP.add_variable
— FunctionJuMP.add_variable(model::Model, v::LogicalVariable,
- name::String = "")::LogicalVariableRef
Extend JuMP.add_variable
for LogicalVariable
s. This helps enable @variable(model, [var_expr], Logical)
.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
+) where {F <: Union{Number, LogicalVariableRef, _LogicalExpr}, S, Shape}
Extend JuMP.add_constraint
to allow creating logical cardinality constraints for a GDPModel
with the @constraint
macro.
sourceJuMP.add_constraint
— Methodfunction JuMP.add_constraint(
+ model::JuMP.Model,
+ c::JuMP.ScalarConstraint{_LogicalExpr, MOI.EqualTo{Bool}},
+ name::String = ""
+)
Extend JuMP.add_constraint
to allow creating logical proposition constraints for a GDPModel
with the @constraint
macro. Users should define logical constraints via the syntax @constraint(model, logical_expr := true)
.
sourceJuMP.add_variable
— FunctionJuMP.add_variable(model::Model, v::LogicalVariable,
+ name::String = "")::LogicalVariableRef
Extend JuMP.add_variable
for LogicalVariable
s. This helps enable @variable(model, [var_expr], Logical)
.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
_error::Function,
func,
set::_MOI.AbstractScalarSet,
tag::Disjunct
-)::_DisjunctConstraint
Extend JuMP.build_constraint
to add constraints to disjuncts. This in combination with JuMP.add_constraint
enables the use of @constraint(model, [name], constr_expr, tag)
, where tag is a Disjunct(::Type{LogicalVariableRef})
. The user must specify the LogicalVariable
to use as the indicator for the _DisjunctConstraint
being created.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
+)::_DisjunctConstraint
Extend JuMP.build_constraint
to add constraints to disjuncts. This in combination with JuMP.add_constraint
enables the use of @constraint(model, [name], constr_expr, tag)
, where tag is a Disjunct(::Type{LogicalVariableRef})
. The user must specify the LogicalVariable
to use as the indicator for the _DisjunctConstraint
being created.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
_error::Function,
func,
set::MathOptInterface.Nonnegatives,
tag::Disjunct
-)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
+)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
_error::Function,
func,
set::MathOptInterface.Nonpositives,
tag::Disjunct
-)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
+)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
_error::Function,
func,
set::MathOptInterface.Zeros,
tag::Disjunct
-)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
+)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
_error::Function,
func,
set::Nonnegatives,
tag::Disjunct
-)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
+)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
_error::Function,
func,
set::Nonpositives,
tag::Disjunct
-)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
+)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— MethodJuMP.build_constraint(
_error::Function,
func,
set::Zeros,
tag::Disjunct
-)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— Methodfunction JuMP.build_constraint(
+)::_DisjunctConstraint
Extend JuMP.build_constraint
to add VectorConstraint
s to disjuncts.
sourceJuMP.build_constraint
— Methodfunction JuMP.build_constraint(
_error::Function,
func::AbstractVector{T},
set::S
) where {T <: Union{LogicalVariableRef, _LogicalExpr}, S <: Union{Exactly, AtLeast, AtMost}}
Extend JuMP.build_constraint
to add logical cardinality constraints to a GDPModel
. This in combination with JuMP.add_constraint
enables the use of @constraint(model, [name], logical_expr in set)
, where set can be either of the following cardinality sets: AtLeast(n)
, AtMost(n)
, or Exactly(n)
.
Example
To select exactly 1 logical variable Y
to be true
, do (the same can be done with AtLeast(n)
and AtMost(n)
):
using DisjunctiveProgramming
model = GDPModel();
@variable(model, Y[i = 1:2], LogicalVariable);
-@constraint(model, [Y[1], Y[2]] in Exactly(1));
JuMP.build_constraint(
- _error::Function,
- func::_LogicalExpr,
- set::IsTrue
-)
Extend JuMP.build_constraint
to add logical propositional constraints to a GDPModel
. This in combination with JuMP.add_constraint
enables the use of @constraint(model, [name], logical_expr in IsTrue())
to define a Boolean expression that must either be true or false.
sourceJuMP.build_variable
— MethodJuMP.build_variable(_error::Function, info::VariableInfo,
- ::Type{LogicalVariable})::LogicalVariable
Extend JuMP.build_variable
to work with logical variables. This in combination with JuMP.add_variable
enables the use of @variable(model, [var_expr], LogicalVariable)
.
sourceJuMP.constraint_object
— MethodJuMP.constraint_object(cref::DisjunctConstraintRef)
Return the underlying constraint data for the constraint referenced by cref
.
sourceJuMP.constraint_object
— MethodJuMP.constraint_object(cref::DisjunctionRef)
Return the underlying constraint data for the constraint referenced by cref
.
sourceJuMP.constraint_object
— MethodJuMP.constraint_object(cref::LogicalConstraintRef)
Return the underlying constraint data for the constraint referenced by cref
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, cref::DisjunctConstraintRef)
Delete a disjunct constraint from the GDP model
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, cref::DisjunctionRef)
Delete a disjunction constraint from the GDP model
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, cref::LogicalConstraintRef)
Delete a logical constraint from the GDP model
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, vref::LogicalVariableRef)
Delete the logical variable associated with vref
from the GDP model
.
sourceJuMP.fix
— MethodJuMP.fix(vref::LogicalVariableRef, value::Bool)
Fix a logical variable to a value. Update the fixing constraint if one exists, otherwise create a new one.
sourceJuMP.fix_value
— MethodJuMP.fix_value(vref::LogicalVariableRef)
Return the value to which a logical variable is fixed.
sourceJuMP.index
— MethodJuMP.index(cref::DisjunctConstraintRef)
Return the index constraint associated with cref
.
sourceJuMP.index
— MethodJuMP.index(cref::DisjunctionRef)
Return the index constraint associated with cref
.
sourceJuMP.index
— MethodJuMP.index(cref::LogicalConstraintRef)
Return the index constraint associated with cref
.
sourceJuMP.index
— MethodJuMP.index(vref::LogicalVariableRef)
Return the index of logical variable that associated with vref
.
sourceJuMP.is_fixed
— MethodJuMP.is_fixed(vref::LogicalVariableRef)
Return true
if vref
is a fixed variable. If true
, the fixed value can be queried with fix_value.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, cref::DisjunctConstraintRef)
Return true
if cref
refers to a valid constraint in the GDP model
.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, cref::DisjunctionRef)
Return true
if cref
refers to a valid constraint in the GDP model
.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, cref::LogicalConstraintRef)
Return true
if cref
refers to a valid constraint in the GDP model
.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, vref::LogicalVariableRef)
Return true
if vref
refers to a valid logical variable in GDP model
.
sourceJuMP.isequal_canonical
— MethodJuMP.isequal_canonical(v::LogicalVariableRef, w::LogicalVariableRef)
Return true
if v
and w
refer to the same logical variable in the same GDP model
.
sourceJuMP.name
— MethodJuMP.name(cref::DisjunctConstraintRef)
Get a constraint's name attribute.
sourceJuMP.name
— MethodJuMP.name(cref::DisjunctionRef)
Get a constraint's name attribute.
sourceJuMP.name
— MethodJuMP.name(cref::LogicalConstraintRef)
Get a constraint's name attribute.
sourceJuMP.name
— MethodJuMP.name(vref::LogicalVariableRef)
Get a logical variable's name attribute.
sourceJuMP.owner_model
— MethodJuMP.owner_model(cref::DisjunctConstraintRef)
Return the model to which cref
belongs.
sourceJuMP.owner_model
— MethodJuMP.owner_model(cref::DisjunctionRef)
Return the model to which cref
belongs.
sourceJuMP.owner_model
— MethodJuMP.owner_model(cref::LogicalConstraintRef)
Return the model to which cref
belongs.
sourceJuMP.owner_model
— MethodJuMP.owner_model(vref::LogicalVariableRef)
Return the GDP model
to which vref
belongs.
sourceJuMP.set_name
— MethodJuMP.set_name(cref::DisjunctConstraintRef, name::String)
Set a constraint's name attribute.
sourceJuMP.set_name
— MethodJuMP.set_name(cref::DisjunctionRef, name::String)
Set a constraint's name attribute.
sourceJuMP.set_name
— MethodJuMP.set_name(cref::LogicalConstraintRef, name::String)
Set a constraint's name attribute.
sourceJuMP.set_name
— MethodJuMP.set_name(vref::LogicalVariableRef, name::String)
Set a logical variable's name attribute.
sourceJuMP.set_start_value
— MethodJuMP.set_start_value(vref::LogicalVariableRef, value::Union{Nothing, Bool})
Set the start value of the logical variable vref
.
Pass nothing
to unset the start value.
sourceJuMP.start_value
— MethodJuMP.start_value(vref::LogicalVariableRef)
Return the start value of the logical variable vref
.
sourceJuMP.unfix
— MethodJuMP.unfix(vref::LogicalVariableRef)
Delete the fixed value of a logical variable.
sourceDisjunctiveProgramming.AbstractReformulationMethod
— TypeAbstractReformulationMethod <: AbstractSolutionMethod
An abstract type for reformulation approaches used to solve GDPModel
s.
sourceDisjunctiveProgramming.AbstractSolutionMethod
— TypeAbstractSolutionMethod
An abstract type for solution methods used to solve GDPModel
s.
sourceDisjunctiveProgramming.AtLeast
— TypeAtLeast{T<:Union{Int,LogicalVariableRef}} <: AbstractVectorSet
Convenient alias for using _MOIAtLeast
.
sourceDisjunctiveProgramming.AtMost
— TypeAtMost{T<:Union{Int,LogicalVariableRef}} <: AbstractVectorSet
Convenient alias for using _MOIAtMost
.
sourceDisjunctiveProgramming.BigM
— TypeBigM <: AbstractReformulationMethod
A type for using the big-M reformulation approach for disjunctive constraints.
Fields
value::Float64
: Big-M value (default = 1e9
).tight::Bool
: Attempt to tighten the Big-M value (default = true
)?
sourceDisjunctiveProgramming.ConstraintData
— TypeConstraintData{C <: AbstractConstraint}
A type for storing constraint objects in GDPData
and any meta-data they possess.
Fields
constraint::C
: The constraint.name::String
: The name of the proposition.
sourceDisjunctiveProgramming.Disjunct
— TypeDisjunct
Used as a tag for constraints that will be used in disjunctions. This is done via the following syntax:
julia> @constraint(model, [constr_expr], Disjunct)
+@constraint(model, [Y[1], Y[2]] in Exactly(1));
sourceJuMP.build_variable
— MethodJuMP.build_variable(_error::Function, info::VariableInfo,
+ ::Type{LogicalVariable})::LogicalVariable
Extend JuMP.build_variable
to work with logical variables. This in combination with JuMP.add_variable
enables the use of @variable(model, [var_expr], LogicalVariable)
.
sourceJuMP.constraint_object
— MethodJuMP.constraint_object(cref::DisjunctConstraintRef)
Return the underlying constraint data for the constraint referenced by cref
.
sourceJuMP.constraint_object
— MethodJuMP.constraint_object(cref::DisjunctionRef)
Return the underlying constraint data for the constraint referenced by cref
.
sourceJuMP.constraint_object
— MethodJuMP.constraint_object(cref::LogicalConstraintRef)
Return the underlying constraint data for the constraint referenced by cref
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, cref::DisjunctConstraintRef)
Delete a disjunct constraint from the GDP model
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, cref::DisjunctionRef)
Delete a disjunction constraint from the GDP model
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, cref::LogicalConstraintRef)
Delete a logical constraint from the GDP model
.
sourceJuMP.delete
— MethodJuMP.delete(model::Model, vref::LogicalVariableRef)
Delete the logical variable associated with vref
from the GDP model
.
sourceJuMP.fix
— MethodJuMP.fix(vref::LogicalVariableRef, value::Bool)
Fix a logical variable to a value. Update the fixing constraint if one exists, otherwise create a new one.
sourceJuMP.fix_value
— MethodJuMP.fix_value(vref::LogicalVariableRef)
Return the value to which a logical variable is fixed.
sourceJuMP.index
— MethodJuMP.index(cref::DisjunctConstraintRef)
Return the index constraint associated with cref
.
sourceJuMP.index
— MethodJuMP.index(cref::DisjunctionRef)
Return the index constraint associated with cref
.
sourceJuMP.index
— MethodJuMP.index(cref::LogicalConstraintRef)
Return the index constraint associated with cref
.
sourceJuMP.index
— MethodJuMP.index(vref::LogicalVariableRef)
Return the index of logical variable that associated with vref
.
sourceJuMP.is_fixed
— MethodJuMP.is_fixed(vref::LogicalVariableRef)
Return true
if vref
is a fixed variable. If true
, the fixed value can be queried with fix_value.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, cref::DisjunctConstraintRef)
Return true
if cref
refers to a valid constraint in the GDP model
.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, cref::DisjunctionRef)
Return true
if cref
refers to a valid constraint in the GDP model
.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, cref::LogicalConstraintRef)
Return true
if cref
refers to a valid constraint in the GDP model
.
sourceJuMP.is_valid
— MethodJuMP.is_valid(model::Model, vref::LogicalVariableRef)
Return true
if vref
refers to a valid logical variable in GDP model
.
sourceJuMP.isequal_canonical
— MethodJuMP.isequal_canonical(v::LogicalVariableRef, w::LogicalVariableRef)
Return true
if v
and w
refer to the same logical variable in the same GDP model
.
sourceJuMP.name
— MethodJuMP.name(cref::DisjunctConstraintRef)
Get a constraint's name attribute.
sourceJuMP.name
— MethodJuMP.name(cref::DisjunctionRef)
Get a constraint's name attribute.
sourceJuMP.name
— MethodJuMP.name(cref::LogicalConstraintRef)
Get a constraint's name attribute.
sourceJuMP.name
— MethodJuMP.name(vref::LogicalVariableRef)
Get a logical variable's name attribute.
sourceJuMP.owner_model
— MethodJuMP.owner_model(cref::DisjunctConstraintRef)
Return the model to which cref
belongs.
sourceJuMP.owner_model
— MethodJuMP.owner_model(cref::DisjunctionRef)
Return the model to which cref
belongs.
sourceJuMP.owner_model
— MethodJuMP.owner_model(cref::LogicalConstraintRef)
Return the model to which cref
belongs.
sourceJuMP.owner_model
— MethodJuMP.owner_model(vref::LogicalVariableRef)
Return the GDP model
to which vref
belongs.
sourceJuMP.set_name
— MethodJuMP.set_name(cref::DisjunctConstraintRef, name::String)
Set a constraint's name attribute.
sourceJuMP.set_name
— MethodJuMP.set_name(cref::DisjunctionRef, name::String)
Set a constraint's name attribute.
sourceJuMP.set_name
— MethodJuMP.set_name(cref::LogicalConstraintRef, name::String)
Set a constraint's name attribute.
sourceJuMP.set_name
— MethodJuMP.set_name(vref::LogicalVariableRef, name::String)
Set a logical variable's name attribute.
sourceJuMP.set_start_value
— MethodJuMP.set_start_value(vref::LogicalVariableRef, value::Union{Nothing, Bool})
Set the start value of the logical variable vref
.
Pass nothing
to unset the start value.
sourceJuMP.start_value
— MethodJuMP.start_value(vref::LogicalVariableRef)
Return the start value of the logical variable vref
.
sourceJuMP.unfix
— MethodJuMP.unfix(vref::LogicalVariableRef)
Delete the fixed value of a logical variable.
sourceDisjunctiveProgramming.AbstractReformulationMethod
— TypeAbstractReformulationMethod <: AbstractSolutionMethod
An abstract type for reformulation approaches used to solve GDPModel
s.
sourceDisjunctiveProgramming.AbstractSolutionMethod
— TypeAbstractSolutionMethod
An abstract type for solution methods used to solve GDPModel
s.
sourceDisjunctiveProgramming.AtLeast
— TypeAtLeast{T<:Union{Int,LogicalVariableRef}} <: AbstractVectorSet
Convenient alias for using _MOIAtLeast
.
sourceDisjunctiveProgramming.AtMost
— TypeAtMost{T<:Union{Int,LogicalVariableRef}} <: AbstractVectorSet
Convenient alias for using _MOIAtMost
.
sourceDisjunctiveProgramming.BigM
— TypeBigM <: AbstractReformulationMethod
A type for using the big-M reformulation approach for disjunctive constraints.
Fields
value::Float64
: Big-M value (default = 1e9
).tight::Bool
: Attempt to tighten the Big-M value (default = true
)?
sourceDisjunctiveProgramming.ConstraintData
— TypeConstraintData{C <: AbstractConstraint}
A type for storing constraint objects in GDPData
and any meta-data they possess.
Fields
constraint::C
: The constraint.name::String
: The name of the proposition.
sourceDisjunctiveProgramming.Disjunct
— TypeDisjunct
Used as a tag for constraints that will be used in disjunctions. This is done via the following syntax:
julia> @constraint(model, [constr_expr], Disjunct)
-julia> @constraint(model, [constr_expr], Disjunct(lvref))
where lvref
is a LogicalVariableRef
that will ultimately be associated with the disjunct the constraint is added to. If no lvref
is given, then one is generated when the disjunction is created.
sourceDisjunctiveProgramming.DisjunctConstraintIndex
— TypeDisjunctConstraintIndex
A type for storing the index of a Disjunct
.
Fields
value::Int64
: The index value.
sourceDisjunctiveProgramming.DisjunctConstraintRef
— TypeDisjunctConstraintRef
A type for looking up disjunctive constraints.
sourceDisjunctiveProgramming.Disjunction
— TypeDisjunction <: AbstractConstraint
A type for a disjunctive constraint that is comprised of a collection of disjuncts of indicated by a unique LogicalVariableRef
.
Fields
indicators::Vector{LogicalVariableRef}
: The references to the logical variables
(indicators) that uniquely identify each disjunct in the disjunction.
nested::Bool
: Is this disjunction nested within another disjunction?
sourceDisjunctiveProgramming.DisjunctionIndex
— Typesource DisjunctiveProgramming.DisjunctionRef
— TypeDisjunctionRef
A type for looking up disjunctive constraints.
sourceDisjunctiveProgramming.Exactly
— TypeExactly <: AbstractVectorSet
Convenient alias for using _MOIExactly
.
sourceDisjunctiveProgramming.GDPData
— TypeGDPData
The core type for storing information in a GDPModel
.
sourceDisjunctiveProgramming.Hull
— TypeHull <: AbstractReformulationMethod
A type for using the convex hull reformulation approach for disjunctive constraints.
Fields
value::Float64
: epsilon value for nonlinear hull reformulations (default = 1e-6
).
sourceDisjunctiveProgramming.Indicator
— TypeIndicator <: AbstractReformulationMethod
A type for using indicator constraint approach for linear disjunctive constraints.
sourceDisjunctiveProgramming.LogicalConstraintIndex
— TypeLogicalConstraintIndex
A type for storing the index of a logical constraint.
Fields
value::Int64
: The index value.
sourceDisjunctiveProgramming.LogicalConstraintRef
— TypeLogicalConstraintRef
A type for looking up logical constraints.
sourceDisjunctiveProgramming.LogicalVariable
— TypeLogicalVariable <: AbstractVariable
A variable type the logical variables associated with disjuncts in a Disjunction
.
Fields
fix_value::Union{Nothing, Bool}
: A fixed boolean value if there is one.start_value::Union{Nothing, Bool}
: An initial guess if there is one.
sourceDisjunctiveProgramming.LogicalVariableData
— TypeLogicalVariableData
A type for storing LogicalVariable
s and any meta-data they possess.
Fields
variable::LogicalVariable
: The variable object.name::String
: The name of the variable.
sourceDisjunctiveProgramming.LogicalVariableIndex
— TypeLogicalVariableIndex
A type for storing the index of a LogicalVariable
.
Fields
value::Int64
: The index value.
sourceDisjunctiveProgramming.LogicalVariableRef
— TypeLogicalVariableRef
A type for looking up logical variables.
sourceDisjunctiveProgramming._MOIAtLeast
— Type_MOIAtLeast <: _MOI.AbstractVectorSet
MOI level set for AtLeast constraints, see AtLeast
for recommended syntax.
sourceDisjunctiveProgramming._MOIAtMost
— Type_MOIAtMost <: _MOI.AbstractVectorSet
MOI level set for AtMost constraints, see AtMost
for recommended syntax.
sourceDisjunctiveProgramming._MOIExactly
— Type_MOIExactly <: _MOI.AbstractVectorSet
MOI level set for Exactly constraints, see Exactly
for recommended syntax.
sourceSettings
This document was generated with Documenter.jl version 1.1.2 on Saturday 28 October 2023. Using Julia version 1.9.3.
+julia> @constraint(model, [constr_expr], Disjunct(lvref))
where lvref
is a LogicalVariableRef
that will ultimately be associated with the disjunct the constraint is added to. If no lvref
is given, then one is generated when the disjunction is created.
DisjunctiveProgramming.DisjunctConstraintIndex
— TypeDisjunctConstraintIndex
A type for storing the index of a Disjunct
.
Fields
value::Int64
: The index value.
DisjunctiveProgramming.DisjunctConstraintRef
— TypeDisjunctConstraintRef
A type for looking up disjunctive constraints.
DisjunctiveProgramming.Disjunction
— TypeDisjunction <: AbstractConstraint
A type for a disjunctive constraint that is comprised of a collection of disjuncts of indicated by a unique LogicalVariableRef
.
Fields
indicators::Vector{LogicalVariableRef}
: The references to the logical variables
(indicators) that uniquely identify each disjunct in the disjunction.
nested::Bool
: Is this disjunction nested within another disjunction?
DisjunctiveProgramming.DisjunctionIndex
— TypeDisjunctiveProgramming.DisjunctionRef
— TypeDisjunctionRef
A type for looking up disjunctive constraints.
DisjunctiveProgramming.Exactly
— TypeExactly <: AbstractVectorSet
Convenient alias for using _MOIExactly
.
DisjunctiveProgramming.GDPData
— TypeGDPData
The core type for storing information in a GDPModel
.
DisjunctiveProgramming.Hull
— TypeHull <: AbstractReformulationMethod
A type for using the convex hull reformulation approach for disjunctive constraints.
Fields
value::Float64
: epsilon value for nonlinear hull reformulations (default =1e-6
).
DisjunctiveProgramming.Indicator
— TypeIndicator <: AbstractReformulationMethod
A type for using indicator constraint approach for linear disjunctive constraints.
DisjunctiveProgramming.LogicalConstraintIndex
— TypeLogicalConstraintIndex
A type for storing the index of a logical constraint.
Fields
value::Int64
: The index value.
DisjunctiveProgramming.LogicalConstraintRef
— TypeLogicalConstraintRef
A type for looking up logical constraints.
DisjunctiveProgramming.LogicalVariable
— TypeLogicalVariable <: AbstractVariable
A variable type the logical variables associated with disjuncts in a Disjunction
.
Fields
fix_value::Union{Nothing, Bool}
: A fixed boolean value if there is one.start_value::Union{Nothing, Bool}
: An initial guess if there is one.
DisjunctiveProgramming.LogicalVariableData
— TypeLogicalVariableData
A type for storing LogicalVariable
s and any meta-data they possess.
Fields
variable::LogicalVariable
: The variable object.name::String
: The name of the variable.
DisjunctiveProgramming.LogicalVariableIndex
— TypeLogicalVariableIndex
A type for storing the index of a LogicalVariable
.
Fields
value::Int64
: The index value.
DisjunctiveProgramming.LogicalVariableRef
— TypeLogicalVariableRef
A type for looking up logical variables.
DisjunctiveProgramming._MOIAtLeast
— Type_MOIAtLeast <: _MOI.AbstractVectorSet
MOI level set for AtLeast constraints, see AtLeast
for recommended syntax.
DisjunctiveProgramming._MOIAtMost
— Type_MOIAtMost <: _MOI.AbstractVectorSet
MOI level set for AtMost constraints, see AtMost
for recommended syntax.
DisjunctiveProgramming._MOIExactly
— Type_MOIExactly <: _MOI.AbstractVectorSet
MOI level set for Exactly constraints, see Exactly
for recommended syntax.