|
PBeFS
Parallel Best-First Search
|
Header file for FarmBranchAndBound, the master-worker Branch-and-Bound (B&B) on a farm with feedback on an executor of ADS: the master holds the queue of the open nodes, and the workers evaluate and branch the nodes it sends. More...
#include <atomic>#include <memory>#include <stdexcept>#include <vector>#include "PBeFS/bnb/ParallelBranchAndBound.h"#include "ADS/parallel/Farm.h"Go to the source code of this file.
Classes | |
| class | FarmBranchAndBound< P, Executor > |
| the master-worker B&B on a farm with feedback More... | |
Namespaces | |
| namespace | PBeFS_di_unipi_it |
| namespace for the Parallel Best-First Search library | |
Header file for FarmBranchAndBound, the master-worker Branch-and-Bound (B&B) on a farm with feedback on an executor of ADS: the master holds the queue of the open nodes, and the workers evaluate and branch the nodes it sends.
The problem, the options and the Solution are those of BranchAndBound.h and ParallelBranchAndBound.h, and the design is discussed in docs/branch-and-bound.md.
The search is the following, with the notation of the page "Parallel branch-and-bound" of the documentation, the procedures of the sequential search [see BranchAndBound.h] and DIVE of the parallel ones [see ParallelBranchAndBound.h]; the master alone holds the queue Q, out counts the tasks at the workers, and the incumbent \( z \) is shared:
The test of line 5 is exact, since the master alone changes Q and every open node is either in Q or in a task that is out; the order of extraction is the one of the selection, and the master only moves nodes, which suits an evaluation that is "expensive" w.r.t. the transfer of a node.