bnb/BranchAndBoundScheme.h

Header of the layer bnb, in the group Schemes; the same header on the site of Doxygen, its source on GitHub.

Functions

inline std::string_view PBeFS_di_unipi_it::bb_scheme_name(BBScheme s)

the name of the scheme s

inline BBScheme PBeFS_di_unipi_it::bb_scheme(std::string_view name)

the scheme of the given name; throws std::invalid_argument if there is none

template<BranchAndBound P, ADS::WorkerExecutor Executor = ADS::ThreadPool>
BBSolution<typename P::node_type, bb_value_t<P>> PBeFS_di_unipi_it::parallel_branch_and_bound(
const P &problem,
BBScheme s,
const BasicParallelBBOptions<bb_value_t<P>> &o = {},
std::optional<std::vector<BBLeaf<typename P::node_type, bb_value_t<P>>>> seeds = std::nullopt
)

the B&B of the problem by the scheme s on the given runtime, with the given options, from the given nodes [see BranchAndBoundSearch::solve()] or from the root if none; throws std::invalid_argument for the scheme multiqueue if the values are not atomic with no lock [see MultiQueueValue]

Enumerations

enum class PBeFS_di_unipi_it::BBScheme

the schemes of the B&B of the core

Each has a name, given by bb_scheme_name() and read by bb_scheme().

Values:

enumerator sequential

one worker [see BranchAndBoundSearch]

enumerator shared

one shared queue [see SharedBranchAndBound]

enumerator distributed

a queue per worker [see DistributedBranchAndBound]

enumerator deterministic

synchronous rounds [see DeterministicBranchAndBound]

enumerator selfsplit

a split of a sampling [see SelfSplitBranchAndBound]

enumerator stealing

work stealing [see StealingBranchAndBound]

enumerator multiqueue

a MultiQueue [see MultiQueueBranchAndBound]

Description of the header

Header file for the choice of the Branch-and-Bound (B&B) by its scheme: BBScheme names the searches of the core of PBeFS, bb_scheme() reads it from its name (e.g., from a file of parameters), and parallel_branch_and_bound() runs the search of the scheme of the options on a runtime, so that a caller chooses the search by a value rather than by a type.

The searches that need an external library, i.e., the farm of FastFlow and the B&B over MPI, are not among them, and they are used by their own classes [see FarmBranchAndBound.h and MPIBranchAndBound.h].

Author

Donato Meoli

Dipartimento di Informatica

Università di Pisa

Copyright

© by Donato Meoli