|Designed by||William E. Hart
|Stable release||3.5.8787 / June 16, 2014|
|Influenced by||Python, AMPL|
|OS||Cross-platform: Linux, Mac OS X and Windows|
Coopr is a collection of Python software packages that supports a diverse set of optimization capabilities for formulating and analyzing optimization models. A key driver for Coopr development is Pyomo, an open source tool for modeling optimization applications in Python. Pyomo can be used to define symbolic problems, create concrete problem instances, and solve these instances with standard solvers. Thus, Pyomo provides a capability that is commonly associated with an algebraic modeling language like AMPL and GAMS. Coopr has also proven an effective framework for developing high-level optimization and analysis tools. For example, the PySP package provides generic solvers for stochastic programming. PySP leverages the fact that Pyomo's modeling objects are embedded within a full-featured high-level programming language, which allows for transparent parallelization of subproblems using python parallel communication libraries. Pyomo and PySP illustrate how Coopr integrates functionality of both algebraic modeling languages and optimization solver libraries.
Coopr was developed by William Hart and Jean-Paul Watson at Sandia National Laboratories and David Woodruff at University of California, Davis. Significant extensions to Coopr were developed by John Siirola at Sandia National Laboratories and Carl Laird at Texas A&M University. Coopr is an open-source project that is freely available, and it is licensed with the BSD license. Coopr is developed as part of the COIN-OR project. Coopr is a popular open-source software package that is used by a variety of government agencies and academic institutions.
Coopr's Pyomo package allows users to formulate optimization problems in Python in a manner that is similar to the notation commonly used in mathematical optimization. Pyomo supports an object-oriented style of formulating optimization models, which are defined with a variety of modeling components: sets, scalar and multidimensional parameters, decision variables, objectives, constraints, equations, disjunctions and more. Optimization models can be initialized with python data, and external data sources can be defined using spreadsheets, databases, various formats of text files. Pyomo supports both abstract models, which are defined without data, and concrete models, which are defined with data. In both cases, Pyomo allows for the separation of model and data.
Pyomo and other Coopr packages support a wide range of problem types, among them:
- Linear programming
- Quadratic programming
- Nonlinear programming
- Mixed-integer programming
- Mixed-integer quadratic programming
- Mixed-integer nonlinear programming
- Global optimization
- Disjunctive programming
- Mixed-integer stochastic programming
Coopr supports dozens of solvers, both open source and commercial, including all solvers supported by AMPL, PICO, CBC, CPLEX, IPOPT, Gurobi and GLPK. Coopr can either invoke the solver directly or asynchronous with a solver manager. Solver managers support remote, asynchronous execution of solvers, which supports parallel execution of Coopr scripts. Solver interaction is performed with a variety of solver interfaces, depending on the solver being used. A very generic solver interface is supported with AMPL's nl (format).
The following software packages integrate Coopr as a library to support optimization modeling and analysis:
- SolverStudio lets you use Excel to edit, save and solve optimisation models built using a variety of modeling languages, including Pyomo. Coopr is bundled with the SolverStudio software.
- TEMOA (Tools for Energy Model Optimization and Assessment) is an open source modeling framework for conducting energy system analysis. The core component of TEMOA is an energy economy optimization model. This model is formulated and optimized using Coopr.
- MinPower is an open source toolkit for students and researchers in power systems. It is designed to make working with standard power system models simple and intuitive. MinPower uses Coopr to formulate and optimize these power system models.
- Hart, William; Carl Laird, Jean-Paul Watson, David L. Woodruff (2012). Pyomo: Optimization Modeling in Python. Springer.
- Hart, William; Jean-Paul Watson, David L. Woodruff (2011). "Pyomo: modeling and solving mathematical programs in python". Mathematical Programming Computation 3 (3).
- Watson, Jean-Paul; David L. Woodruff; William E. Hart (2012). "PySP: modeling and solving stochastic programs in python". Mathematical Programming Computation 4 (2).
- Mason, Andrew (2013). "SolverStudio: A New Tool for Better Optimisation and Simulation Modelling in Excel". INFORMS Transactions on Education 14 (1). pp. 45–52.
- DeCarolis, Joseph; Kevin Hunter; Sarat Sreepathi (2010). "The TEMOA Project: Tools for Energy Model Optimization and Analysis". International Energy Workshop. Stockholm, Sweden.
- Greenhall, Adam; Rich Christie and Jean-Paul Watson (2012). "Minpower: A power systems optimization toolkit". Power and Energy Society General Meeting.
- Articles from IBM's developerWorks: