1 | # CLP |
---|
2 | |
---|
3 | Clp (*C*oin-or *l*inear *p*rogramming) is an open-source linear programming solver. |
---|
4 | It is primarily meant to be used as a callable library, but a basic, stand-alone executable version is also available. |
---|
5 | It is designed to find solutions of mathematical optimization problems of the form |
---|
6 | |
---|
7 | minimize c'x |
---|
8 | such that lhs ≤ Ax ≤ rhs |
---|
9 | and lb ≤ x ≤ ub |
---|
10 | |
---|
11 | |
---|
12 | CLP includes primal and dual Simplex solvers. |
---|
13 | Both dual and primal algorithms can use matrix storage methods provided by the user (0-1 and network matrices are already supported in addition to the default sparse matrix). |
---|
14 | The dual algorithm has Dantzig and Steepest edge row pivot choices; new ones may be provided by the user. |
---|
15 | The same is true for the column pivot choice of the primal algorithm. |
---|
16 | The primal can also use a non linear cost which should work for piecewise linear convex functions. |
---|
17 | CLP also includes a barrier method for solving LPs. |
---|
18 | |
---|
19 | |
---|
20 | Clp is written in C++ and is released as open source code under the [Eclipse Public License (EPL)](http://www.opensource.org/licenses/eclipse-1.0). |
---|
21 | It is available from the [COIN-OR initiative](http://www.coin-or.org/). |
---|
22 | The code is written primarily by John J. Forrest, now retired from IBM Research. |
---|
23 | The project is currently managed by John Forrest, Lou Hafer, [Julian Hall](https://www.maths.ed.ac.uk/hall/), and Matthew Saltzman. |
---|
24 | |
---|
25 | The Clp website is https://github.com/coin-or/Clp. |
---|
26 | |
---|
27 | Clp is available in [Debian](http://packages.debian.org/search?searchon=sourcenames&keywords=clp) and [Ubuntu](https://launchpad.net/ubuntu/+source/clp). |
---|
28 | |
---|
29 | |
---|
30 | ## Getting Started using CoinBrew |
---|
31 | |
---|
32 | To build Clp from source, obtain the `coinbrew` script from |
---|
33 | https://coin-or.github.io/coinbrew/ |
---|
34 | and run |
---|
35 | |
---|
36 | |
---|
37 | /path/to/coinbrew fetch --main-proj=Clp |
---|
38 | /path/to/coinbrew build --main-proj=Clp --test |
---|
39 | /path/to/coinbrew install --main-proj=Clp |
---|
40 | |
---|
41 | |
---|
42 | The `coinbrew` script will fetch [these](Dependencies) additional projects. |
---|
43 | |
---|
44 | |
---|
45 | ## Getting Started without CoinBrew (Expert users) |
---|
46 | |
---|
47 | 0. Install [these Dependencies](Dependencies) |
---|
48 | 1. Obtain the source code, e.g., from https://github.com/coin-or/Clp |
---|
49 | 2. Run `./configure -C` to generate makefiles |
---|
50 | 3. Run `make` to build the CoinUtils library |
---|
51 | 4. Run `make test` to build and run the CoinUtils unit test program |
---|
52 | 5. Run `make install` to install library and header files. |
---|
53 | |
---|
54 | |
---|
55 | ## Doxygen Documentation |
---|
56 | |
---|
57 | If you have `Doxygen` available, you can build a HTML documentation by typing |
---|
58 | |
---|
59 | `make doxydoc` |
---|
60 | |
---|
61 | in the build directory. |
---|
62 | If Clp was build via `coinbrew`, then the build directory is `./build/Clp`. |
---|
63 | The doxygen documentation main file is found at `./doxydoc/html/index.html` in the build directory. |
---|
64 | |
---|
65 | If `Doxygen` is not available, you can use also use [this link](http://www.coin-or.org/Doxygen/Clp). |
---|
66 | |
---|
67 | ## Project Links |
---|
68 | |
---|
69 | Help: |
---|
70 | * [mailing list](http://list.coin-or.org/mailman/listinfo/clp) |
---|
71 | * [Report a bug](https://github.com/coin-or/Clp/issues/new) |
---|
72 | |
---|
73 | Documentation: |
---|
74 | * [Doxygen-generated html documentation](http://www.coin-or.org/Doxygen/Clp) |
---|
75 | * Source code [examples](Clp/examples) |
---|
76 | * [User's Guide](https://coin-or.github.io/Clp) (from 2004) |
---|
77 | |
---|
78 | Interfaces: |
---|
79 | * [Matlab Interface + Windows x86 & x64 Interface Binaries (OPTI Toolbox)](https://www.inverseproblem.co.nz/OPTI/) |
---|
80 | * [Julia interface](https://github.com/JuliaOpt/Clp.jl) |
---|
81 | * [R and CLP - a quick start](https://cran.r-project.org/web/packages/clpAPI/vignettes/clpAPI.pdf) |
---|
82 | * [Java and CLP - performs well](http://orinanobworld.blogspot.co.uk/2016/06/using-clp-with-java.html) |
---|