PBeFS
Parallel Best-First Search
Loading...
Searching...
No Matches
PBeFS_di_unipi_it::BBEvaluator Concept Reference

what evaluates and branches the nodes of a B&B More...

#include <PBeFS/bnb/BranchAndBound.h>

Concept definition

template<class W, class N, class V double>
concept PBeFS_di_unipi_it::BBEvaluator = requires( W & w , N & n , const N & cn ) {
{ w.evaluate( n ) } -> std::convertible_to< BasicEvaluation< V > >;
w.branch( cn , detail::bb_sink< N , V >{} );
}
what evaluates and branches the nodes of a B&B
Definition BranchAndBound.h:315

Detailed Description

what evaluates and branches the nodes of a B&B

evaluate( n ) returns the Evaluation of the node n, possibly storing in n what the branching needs, and branch( n , sink ) calls sink( c , e ) for every child c of the evaluated node n, e being a bound of c that is cheap to compute (typically the bound of n).

Optionally, the evaluator may give cutoff( z ), which the searches call before each evaluate( n ) and branch( n , sink ) with the incumbent value z (in the sense of the problem, infinite when there is none), e.g., to stop the relaxation of a node as soon as it is proven not to improve z, the node being then found infeasible. A worker should take z from here rather than from a value it shares with the others: in the deterministic search z is the incumbent of the start of the round [see DeterministicBranchAndBound], so that the evaluation does not depend on what the other workers find meanwhile.