COIN-OR stands for the Computational Infrastructure for Operations Research. The stated goal of the COIN-OR project is "to create for mathematical software what the open literature is for mathematical theory." The open literature (e.g., a research journal) provides the OR community with a peer-review process and an archive. Papers in operations research journals on mathematical theory often contain supporting numerical results from computational studies. The software implementations, models, and data used to produce the numerical results are typically not published. The status quo impeded researchers needing to reproduce computational results, make fair comparisons, and extend the state of the art.
The success of Linux, Apache, and other projects popularized the open-source model of software development and distribution. A group at IBM Research proposed open source as an analogous yet viable means to "publish" software, models, and data. COIN-OR was conceived as an initiative to promote open-source in the computational Operations Research community and to provide the on-line resources and hosting services required to enable others to run their own open-source software projects.
The COIN-OR website was launched as an experiment in 2000, in conjunction with 17th International Symposium on Math Programming in Atlanta, Georgia. In the year 2007, COIN-OR had 25 application projects, including tools for linear programming (e.g., COIN-OR CLP), nonlinear programming (e.g., IPOPT), integer programming (e.g., CBC, Bcp and COIN-OR SYMPHONY) and more. COIN-OR is hosted by the Institute for Operations Research and the Management Sciences, INFORMS, and run by the educational, non-profit COIN-OR Foundation.
Projects
CLP
CLP stands for COIN-OR LP . CLP is an open-source linear programming solver written in C++. It is published under the Common Public License so it can be used in commercial software without any of the contamination issues of the GNU General Public License. CLP is primarily meant to be used as a callable library, although a stand-alone executable version can be built. It is designed to be as reliable as any commercial solver (if not quite as fast) and to be able to tackle very large problems.
CLP is designed to solve linear programming problems such as :
minimize c_1 x_1 + c_2 x_2\,
* subject to problem constraints of the following form
a_{11} x_1 + a_{12} x_2 \le b_1
a_{21} x_1 + a_{22} x_2 \le b_2
a_{31} x_1 + a_{32} x_2 \le b_3
* Non-negative variables
x_1 \ge 0
x_2 \ge 0
with up to millions of variables and/or constraints. Its main algorithm is the Simplex algorithm.
CLP is used in other COIN-OR projects such as SYMPHONY, BCP (Branch Cut and Price), CBC (Coin Branch and Cut) and others.
SYMPHONY
SYMPHONY is a software for solving a class of mathematical problems called integer programming (IP) problems and its variants. A linear programming problem is an optimization (mathematics) problem in which we want to maximize or minimize a linear objective function over a set of linear constraints. A Pure Integer Programming problem is a Linear Programming problem in which all the variables are allowed to assume only integer values. A Mixed Integer Programming (MIP) problem is similar to a Pure IP Problem, but only some of the variables are constrained to be integers. Other variables can assume non-integral values. MIPs are useful in modelling a lot of real life problems in logistics, scheduling, production planning, finance and management sciences. They are also extensively used in theoretical research like combinatorics, statistics, physics and computational biology. MIPs are therefore, an important tool in the field of Operations research (OR), which is, roughly, the analysis and optimization of business and other decisions using mathematics.
SYMPHONY is an acronym standing for Single- or multi-process optimization over networks. It is a callable library which can solve general mixed integer programs (MIPs) over heterogeneous networks. It is an open source branch and cut framework for solving MIPs and is available as a part of COIN-OR. It can use CLP, CPLEX, XPRESS or other linear programming solvers to solve the underlying linear programs.
SYMPHONY is a callable library which implements both sequential and parallel versions of branch, cut and price to solve MILPs. A branch, cut and price algorithm is similar to a branch and bound algorithm but additionally includes Cutting-plane methods and pricing algorithms. The user of the library can customize the algorithm in any number of ways by supplying application-specific subroutines for reading in custom data files, generating application-specific cutting planes, or applying custom branching rules, resulting in a customized state-of-the-art branch and cut algorithm. Most components of the algorithm, e.g., search tree management, management of linear programming solution, cut pool management, and communication management, are internal to the library and need not be touched by the user. The executables can be built in any number of configurations ranging from completely sequential to fully parallel with independently functioning cut generators, cut pools, and LP solvers. The distributed version currently runs in any environment supported by the PVM message passing protocol. The same source code can also be compiled for shared-memory architectures using any OpenMP compliant compiler.
SYMPHONY reads files in both, the MPS (format) (through the COIN-OR MPS reader) and AMPL files (through the GLPK parser). SYMPHONY does not have an LP-Solver of its own, but can be used with solvers like Clp, Cplex, Xpress through the Osi-interface. The cuts are generated using COIN's cut generation library: CGL. SYMPHONY also has structure specific implementations for problems like the Traveling salesman problem, Vehicle routing problem, Set partitioning problem, Mixed postman problem etc. SYMPHONY also has an interactive shell where the user can enter commands to execute and control the program.
Developer tools
- BuildTools: COIN-OR Unix developer tools and documentation, tools for managing configuration and compilation of various COIN-OR projects under Linux, Unix, and Cygwin
- CoinBinary: COIN-OR Binary Distributions, pre-compiled binary distributions of COIN-OR projects
- CoinWeb: COIN-OR Web Services, COIN-OR Web pages, Subversion, Trac, etc.
- TestTools: TestTools, Python scripts to automatically download, configure, build, test, and install COIN-OR projects
Graphs
- CGC: COIN-OR Graph Classes, a collection of network representations and algorithms
- LEMON: Library of Efficient Models and Optimization in Networks, a C++ template library aimed at combinatorial optimization tasks, especially those working with graphs and networks.
Interfaces
- CoinMP: CoinMP, a lightweight API and DLL for CLP, CBC, and CGL
- GAMSlinks: GAMS/COIN-OR Links, links between GAMS (General Algebraic Modeling System) and solvers that are hosted at COIN-OR
- NLPAPI: Nonlinear Programming API, a subroutine interface for defining and solving nonlinear programming problems
- OS: Optimization Services, standards for representing optimization instances, results, solver options, and communication between clients and solvers in a distributed environment using Web Services
- OSI: Open Solver Interface, a uniform API for calling embedded linear and mixed-integer programming solvers
- SMI: Stochastic Modeling Interface, for optimization under uncertainty
Metaheuristics
- METSlib: METSlib, an object oriented metaheuristics optimization framework and toolkit in C++
- OTS: Open Tabu Search, a framework for constructing tabu search algorithms
Modeling systems
- FLOPC++: FLOPC++, an algebraic modeling language embedded in C++
- GAMSlinks: GAMS/COIN-OR Links, links between GAMS (General Algebraic Modeling System) and solvers that are hosted at COIN-OR
- OS: Optimization Services, standards for representing optimization instances, results, solver options, and communication between clients and solvers in a distributed environment using Web Services
Optimization convex non-differentiable
- OBOE: Oracle Based Optimization Engine, optimization of convex problems with user-supplied methods delivering key first order information (like support to the feasible set, support to the objective function)
Optimization deterministic linear continuous
- CLP: COIN-OR LP, a simplex solver
- CoinMP: CoinMP, a lightweight API and DLL for CLP, CBC, and CGL
- DyLP: Dynamic LP, an implementation of the dynamic simplex methods
- FLOPC++: FLOPC++, an algebraic modeling language embedded in C++
- OSI: Open Solver Interface, a uniform API for calling embedded linear and mixed-integer programming solvers
- VOL: Volume Algorithm, a subgradient algorithm that also computes approximate primal solutions
Optimization deterministic linear discrete
- BCP: Branch-Cut-Price Framework, a framework for constructing parallel branch-cut-price algorithms for mixed-integer linear programs
- CBC: COIN-OR Branch and Cut, an LP-based branch-and-cut library
- CGL: Cut Generator Library, a library of cutting-plane generators
- CHiPPS: COIN-OR High Performance Parallel Search Framework, a framework for constructing parallel tree search algorithms (includes an LP-based branch-cut-price implementation)
- DIP: Decomposition in Integer Programming , a framework for implementing a variety of decomposition-based branch-and-bound algorithms for solving mixed integer linear programs
- SYMPHONY: SYMPHONY, a callable library for solving mixed-integer linear programs
Optimization deterministic nonlinear
- DFO: Derivative-Free Optimization, a package for solving general nonlinear optimization problems when derivatives are unavailable
- Ipopt: Interior-Point Optimizer, for general large-scale nonlinear optimization
- MOCHA: Matroid Optimization: Combinatorial Heuristics and Algorithms, heuristics and algorithms for multicriteria matroid optimization
- NLPAPI: Nonlinear Programming API, a subroutine interface for defining and solving nonlinear programming problems
- OptiML: Optimization for Machine learning, interior point, active set method and parametric solvers for support vector machines, solver for the sparse inverse covariance problem
Optimization deterministic nonlinear discrete
- Bonmin: Basic Open-source Nonlinear Mixed INteger programming, an experimental open-source C++ code for solving general MINLP (Mixed Integer NonLinear Programming) problems
- Couenne: Couenne, a branch-and-bound algorithm for mixed integer nonlinear programming problems
- LaGO: Lagrangian Global Optimizer, for the global optimization of nonconvex mixed-integer nonlinear programs
Optimization deterministic semidefinite continuous
- CSDP: CSDP, an interior-point method for semidefinite programming
Optimization stochastic
- SMI: Stochastic Modeling Interface, for optimization under uncertainty
Optimization utility
- ADOL-C: ADOL-C, package for the automatic differentiation of C and C++ programs
- CHiPPS: COIN-OR High Performance Parallel Search Framework, a framework for constructing parallel tree search algorithms (includes an LP-based branch-cut-price implementation)
- CoinUtils: COIN-OR utilities, utilities, data structures, and linear algebra methods for COIN-OR projects
- CppAD: CppAD, a tool for differentiation of C++ functions
- LEMON: Library of Efficient Models and Optimization in Networks, a C++ template library aimed at combinatorial optimization tasks, especially those working with graphs and networks.
- OS: Optimization Services, standards for representing optimization instances, results, solver options, and communication between clients and solvers in a distributed environment using Web Services
- PFunc: Parallel Functions, a lightweight and portable library that provides C and C++ APIs to express task parallelism
Web services
- OS: Optimization Services, standards for representing optimization instances, results, solver options, and communication between clients and solvers in a distributed environment using Web Services
Projects alphabetically:
- ADOL-C: ADOL-C, package for the automatic differentiation of C and C++ programs
- BCP: Branch-Cut-Price Framework, a framework for constructing parallel branch-cut-price algorithms for mixed-integer linear programs
- Bonmin: Basic Open-source Nonlinear Mixed INteger programming, an experimental open-source C++ code for solving general MINLP (Mixed Integer NonLinear Programming) problems
- BuildTools: COIN-OR Unix developer tools and documentation, tools for managing configuration and compilation of various COIN-OR projects under Linux, Unix, and Cygwin
- CBC: COIN-OR Branch and Cut, an LP-based branch-and-cut library
- CGC: COIN-OR Graph Classes, a collection of network representations and algorithms
- CGL: Cut Generator Library, a library of cutting-plane generators
- CHiPPS: COIN-OR High Performance Parallel Search Framework, a framework for constructing parallel tree search algorithms (includes an LP-based branch-cut-price implementation)
- CLP: COIN-OR LP, a simplex solver
- CoinBinary: COIN-OR Binary Distributions, pre-compiled binary distributions of COIN-OR projects
- CoinMP: CoinMP, a lightweight API and DLL for CLP, CBC, and CGL
- CoinUtils: COIN-OR utilities, utilities, data structures, and linear algebra methods for COIN-OR projects
- CoinWeb: COIN-OR Web Services, COIN-OR Web pages, Subversion, Trac, etc.
- Couenne: Couenne, a branch-and-bound algorithm for mixed integer nonlinear programming problems
- CppAD: CppAD, a tool for differentiation of C++ functions
- CSDP: CSDP, an interior-point method for semidefinite programming
- DFO: Derivative-Free Optimization, a package for solving general nonlinear optimization problems when derivatives are unavailable
- DIP: Decomposition in Integer Programming , a framework for implementing a variety of decomposition-based branch-and-bound algorithms for solving mixed integer linear programs
- DyLP: Dynamic LP, an implementation of the dynamic simplex methods
- FLOPC++: FLOPC++, an algebraic modeling language embedded in C++
- GAMSlinks: GAMS/COIN-OR Links, links between GAMS (General Algebraic Modeling System) and solvers that are hosted at COIN-OR
- Ipopt: Interior-Point Optimizer, for general large-scale nonlinear optimization
- LaGO: Lagrangian Global Optimizer, for the global optimization of nonconvex mixed-integer nonlinear programs
- LEMON: Library of Efficient Models and Optimization in Networks, a C++ template library aimed at combinatorial optimization tasks, especially those working with graphs and networks.
- METSlib: METSlib, an object oriented metaheuristics optimization framework and toolkit in C++
- MOCHA: Matroid Optimization: Combinatorial Heuristics and Algorithms, heuristics and algorithms for multicriteria matroid optimization
- NLPAPI: Nonlinear Programming API, a subroutine interface for defining and solving nonlinear programming problems
- OBOE: Oracle Based Optimization Engine, optimization of convex problems with user-supplied methods delivering key first order information (like support to the feasible set, support to the objective function)
- OptiML: Optimization for Machine learning, interior point, active set method and parametric solvers for support vector machines, solver for the sparse inverse covariance problem
- OS: Optimization Services, standards for representing optimization instances, results, solver options, and communication between clients and solvers in a distributed environment using Web Services
- OSI: Open Solver Interface, a uniform API for calling embedded linear and mixed-integer programming solvers
- OTS: Open Tabu Search, a framework for constructing tabu search algorithms
- PFunc: Parallel Functions, a lightweight and portable library that provides C and C++ APIs to express task parallelism
- SMI: Stochastic Modeling Interface, for optimization under uncertainty
- SYMPHONY: SYMPHONY, a callable library for solving mixed-integer linear programs
- TestTools: TestTools, Python scripts to automatically download, configure, build, test, and install COIN-OR projects
- VOL: Volume Algorithm, a subgradient algorithm that also computes approximate primal solutions
Download
Binaries
Pre-compiled binaries for a number of projects and platforms are available here. For more information on using these binaries, please visit the Binary Distribution Project Web page.
Source Code
You can find detailed instruction on obtaining, configuring, compiling, installing, and finally using the COIN-OR libraries at the CoinHelp (BuildTools) project page.
An archive containing the source code for the latest stable release of each project can be obtained here or by checking it out using Subversion (SVN). See the FAQs for general instructions on subversion or go to the Web site of the project you are interested in for more specific instructions (see here for a list).
On-line Services
NEOS
Some COIN-OR solvers can be accessed on-line through NEOS. You only need a description of the optimization problem you want to solve---all additional information required by the solver is determined automatically. The following COIN-OR solvers run on NEOS. (Click on the links below to get to the solver's webpage on NEOS.)
- BonMin, Basic Open-source Nonlinear Mixed INteger program solver on NEOS using AMPL input
- CLP COIN Linear Program Solver on NEOS using MPS input
- CBC Coin Branch and Cut Solver on NEOS
- IPOPT Large-Scale Nonlinear Optimization Solver on NEOS using AMPL input
source: About.com LinuxIf you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog:
0 comments:
Post a Comment