Success Stories and Active Work of Ipopt Users
This section is intended for people to describe their successes using Ipopt. Ipopt has been a COIN-OR open-source project since 2002 with a number of active users and contributors. While there have been many successes in this time, this Wiki has only been available since the release of Ipopt 3.0 (Aug. 26th, 2005). Please feel free to contribute successes, past or present, and for any version of Ipopt.
If you are using Ipopt, please add some comments about your application to the Wiki page. We are all eager to hear about Ipopt, its Applications, and its Users. Please have a look here to see how to edit this Wiki page. If you have a publication about work that uses Ipopt, please add a reference here.
Dynamic Modeling and Optimization platform JModelica.org
Submitted by Johan Åkesson, Lund University, Sweden
JModelica.org is an extensible Modelica-based open source platform for optimization, simulation and analysis of complex dynamic systems. The main objective of the project is to create an industrially viable open source platform for optimization of Modelica models, while offering a flexible platform serving as a virtual lab for algorithm development and research. As such, JModelica.org is intended to provide a platform for technology transfer where industrially relevant problems can inspire new research and where state of the art algorithms can be propagated form academia into industrial use.
JModelica.org at a glance:
- Model your systems using the object-oriented and equation-based language Modelica
- Solve your complex simulation and optimization problems using state of the art numerical algorithms
- Automate your work in the Python scripting environment
- Visualize your results
Pseudospectral optimal control solver PSOPT
Submitted by Victor Becerra, University of Reading, UK.
PSOPT, an open source pseudospectral optimal control solver written in C++, uses Ipopt as its default solver. Pseudospectral methods solve optimal control problems by approximating the time-dependent variables using orthogonal polynomials. This allows to discretize the differential equations and continuous constraints over a grid of nodes, and to compute any integrals associated with the problem using well known quadrature formulas. PSOPT is able to deal with single or multiphase problems with continuous time nonlinear dynamics, general endpoint constraints, nonlinear path constraints, integral constraints, interior point constraints, bounds on controls and state variables, general cost function with Lagrange and Mayer terms, free or fixed initial and final conditions, linear or nonlinear linkages between phases, and fixed or free initial and final times.
PSOPT has the following features: choice between Legendre or Chebyshev polynomial approximation, automatic scaling, automatic differentiation using the ADOL-C library, numerical differentiation by using sparse finite differences, automatic identification of the Jacobian sparsity, DAE formulation, so that differential and algebraic constraints can be implemented in the same C++ function, and an easy to use interface to GNUplot to produce graphical output.
Please visit the PSOPT home page for further details, documentation, and download links.
Ipopt as a solver in APMonitor
The APMonitor software uses IPOPT as a solver for advanced process control and optimization solutions. Optimization problems can be submitted through APMonitor's web-based interface. The solution engine is Ipopt v3.5.4 with the MUMPS linear solver. The modeling language documentation explains the necessary equation format and provides a few example models. Similar to the NEOS server, users from a variety of academic and industrial institutions have participated by submitting models through the online resource.
Ipopt included in GAMS distribution
Ipopt is included as a free solver in the official GAMS distribution, together with other COIN-OR solvers, thanks to Stefan Vigerske's GAMSlinks project. You can download a free limited-size version of GAMS at the GAMS download page. An extensive benchmark, comparing several solvers in GAMS, including Ipopt, can be found here.
Ipopt used in SmartFolio
Submitted by Boris Gnedenko, Managing director of Modern Investment Technologies Ltd.
SmartFolio is an Excel-based asset allocation, portfolio optimization and risk management software. It contains a wide range of advanced optimization criteria, most of which result in general NLP problems, as well as more traditional QP portfolio optimization problem. To successfully address these issues SmartFolio uses Ipopt 3.0.1, selected for being far more stable and several orders faster than standard Excel Solver.
For more details about SmartFolio see www.smartfolio.com.
Solution of Mixed Integer Nonlinear Programs
Ongoing research project involving IBM and Carnegie Mellon University.
A joint project has been started to develop open source solvers for mixed integer nonlinear programs (MINLPs), and has resulted in the COIN-OR project Bonmin.
Ipopt 3.2 is the primary NLP solver currently used in this development. To see more details about this project, see also the CMU-IBM Open Source MINLP Project.
Solution of Almost Separable Problems with Few Common Variables
Submitted by Carl Laird, Co-author of Ipopt 3.0.0.
There are a number of optimization problems that can be cast into a form that has an almost separable structure with few common variables (Optimal Design Under Uncertainty). The linear system that is solved at each iteration of Ipopt inherits this problem structure and decomposition techniques exist for efficient solution of these large NLPs. My primary interest in contributing to the new C++ version of Ipopt was to help build an object-oriented optimization tool that could be easily modified for the solution of large structured problems.
Currently, I have implemented a CompositeNLP that allows the building of a large almost separable problem and I am working on the decomposition technique (both serial and parallel version).
Parameter Identification in Systems Biolgy
Submitted by James Lu, Johann Radon Institute for Computational and Applied Mathematics (RICAM)
By utilizing the adjoint solution capabilities of the SBML ODE Solver Library (SOSLib, http://www.tbi.univie.ac.at/~raim/odeSolver/), IPOPT as a local optimizer is used in combination with a scatter-search strategy to identify parameters from noisy data in highly nonlinear ODE models of gene networks.
More information can be found here, a tutorial given to the systems biology community http://www.icsb-2007.org/tutorials/index.html#PM6-INVERSE
Computation of nonlinear scalings for reaction diffusion systems
Submitted by Martin Weiser, Zuse Institute Berlin
The discretization error in some reaction diffusion systems can be improved significantly by nonlinear scaling. Optimal scalings can be found by solving 1D optimal control problems with highly nonlinear cost functional. In most cases, IPOPT has been able to solve these problems with some hundred up to 400000 variables perfectly well.
Unsupervised Learning for Exemplar-based Models
Submitted by Sebastian Nowozin, Max-Planck Institute for Biological Cybernetics, Department Empirical Inference, Tübingen
Certain unsupervised learning problems of recovering structure from finite data can be posed as finding a small set of prototypical samples. Common examples include exemplar-based clustering, vector quantization and Gaussian mixture model density estimation. In our approach, Ipopt is used to solve iteratively convex optimization problems for a variety of objective functions and constraint matrices. Treating Ipopt as a black box optimization tool by means of the Ipopt Matlab interface has allowed us to quickly evaluate different objective functions easily. (For details, see http://www.kyb.mpg.de/publications/attachments/ICML2008-Nowozin_%5B0%5D.pdf)
EMSO Process Simulator
Submitted by Edson Cordeiro do Valle, Project Collaborator at Federal University of Rio Grande do Sul, Chemical Engineering Department, Porto Alegre, RS, Brazil
One of the free tools (but not open source) to interact with Ipopt it's the EMSO simulator, a project leaded by Prof. Argimiro Secchi and Phd Rafael Pelegrini Soares at Chemical Eng. Department at Federal Univ. of Rio Grande do Sul ( a South Brazilian University). EMSO is an equation-oriented dynamic and steady-state simulator and optimizer, it uses a high-level object-oriented modeling language. This software provides a set of sparse algebra and automatic differentiation functionalities that evaluate a NLA (Non-Linear Algebraic Equations) system in a fast and efficient way. Some NLP solvers (OPT++, Ipopt and a complex implementation) were interfaced with the software. Ipopt is the fastest optimization solver, since it's fully compatible with EMSO sparse algebra structure. Since EMSO uses an object oriented approach, the code is highly reusable. Although it was designed to chemical eng. problems, it's possible to use it to model any kind of problem. Nowadays, using the simulation and optimization "Kernel", it's possible to solve NLP, parameter estimation and data reconciliation problems. EMSO its a free robust and efficient alternative to AMPL and GAMS. Enjoy EMSO!
RecoVR Water Resources Manager Software for Industry
Submitted by Edson Cordeiro do Valle, Project Manager at VRTech Tecnologias Industriais Ltda, Porto Alegre, RS, Brazil
The software RECOVR is a tool for water and wastewater management and optimiziation in the process industries. RECOVR approaches the problem of mass (water and wastewater) in a systematic way. The water use circuit is modeled is a graphical environment using blocks like any other commercial simulator using its own equipments library, it includes 6 modules:
- Historical Data Bank/Data? Acquisition: It's possible to observe record and audit data such as flowrate, temperature and composition of process streams. The data can be manually entered or acquired for a data bank.
- Reports: It's possible to monitor flowrate, temperature and composition of process streams, dividing them by plant areas and/or time in order to identify the most critical equipments considering water use and wastewater generation.
- Data Reconciliation and Gross Error Detection: This module allow to detect fails in measurement equipments and adjust mass balances.
- Observability and measurement instrument allocation: To estimate unmeasured streams and suggest the allocation of new measurement equipments.
- Simulation: After the data collection and data adjust, it is possible to perform steady-state simulation to evaluate the behavior of water, wastewater and energy circuit.
- Process Integration: After the process validation through simulation it is possible to perform the process integration, where new connections and topology will be suggested in order to minimize water use (promoting water reuse, recycling and reclaim) and wastewater discharge, respecting the constraints given by the user. This module is be based on mathematical programming techniques NLP (Non-linear programaing) and MINLP (mixed integer programming).
RECOVR uses a very efficient system of equation evaluation developed by VRTech, which performs automatic differentiation and supports sparse algebra. Ipopt is used as main optimization routine for data reconciliation, process integration and also for simulation. See more at here.
Solving inverse kinematics of a humanoid robot
Submitted by Ugo Pattacini, Italian Institute of Technology - Robotics, Brain and Cognitive Sciences Dep., Genoa
In the framework of RobotCub project, Ipopt has been profitably adopted within the iKin library to solve the inverse kinematics tasks for the limbs of iCub, the humanoid robotic platform developed at IIT: i.e. given the desired pose to be attained by the end-effector (e.g. the hand of a 7-DOF arm), Ipopt has been employed to find the corresponding joints configuration. Indeed, among all the algorithms traditionally used for dealing with such kind of issue (DLS, CCD, ...), Ipopt turns to be more effective since it already encapsulates the notion of joints constraints and therefore it automatically ensures their compliance. Ipopt has been easily interfaced with iKin code and the observed results demonstrate in many different working conditions that it is a powerful and realiable tool.
ASCEND modelling system
Submitted by John Pye, Solar Thermal Group, School of Engineering, Australian National University. The ASCEND modelling system supports the IPOPT solver (with MUMPS or other dynamically-loaded linear solvers if available). We have implemented auto-differentiation including second derivatives, and a number of test problems have been successfully solved. Details: http://ascendwiki.cheme.cmu.edu/IPOPT
ISE Chemical and Petrochemical Process Simulator
Submitted by Edson Cordeiro do Valle, Project Manager at VRTech Tecnologias Industriais Ltda, Porto Alegre, RS, Brazil ISE is an acronym for Integrated Simulation Environment. It is a software tool for chemical and petrochemical process simulation which provides a user-friendly interface, so one can build complex simulations with just a few clicks in an intuitive way. Built using Java, ISE uses modern technologies for thermodynamic canculations and flowsheet solving. Tutorial videos can be found at VRTech's page. ISE uses Ipopt to calculate some thermodynamic properties and some equipment models for flowsheets simulation. VRTech has also contributed to COIN project with a JNI interface to communicate Java and Ipopt.
Initial point for non linear bayesian regression models
Submitted by Victor de Buen, statistical consultant and software engineer in Bayes Forecast, Madrid, Spain.
We build statistical models of the business of our customers and the markets in which they are working. It is very complex regression models with ARIMA noise, transfer functions, missing data, constraints, a priori information, hierarchical structures, etc.. User can also define arbitrary non linear filters using open source language TOL.
We are using IPOPT to find a plausible starting point to accelerate the convergence of MCMC methods that is a very hard problem, due to we treat with hundreds or thousands of variables and sparse constraints. For now we use it only to find the optimal block main linear regression, conditioned to the rest of Gibbs blocks, but this is achieved by reducing the period of convergence of several thousands of simulations to only a few hundreds or even dozens of iterations.
We are planning to extend the API TolIpopt to calculate optimal bayesian decisions over these kind of models, and also to solve user defined problems.