Relaxation Backend
Quadratic Relaxations
EAGO.relax_convex_kernel — Function.relax_convex_kernelStores the kernel of the calculation required to relax convex quadratic constraints using the immutable dictionary to label terms.
EAGO.relax_nonconvex_kernel — Function.relax_nonconvex_kernelStores the kernel of the calculation required to relax nonconvex quadratic constraints using the immutable dictionary to label terms.
EAGO.relax_quadratic_gen_saf — Function.relax_quadratic_gen_safDefault routine for relaxing nonconvex quadratic constraint lower < func < upper on node n. Takes affine bounds of convex part at point x0 and secant line bounds on concave parts.
EAGO.relax_quadratic! — Function.relax_quadratic!Relaxes all quadratic constraints in x optimizer.
Nonlinear Relaxation
EAGO.relax_nlp! — Function.relax_nlp!A rountine that relaxes all nonlinear constraints excluding constraints specified as quadratic.
EAGO.objective_cut_linear! — Function.objective_cut_linear!Adds linear objective cut constraint to the x.relaxed_optimizer.
Nonlinear Storage Structures
EAGO.FunctionSetStorage — Type.FunctionSetStorageA storage object for both set and number valued data required to compute relaxations which contains the tape used to compute a nonlinear function. The object is parameterized by a {N,T<:RelaxTag} where N corresponds the subgradient size used in the MC object.
- nd::Vector{JuMP.NodeData}
- adj::SparseMatrixCSC{Bool,Int64}
- const_values::Vector{Float64}
- setstorage::Vector{MC{N,T}}
- numberstorage::Vector{Float64}
- numvalued::Vector{Bool}
- tp1storage::Vector{Float64}
- tp2storage::Vector{Float64}
- tp3storage::Vector{Float64}
- tp4storage::Vector{Float64}
- tpdict::Dict{Int64,Tuple{Int64,Int64,Int64,Int64}}
- grad_sparsity::Vector{Int64}
- hess_I::Vector{Int64}
- hess_J::Vector{Int64}
- dependent_subexpressions::Vector{Int64}
EAGO.SubexpressionSetStorage — Type.SubexpressionSetStorageA storage object for both set and number valued data required to compute relaxations which contains the tape used to compute a nonlinear subexpression. The object is parameterized by a {N,T<:RelaxTag} where N corresponds the the subgradient size used in the MC object.
- nd::Vector{JuMP.NodeData}
- adj::SparseMatrixCSC{Bool,Int64}
- const_values::Vector{Float64}
- setstorage::Vector{MC{N,T}}
- numberstorage::Vector{Float64}
- numvalued::Vector{Bool}
- tp1storage::Vector{Float64}
- tp2storage::Vector{Float64}
- tp3storage::Vector{Float64}
- tp4storage::Vector{Float64}
- tpdict::Dict{Int64,Tuple{Int64,Int64,Int64,Int64}}
- linearity::JuMP._Derivatives.Linearity
Nonlinear Evaluator
EAGO.Evaluator — Type.EvaluatorMOI.AbstractNLPEvaluator for calculating relaxations of nonlinear terms.
Internal Functions Used by Evaluator
EAGO.set_current_node! — Method.set_current_node!(x::Evaluator, n::NodeBB)Sets the current node in the Evaluator structure.
EAGO.eval_objective_lo — Method.eval_objective_loRetrieves the lower bound of the objective.
EAGO.eval_constraint_cc — Method.eval_constraint_cc(d::Evaluator, g::Vector{Float64}, y::Vector{Float64})Populates g with the concave relaxations of the constraints of d evaluated at y.
EAGO.eval_constraint_lo! — Method.eval_constraint_lo!(d::Evaluator, g::Vector{Float64})Populates g with the lower bounds of the constraints of d.
EAGO.eval_constraint_hi! — Method.eval_constraint_hi!(d::Evaluator, g::Vector{Float64})Populates g with the upper bounds of the constraints of d.
EAGO.eval_constraint_cc_grad — Method.eval_constraint_cc_grad(d::Evaluator, g, y)Populates g with the subgradients of the constraints of d evaluated at y.
EAGO.get_node_lower — Method.get_node_lower(d::FunctionSetStorage, i::Int64)Retreives the lower bound of ith term in the tape of d.
EAGO.get_node_upper — Method.get_node_upper(d::FunctionSetStorage, i::Int64)Retreives the upper bound of ith term in the tape of d.
EAGO.forward_reverse_pass — Method.forward_reverse_pass(d::Evaluator, x::Vector{Float64})Performs a d.fw_repeats forward passes of the set-value evaluator each followed by a reverse pass if d.has_reverse as long as the node between passes differs by more that d.fw_atol at each iteration.