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 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]
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]
-
enumerator sequential
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