|
PBeFS
Parallel Best-First Search
|
the options of the parallel B&B with values of type V More...
#include <PBeFS/bnb/ParallelBranchAndBound.h>
Public Member Functions | |
| BasicParallelBBOptions (void) | |
| Public Member Functions inherited from ParallelParams | |
| void | normalize (void) noexcept |
| sets to 1 any parameter that is 0 | |
Public Attributes | |
| std::size_t | round = 0 |
| the nodes evaluated at each round of the deterministic search, 0 for one per worker [see DeterministicBranchAndBound] | |
| std::size_t | split = 0 |
| the open nodes per worker at which the sampling of the SelfSplit search stops, 0 for 4 [see SelfSplitBranchAndBound] | |
| bool | split_dive = true |
| true if the sampling of the SelfSplit search ends with a dive from its first open node to a leaf, whose incumbent the workers start from [see SelfSplitBranchAndBound] | |
| bool | split_shared = false |
| true if the workers of the SelfSplit search share their incumbent, which prunes more but makes the nodes evaluated depend on the timing [see SelfSplitBranchAndBound] | |
| Public Attributes inherited from BasicBBOptions< double > | |
| Selection | selection |
| the order of the nodes | |
| double | abs_gap |
| the absolute tolerance on the gap | |
| double | rel_gap |
| the relative tolerance on the gap | |
| double | plunge_gap |
| how far from the best bound a dive goes | |
| std::optional< double > | incumbent |
| a known feasible value, if any | |
| std::function< double(void) > | shared_incumbent |
| a value that the search reads at each extraction and prunes by when it is better than its incumbent, e.g., the incumbent of other searches running at the same time; the Solution has only the feasible values that the search itself finds (or incumbent), so that it is infeasible when none of them is better than the values read, and its bound is still that of the subtrees searched | |
| std::size_t | node_limit |
| evaluated nodes (0 = no limit) | |
| double | time_limit |
| seconds (0 = no limit) | |
| bool | keep_frontier |
| keep the leaves of the tree explored | |
| std::function< void(double) > | on_incumbent |
| called with every new incumbent value (in a parallel search, by the worker that finds it, under a lock) | |
| Public Attributes inherited from ParallelParams | |
| unsigned | threads = 1 |
| the number of workers | |
| std::size_t | batch = 64 |
| nodes packed in a message | |
| unsigned | flush_period = 64 |
| steps between flushes of outboxes | |
| std::uint64_t | seed = 1 |
| seed of the owners | |
the options of the parallel B&B with values of type V
Those of the sequential search, and the parameters of the parallel ones [see ParallelParams], with batches of 16 nodes flushed at every evaluation, since an evaluation is usually "expensive"; node_limit bounds the evaluations of all the workers together, batch is used by the searches that send nodes (the distributed, the farm and the MPI ones), flush_period by the distributed and the MPI ones, and seed gives the owners of the nodes when the problem gives no hash( n ), while round is used by the deterministic search only and split by the SelfSplit one.
|
inline |
| std::size_t round = 0 |
the nodes evaluated at each round of the deterministic search, 0 for one per worker [see DeterministicBranchAndBound]
| std::size_t split = 0 |
the open nodes per worker at which the sampling of the SelfSplit search stops, 0 for 4 [see SelfSplitBranchAndBound]
| bool split_dive = true |
true if the sampling of the SelfSplit search ends with a dive from its first open node to a leaf, whose incumbent the workers start from [see SelfSplitBranchAndBound]
| bool split_shared = false |
true if the workers of the SelfSplit search share their incumbent, which prunes more but makes the nodes evaluated depend on the timing [see SelfSplitBranchAndBound]