coin-or / jorlib

Java Operations Research Library
GNU Lesser General Public License v2.1
62 stars 37 forks source link

TODO: Make BranchAndPrice multi threaded #2

Open jkinable opened 9 years ago

jkinable commented 9 years ago

Currently, the nodes in the Branch-and-Price tree (AbstractBranchAndPrice.java, frameworks.columnGeneration package)are solved one by one. To take advantage of modern CPUs, functionality should be added to allow these nodes to be solved in parallel. This can be realized by rewriting the method public void runBranchAndPrice(long timeLimit). Some worker threads having access to the queue containing the BAPNodes can take nodes one by one and solve them.

Issues which have to be taken care off: -GraphManipulator.java: for efficiency reasons, there's currently only one master problem and pricing problem. When processing a node, the master problem and pricing problem are modified automatically to reflect the problem represented by the node, i.e. the branching decisions modify the state of the master/pricing problems. Solving multiple nodes in parallel would require duplications of the master and pricing problems. -SimpleBAPLogger.java needs to be rewritten: logging becomes more difficult. Logging messages from various nodes being solved in parallel may not become tangled up. -bapNodeComparators: it must be guaranteed that the tree is processed in a consistent order, thereby having a deterministic solve procedure, each time an instance is solved with the exact same settings.

sk-surya commented 3 years ago

Any plans to do this? I really like this project. (A coin-or library that doesn't intimidate me and decent documentation!). Parallel BaP would be amazing.