Third-Party Dependencies

Optional dependencies for building COIN-OR solvers with full functionality

Third-Party Dependencies

The COIN-OR ecosystem uses several third-party libraries for specialized functionality. These are optional — solvers work without them, but with reduced capabilities.


Dependency Architecture

                    ┌─────────────────────────────────────────────────────────┐
                    │                    COIN-OR Solvers                      │
                    └─────────────────────────────────────────────────────────┘
          ┌───────────────┬─────────────┬─────┴─────┬─────────────┐
          ▼               ▼             ▼           ▼             ▼
       Bonmin          Couenne       Ipopt      SYMPHONY        Cbc
          │               │             │           │             │
          └───────┬───────┴─────────────┤           │             │
                  │                     │           │             │
                  ▼                     ▼           ▼             ▼
              ThirdParty-ASL     ┌──────────┐   ThirdParty-    Osi
              (AMPL interface)   │  Linear  │     Glpk       (solver
                                 │  Solvers │                interface)
                                 └────┬─────┘
                    ┌─────────────────┼─────────────────┐
                    ▼                 ▼                 ▼
             ThirdParty-HSL    ThirdParty-Mumps   SuiteSparse
             (MA27/57/77/86/97)    (MUMPS)       (included)
                    │                 │
                    └────────┬────────┘
                    ┌────────────────┐
                    │  ThirdParty-   │
                    │    Metis       │
                    └────────┬───────┘
               ┌─────────────┴─────────────┐
               ▼                           ▼
        ThirdParty-Blas            ThirdParty-Lapack

Build Infrastructure

PackagePurpose
coinbrewCOIN-OR fetch/build/install helper script — the standard way to build COIN-OR from source
COIN-OR-OptimizationSuiteMeta-project that builds all COIN-OR solvers together
Data-SampleTest problem instances (MPS, LP files) for solver validation

Linear Algebra Dependencies

PackagePurposeUsed By
ThirdParty-BlasBasic Linear Algebra SubprogramsMost solvers (matrix operations)
ThirdParty-LapackLinear Algebra PackageIpopt, HSL, MUMPS (dense linear algebra)
ThirdParty-MetisGraph partitioning (METIS 4/5)HSL, MUMPS, Ipopt (sparse matrix ordering)

Sparse Direct Solvers (for Ipopt)

These provide the symmetric indefinite factorization required by Ipopt's interior point method.

PackagePurposeLicense
ThirdParty-HSLHarwell Subroutine Library wrapperAcademic/Commercial
ThirdParty-MumpsMUMPS sparse direct solver wrapperPublic domain

HSL Solvers

HSL provides the highest-performance linear solvers for Ipopt:

SolverTypeBest For
MA27MultifrontalSmall-medium problems (free in archive)
MA57MultifrontalMedium problems
MA77Out-of-coreVery large problems
MA86Multi-threadedParallel solve
MA97Multi-threadedModern replacement for MA57

Getting HSL:

MUMPS

MUMPS (MUltifrontal Massively Parallel Sparse direct Solver) is a freely available alternative:


LP/MIP Solver Interfaces

PackagePurposeLicense
ThirdParty-GlpkGNU Linear Programming Kit wrapperGPL
ThirdParty-SoPlexZIB SoPlex LP solver wrapperZIB Academic
ThirdParty-SCIPZIB SCIP MIP solver wrapperZIB Academic

These allow COIN-OR solvers to use external LP/MIP engines as subsolvers.


NLP Components

PackagePurposeUsed By
ThirdParty-ASLAMPL Solver Library (expression parsing)Ipopt, Bonmin, Couenne (AMPL interface)
ThirdParty-FilterSQPFilterSQP NLP solver wrapperBonmin (alternative to Ipopt)

Installation

Most ThirdParty-* packages are build wrappers that download source code on demand:

# Example: Building MUMPS for Ipopt
cd ThirdParty-Mumps
./get.Mumps          # Downloads MUMPS source
./configure
make && make install

The easiest way to build COIN-OR with dependencies:

# Fetch and build Ipopt with MUMPS
./coinbrew fetch Ipopt --no-prompt
./coinbrew build Ipopt --prefix=/usr/local --no-prompt

# Or build everything
./coinbrew fetch COIN-OR-OptimizationSuite --no-prompt
./coinbrew build COIN-OR-OptimizationSuite --prefix=/usr/local --no-prompt

coinbrew automatically handles dependency resolution and downloads third-party packages as needed.


Performance Impact

SolverWithout DependenciesWith HSLWith MUMPS
IpoptUses internal MA27 (slow)5-10x faster (MA57/97)2-5x faster
BonminBasic NLPFaster NLP subproblemsFaster NLP subproblems
CouenneBasic NLPFaster node processingFaster node processing

For production use with Ipopt, HSL MA57 or MA97 is strongly recommended.


See Also