Changeset 2408 for trunk


Ignore:
Timestamp:
Mar 6, 2019 5:58:04 PM (6 months ago)
Author:
stefan
Message:

more README content taken from wiki pages

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/README.md

    r2407 r2408  
    11# CLP
    22
    3 Clp (*C*oin-or *l*inear *p*rogramming) is an open-source linear programming solver written in C++.
     3Clp (*C*oin-or *l*inear *p*rogramming) is an open-source linear programming solver.
    44It 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 from
     5It is designed to find solutions of mathematical optimization problems of the form
    66
    7 min c<sup>t</sup>x
     7minimize   c'x
     8such that  lhs &le; Ax &le; rhs
     9and        lb &le; x &le; ub
    810
    9 such that:
    10   row<sub>lower_bound</sub> &le; Ax &le; row<sub>upper_bound</sub>
    1111
    12   column<sub>lower_bound</sub> &le; x &le; column<sub>upper_bound</sub>
     12CLP includes primal and dual Simplex solvers.
     13Both 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).
     14The dual algorithm has Dantzig and Steepest edge row pivot choices; new ones may be provided by the user.
     15The same is true for the column pivot choice of the primal algorithm.
     16The primal can also use a non linear cost which should work for piecewise linear convex functions.
     17CLP also includes a barrier method for solving LPs.
    1318
    1419
     
    1924
    2025The Clp website is https://github.com/coin-or/Clp.
     26
     27Clp is available in [Debian](http://packages.debian.org/search?searchon=sourcenames&keywords=clp) and [Ubuntu](https://launchpad.net/ubuntu/+source/clp).
     28
    2129
    2230## Getting Started using CoinBrew
     
    3745## Getting Started without CoinBrew (Expert users)
    3846
     47 0. Install [these Dependencies](Dependencies)
    3948 1. Obtain the source code, e.g., from https://github.com/coin-or/Clp
    4049 2. Run `./configure -C` to generate makefiles
     
    5665If `Doxygen` is not available, you can use also use [this link](http://www.coin-or.org/Doxygen/Clp).
    5766
    58 
    5967## Project Links
    6068
     69Support:
    6170 * [COIN-OR Initiative](http://www.coin-or.org/)
    6271 * [mailing list](http://list.coin-or.org/mailman/listinfo/clp)
    6372 * [Report a bug](https://github.com/coin-or/Clp/issues/new)
     73 
     74Documentation:
     75 * [User's Guide](http://www.coin-or.org/Clp/userguide/index.html) ([single page format](http://www.coin-or.org/Clp/userguide/clpuserguide.html))
    6476 * [Doxygen-generated html documentation](http://www.coin-or.org/Doxygen/Clp)
     77 * Source code [examples](Clp/examples)
     78
     79Interfaces:
     80 * [Matlab Interface + Windows x86 & x64 Interface Binaries (OPTI Toolbox)](https://www.inverseproblem.co.nz/OPTI/)
     81 * [Julia interface](https://github.com/JuliaOpt/Clp.jl)
     82 * [R and CLP - a quick start](https://cran.r-project.org/web/packages/clpAPI/vignettes/clpAPI.pdf)
     83 * [Java and CLP - performs well](http://orinanobworld.blogspot.co.uk/2016/06/using-clp-with-java.html)
     84
     85
     86## FAQ (from 2004)
     87
     88### The barrier method sounds interesting, what are some of the details?
     89
     90The CLP barrier method solves convex QPs as well as LPs.
     91In general, a barrier method requires implementation of the algorithm, as well as a fast Cholesky factorization.
     92CLP provides the algorithm, and is expected to have a reasonable factorization implementation.
     93However, the sparse factorization requires a good ordering algorithm, which the user is expected to provide (perhaps a better factorization code as well).
     94
     95### Which Cholesky factorizations codes are supported by CLP's barrier method?
     96
     97The Cholesky interface is flexible enough so that a variety of Cholesky ordering and factorization codes can be used.
     98Interfaces are provided to each of the following:
     99 * Anshul Gupta's WSSMP parallel enabled ordering and factorization code
     100 * Sivan Toledo's TAUCS parallel enabled factorization code (the package includes third party ordering codes)
     101 * University of Florida's Approximate Minimum Degree (AMD) ordering code (the CLP native factorization code is used with this ordering code)
     102 * CLP native code: very weak ordering but competitive nonparallel factorization
     103 * Fast dense factorization
     104
     105
     106### When will CLP have a good native ordering?
     107The best outcome would be to have an existing ordering code available as part of the COIN-OR distribution under the EPL.
     108However, if this is not possible, the native ordering will be made respectable.
     109
     110
     111### Is the barrier code as mature as the simplex code?
     112The simplex code has been exposed to user testing for a while and the principal author, John Forrest, knows more about simplex algorithms than interior point algorithms, so the answer is "no".
     113However, it performs well on test sets and seems to be more reliable than some commercially available codes (including OSL).
     114
     115
     116### Which algorithm should I use for quadratic programming and should I keep an eye open for any issues?
     117The interior point algorithm for quadratic programming is much more elegant and normally much faster than the quadratic simplex code.
     118Caution is suggested with the presolve as not all bugs have been found and squashed when a quadratic objective is used.
     119One may wish to switch off the crossover to a basic feasible solution as the simplex code can be slow.
     120The sequential linear code is useful as a "crash" to the simplex code; its convergence is poor but, say, 100 iterations could set up the problem well for the simplex code.
Note: See TracChangeset for help on using the changeset viewer.