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

a B&B problem More...

#include <PBeFS/bnb/BranchAndBound.h>

Concept definition

template<class P>
concept PBeFS_di_unipi_it::BranchAndBound = requires( const P & p , unsigned i ) {
typename P::node_type;
requires std::copyable< typename P::node_type >;
{ P::sense } -> std::convertible_to< Sense >;
{ p.root() } -> std::convertible_to< typename P::node_type >;
requires( const P & p , unsigned i ) {
{ p.make_worker( i ) }
} )
what evaluates and branches the nodes of a B&B
Definition BranchAndBound.h:315
a type of values of a B&B: signed, totally ordered, made from an int, and with its BBValueTraits
Definition BranchAndBound.h:262
a B&B problem
Definition BranchAndBound.h:337

Detailed Description

a B&B problem

A type P is a BranchAndBound problem if it provides the copyable type node_type, the constant sense, the method root() giving the node of the whole set, optionally the type value_type of its values [see BBValue], double if it gives none, and either the methods evaluate( n ) and branch( n , sink ) of a BBEvaluator, which have to be safe to call concurrently in a parallel search, or make_worker( i ), which returns the BBEvaluator of the worker i (e.g., one with its own copy of a model and of a solver).

Optionally, P may give hash( n ), which the distributed search uses to send n to its owner, and estimate( n ), the estimate of the best feasible value under n that orders the nodes with Selection::best_estimate.