L2ODLL.BoundDecomposition
— MethodBoundDecomposition(model::JuMP.Model)
Create a decomposition using z
for bound constraints and y
for all other constraints.
L2ODLL.ConvexQP
— MethodConvexQP(model::JuMP.Model)
Create a decomposition using z
for the quadratic slacks and y
for all constraints.
L2ODLL.GenericDecomposition
— MethodGenericDecomposition(model::JuMP.Model, y_ref::Vector{JuMP.ConstraintRef})
Create a decomposition using z
for all constraints except y_ref
.
L2ODLL.GenericDecomposition
— MethodGenericDecomposition(model::JuMP.Model)
Create a decomposition using z
for Variable-in-Set constraints and y
for all other constraints. Note that y
includes Vector{VariableRef}
(i.e. conic) constraints.
L2ODLL.decompose!
— Methoddecompose!(model::JuMP.Model, decomposition::AbstractDecomposition)
Build the DLL functions using the given decomposition.
L2ODLL.decompose!
— Methoddecompose!(model::JuMP.Model)
Detect the best decomposition and build the DLL functions.
L2ODLL.dual_objective
— Methoddual_objective(model::JuMP.Model, y_predicted, param_value)
Evaluate the dual objective function (projection and completion).
L2ODLL.dual_objective_gradient
— Methoddual_objective_gradient(model::JuMP.Model, y_predicted, param_value; ad_type::ADTypes.AbstractADType=DI.AutoForwardDiff())
Evaluate the gradient of the dual objective function with respect to the predicted dual variables. This includes both the projection and the completion steps.
L2ODLL.flatten_y
— Methodflatten_y(y::AbstractVector)
Flatten a vector of y
variables into a single vector, i.e. Vector{Vector{Float64}} -> Vector{Float64}.
L2ODLL.get_y
— Methodget_y(model::JuMP.Model)
Get the primal constraints corresponding to the y
variables in the decomposition.
L2ODLL.get_y_dual
— Methodget_y_dual(model::JuMP.Model)
Get the dual variables corresponding to the y
variables in the decomposition. These are VariableRefs belonging to the dual model, not the passed-in model
.
L2ODLL.jump_builder
— Methodjump_builder(decomposition::AbstractDecomposition, proj_fn::Function, dual_model::JuMP.Model, optimizer; silent=true)
Build the completion function using JuMP to solve the model.
L2ODLL.make_proj_fn
— Methodmake_proj_fn(decomposition::AbstractDecomposition, dual_model::JuMP.Model)
Create a function that projects the raw dual variable predictions onto their dual cone constraints.
L2ODLL.unflatten_y
— Methodunflatten_y(y::AbstractVector, y_shape::AbstractVector{Int})
Unflatten a vector of flattened y
variables into a vector of vectors, i.e. Vector{Float64} -> Vector{Vector{Float64}}.
L2ODLL.y_shape
— Methody_shape(model::JuMP.Model)
Get the shape of the y
variables in the decomposition. This is a Vector{Int} where each entry is the number of dual variables for that constraint.