forked from distcomp/ddbnb
-
Notifications
You must be signed in to change notification settings - Fork 0
vvvol/dcbc
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
DCBC: solve a MILP problem with a distributed set of CBC solver instances CBC is a free open-source MILP solver from the COIN-OR suite (https://projects.coin-or.org/Cbc). DCBC is an Erlang-based system managing a set of CBC solver instances running together on a set of subproblems generated from a single MILP problem. Executables c_src/cbc_port A port program for communicating with CBC from Erlang. c_src/cbc_port A port program for communicating with SCIP from Erlang. c_src/nlmod A program for splitting a problem, encoded as AMPL stub, to a set of subproblems. registry.sh Starts an Erlang node managing registration of slave nodes. Only one registry node should be started. Its node@host should be set in the registry-node file. slave.sh [number of cpu] Starts an Erlang node which starts CBC solver instances. It should be started one per host. master.sh [solver options <-->] <list of .nl files of subproblems> Solve a set of subproblems on all available slave nodes found in registry. solve.sh [solver options <-->] <list of .nl files of subproblems> Same as master.sh but exits after solving the last subproblem. Installation 1. Install CBC and Erlang. https://www.erlang-solutions.com/downloads/download-erlang-otp 2. On the command line: git clone https://github.com/ssmir/dcbc.git cd dcbc ./bootstrap.sh make If you wish to use SCIP: Copy reader_nl.h and reader_nl.c from interfaces/ampl/src in SCIP source tree to dcbc/c_src. Then, if SCIP libraries are installed in /usr/local/lib and SCIP headers are in /usr/local/include: make USE_SCIP=true SCIP_HOME=/usr/local If it doesn't compile, also add SCIP_LIBS=<libraries needed to link with SCIP> to make command line 3. Erlang cookie file ~/.erlang.cookie have to be same on every node working with DCBC Usage 1. Edit registry-node file. It has to contain the name of the registry node with an IP address reachable from other nodes, for example: [email protected] 2. Start the registry node on the machine with the address specified in the registry-node file: ./registry.sh 3. Start slave nodes on every machine used for computations. ./slave.sh It's possible to specify the maximum number of solver processes running simultaneously: ./slave 5 would run maximum 5 processes 4. Solve some problems with solve.sh: ./solve.sh 1.nl 2.nl 3.nl Shutting down: It's possible to shut down a node running on the local machine: ./stop-node.sh slave ./stop-node.sh registry External dependencies AMPL solver library (http://www.netlib.org/ampl/solvers/ or https://github.com/ampl/ampl) ASL util library by Victor Zverovich (https://github.com/ampl/ampl) CBC (https://projects.coin-or.org/Cbc) SCIP (http://scip.zib.de/) Erlang (http://www.erlang.org)
About
COIN-OR CBC made distributed
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- C++ 52.4%
- Erlang 37.4%
- Shell 6.0%
- Makefile 3.8%
- C 0.4%