Relaxation Backend

Relaxation Backend

Quadratic Relaxations

relax_convex_kernel

Stores the kernel of the calculation required to relax convex quadratic constraints using the immutable dictionary to label terms.

relax_nonconvex_kernel

Stores the kernel of the calculation required to relax nonconvex quadratic constraints using the immutable dictionary to label terms.

relax_quadratic_gen_saf

Default 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.

objective_cut_linear!

Adds linear objective cut constraint to the x.relaxed_optimizer.

Nonlinear Storage Structures

FunctionSetStorage

A 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}
SubexpressionSetStorage

A 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.EvaluatorType.
Evaluator

MOI.AbstractNLPEvaluator for calculating relaxations of nonlinear terms.

Internal Functions Used by Evaluator

set_current_node!(x::Evaluator, n::NodeBB)

Sets the current node in the Evaluator structure.

eval_objective_lo

Retrieves the lower bound of the objective.

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.

eval_constraint_lo!(d::Evaluator, g::Vector{Float64})

Populates g with the lower bounds of the constraints of d.

eval_constraint_hi!(d::Evaluator, g::Vector{Float64})

Populates g with the upper bounds of the constraints of d.

eval_constraint_cc_grad(d::Evaluator, g, y)

Populates g with the subgradients of the constraints of d evaluated at y.

get_node_lower(d::FunctionSetStorage, i::Int64)

Retreives the lower bound of ith term in the tape of d.

get_node_upper(d::FunctionSetStorage, i::Int64)

Retreives the upper bound of ith term in the tape of d.

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.