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.build_cache — Methodbuild_cache(model::JuMP.Model, decomposition::AbstractDecomposition;
optimizer=nothing, proj_fn=nothing, dll_layer_builder=nothing
)Build the DLLCache for the given model and decomposition. In this lower-level function (compared to decompose!), users can set custom projection functions via proj_fn and custom DLL layer builders via dll_layer_builder.
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)Flatten a vector of y variables into a single vector, i.e. Vector{Vector{Float64}} -> Vector{Float64}.
L2ODLL.get_cache — Methodget_cache(model::JuMP.Model)Get the DLLCache for the model. Must have called decompose! first.
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_completion_model — Methodmake_completion_model(cache::DLLCache)
Create a JuMP model for the dual completion step.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::Vector{T}, y_shape::Vector{Int}) where TUnflatten 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.