Default checks
Below are the default function for the Branch-and-Bound library. The EAGO solver populates these fields based on user inputs to the solver in order to deliver a valid nonconvex NLP solver.
The default termination check and convergence check functions are described below:
@docs
EAGO.Term_Check(x::BnBSolver,y::BnBModel,k_int::Int64)
EAGO.Conv_Check(x::BnBSolver,ubd::Float64,lbd::Float64)
Currently, the default is to never repeat a node.
@docs
EAGO.Repeat_Node_Default(x::BnBSolver,y::BnBModel{Interval{T}}, Xin::Vector{Interval{T}},Xout::Vector{Interval{T}})
Fathoming
By default, nodes are fathomed on value dominance.
@docs
EAGO.fathom!(y::BnBModel)
Pre-processing and post-processing
By default, the pre-processing and post-processing functions simply return the input Interval/MCInterval type vector and the prior feasibility value.
Bisection Methods
Method for absolute width bisection on all dimension in stack:
EAGO.Bisect_Abs
— Function.EAGO.Bisect_Abs(S::BnBSolver,B::BnBModel{T},N::Vector{T})
Returns two interval boxes 'X1,X2' created by bisecting 'N' in the highest width dimension.
Method for relative width bisection on all dimension in stack:
EAGO.Bisect_Rel
— Function.EAGO.Bisect_Rel(S::BnBSolver,B::BnBModel,N::Vector{Interval{Float64}})
Returns two interval boxes 'X1,X2' created by bisecting 'N' in the highest width dimension after scaling by initial box size.
Method for absolute width bisection ignore first nx
dimensions:
EAGO.Bisect_Abs_Imp
— Function.EAGO.Bisect_Abs_Imp(S::BnBSolver,B::BnBModel,N::Vector{Interval{Float64}})
Returns two interval boxes 'X1,X2' created by bisecting 'N' in the highest width dimension greater than 'nx'.
Method for relative width bisection ignore first nx
dimensions::
EAGO.Bisect_Rel_Imp
— Function.EAGO.Bisect_Rel_Imp(S::BnBSolver,B::BnBModel,N::Vector{Interval{Float64}})
Returns two interval boxes 'X1,X2' created by bisecting 'N' in the highest width dimension greater than 'nx' after scaling by initial box size.
Storage Methods for Common Branching Schemes
Node storage method for breadth-first search:
EAGO.BM_breadth!
— Function.EAGO.BM_breadth!
Takes the following inputs: (S::BnBSolver,B::BnBModel{T},tL::Float64,tU::Float64,X1::Vector{T},X2::Vector{T},pos::Int64)
Stores two interval boxes X1,X2
to the bottom of the stack along with their respective lower, tL
and upper bounds, tU
and their position number in the BnB tree. Also, assigns node numbers.
Node storage method for depth-first or best-first search:
EAGO.BM_depth_best!
— Function.EAGO.BM_depth_best!
Takes the following inputs: (S::BnBSolver,B::BnBModel,tL::Float64,tU::Float64, X1::Vector{Interval{Float64}},X2::Vector{Interval{Float64}}, pos::Int64)
Stores two interval boxes X1,X2
to the top of the stack along with their respective lower, tL
and upper bounds, tU
and their position number in the BnB tree. Also, assigns node numbers.
Node storage method for adding a single node to the top of the stack:
EAGO.BM_Single!
— Function.EAGO.BM_Single!
Takes the following inputs: (S::BnBSolver,B::BnBModel,tL::Float64,tU::Float64, X::Vector{Interval{Float64}},pos::Int64)
Stores interval box X
to the top of the stack along with their respective lower, tL
and upper bounds, tU
and their position number in the BnB tree.
Selection Methods for Common Branching Schemes
Select node for best-first search:
EAGO.NS_best
— Method.EAGO.NS_best(B::BnBModel)
Takes a single input B::BnBModel
. Selects node with the lowest upper lower bound. Returns (IntvBox,LBD,UBD,id,pos)
where Intv
is the interval box, LBD
is the lower bound of the node, UBD
is the upper bound of the node, id
is the id number of the node, and pos
is the position of the node in the BnB tree.
Select node for depth-first or breadth-first search:
EAGO.NS_depth_breadth
— Method.EAGO.NS_depth_breadth(B::BnBModel)
Takes a single input B::BnBModel
. Selects node on the top of the stack. Returns (IntvBox,LBD,UBD,id,pos)
where Intv
is the intervalbox, LBD
is the lower bound of the node, UBD
is the upper bound of the node, id
is the id number of the node, and pos
is the position of the node in the BnB tree.
Functions for generating console displayed
EAGO.print_int!
— Method.EAGO.print_int!(B::BnBSolver,k_int::Int64,k_nod::Int64,nid::Int64,lbdp::Float64,lbd::Float64,ubd::Float64,feasL::Bool,feasU::Bool)
Prints the iteration information if the Verbosity is set to "Normal" or "Full". The header is displayed every hdr_intv, the iteration info is displayed every itr_intv
EAGO.print_results!
— Method.EAGO.print_results!(B::BnBSolver,sol::Float64,pnt,feas::Bool,lbd_bool::Bool)
Prints the results of a single bounding problem.
EAGO.print_sol!
— Method.EAGO.print_sol!(x::BnBSolver,y::BnBModel,ubdcnt::Int64,lbdcnt::Int64,ubdtime::Float64,lbdtime::Float64)
Prints solution information for the B&B problem. Displays first node found, solution value, solution, and time spent solving subproblems.