Developer(s) | IBM |
---|---|
Stable release | |
Type | Technical computing |
License | Proprietary |
Website | www.ibm.com/products/ilog-cplex-optimization-studio |
IBM ILOG CPLEX Optimization Studio (often informally referred to simply as CPLEX) is an optimization software package. In 2004, the work on CPLEX earned the first INFORMS Impact Prize.
- Using a configuration with 439 qubits, the system performed 3,600 times as fast as CPLEX, the best algorithm on the conventional machine, solving problems with 100 or more variables in half a second compared with half an hour. The results are presented at the Computing Frontiers 2013 conference.
- CreatingtheEnvironment: IloEnv 5/32 The class IloEnvconstructs a CPLEX environment. The environment is the first object created in an application. To create an environment named env, you do this: IloEnv env; The environment object needs to be available to the constructor of all other Concert Technology classes IloEnvis a handle class: variable envis a pointer to an implementation.
MATLAB ® OPTIMIZATION - TOMLAB The TOMLAB ® Optimization Environment with its powerful optimization toolboxes is a optimization, optimal control and modeling platform for solving applied optimization problems in MATLAB. CPLEX comes in various forms to meet a wide range of users' needs: v The CPLEX Interactive Optimizer is an executable program that can read a problem interactively or from files in certain standard formats, solve the problem, and deliver the solution interactively or into text files.
History[edit]
The CPLEX Optimizer was named for the simplex method as implemented in the C programming language, although today it also supports other types of mathematical optimization and offers interfaces other than C. It was originally developed by Robert E. Bixby and sold commercially from 1988 by CPLEX Optimization Inc. This was acquired by ILOG in 1997 and ILOG was subsequently acquired by IBM in January 2009.[2] CPLEX continues to be actively developed by IBM.
Features[edit]
The IBM ILOG CPLEX Optimizer solves integer programming problems, very large[3]linear programming problems using either primal or dual variants of the simplex method or the barrier interior point method, convex and non-convex quadratic programming problems, and convex quadratically constrained problems (solved via second-order cone programming, or SOCP).
The CPLEX Optimizer has a modeling layer called Concert that provides interfaces to the C++, C#, and Java languages. There is a Python language interface based on the C interface. Additionally, connectors to Microsoft Excel and MATLAB are provided. Finally, a stand-alone Interactive Optimizer executable is provided for debugging and other purposes.
The CPLEX Optimizer is accessible through independent modeling systems such as AIMMS, AMPL, GAMS, OptimJ and TOMLAB. In addition to that AMPL provides an interface to the CPLEX CP Optimizer.
The full IBM ILOG CPLEX Optimization Studio consists of the CPLEX Optimizer for mathematical programming, the CP Optimizer for constraint programming,[4] the Optimization Programming Language (OPL), and a tightly integrated IDE.
Cplex Solver
Release History[edit]
Prior to IBM acquiring ILOG, the CPLEX team published a release history of CPLEX. [5] This has been updated and replicated here for posterity.
Version | Release Date | Key Features |
---|---|---|
20.1 | December, 2020 | MIP performance improvements, new 'emphasis mip 5' mode, etc. [6] |
12.10 | December, 2019 | MIP performance improvements and the addition of a generic branching callback to the other generic callbacks introduced in version 12.8. |
12.9 | March, 2019 | Direct support for multiobjective optimization, callback functionality improvement. |
12.8 | December, 2017 | Generic callback, API recorder to facilitate debugging, subMIP control parameters, Download and Go offering. |
12.7 | November, 2016 | Automated Benders decomposition, modeling assistance tool, runseeds command to better assess performance variability. |
12.6.2 | June, 2015 | Performance improvements (mainly for SOCP, MISOCP, non-convex QP), support for cloud based optimization. |
12.6 | December, 2013 | Support for nonconvex QPs and MIQPs, distributed parallel MIP and more parallelism at the root node for MIPs. |
12.5 | October, 2012 | MIP performance improvements, random seed parameter to address performance variability, remote object, duals for QCPs, deterministic tuning tool. |
12.4 | November, 2011 | Deterministic time limit support, duals for SOCPs, quadratic expression API in Concert, performance improvements across all algorithms, but especially MIP. |
12.3 | June, 2011 | Support for large nonzero counts that require 64 bit indexing, local optima for non-convex QP, and globalization. |
12.2 | June, 2010 | More parallelism at the root node, deterministic parallel concurrent LP optimization, along with some additional barrier performance improvements and additional tools for diagnosing ill conditioned basis matrices in MIPs. |
12.0 | April, 2009 | The first version after IBM acquired ILOG. Includes connectors for Python, MATLAB and Excel. Deterministic parallel barrier is also included. |
11.0 | October, 2007 | Breakthrough performance gains for mixed integer programming (MIP) models and enhanced parallel MIP optimization. The MIP solution pool feature and the performance tuning utility are introduced. |
10.0 | January, 2006 | Performance improvements in the primal simplex and barrier methods, as well as the MIP optimizer. Indicator constraints and solution polishing heuristics are introduced and improvements to infeasibility analysis are made. |
9.0 | December, 2003 | Performance improvements in primal and dual simplex methods and the MIP optimizer. It includes ILOG Concert Technology for .NET users and support for quadratically constrained programs. |
8.0 | July, 2002 | MIP performance improvements and support for mixed integer quadratic programs. |
7.5 | December, 2001 | ILOG Concert Technology for Java users. |
7.0 | October, 2000 | ILOG Concert Technology for C++ users. |
6.5 | March, 1999 | Significant performance improvements in primal and dual simplex methods, and ILOG CPLEX Mixed Integer Optimizer. |
6.0 | April, 1998 | Significant performance improvements in primal and dual simplex methods, and CPLEX Barrier Optimizer. |
5.0 | September, 1997 | New memory model for easy C++ integration. |
4.0.5 | March, 1996 | Parallel CPLEX Mixed Integer Solver is introduced. |
4.0 | December, 1995 | Redesigned advanced programming interface (API) to allow thread-safe applications. |
3.0.8 | March, 1995 | Parallel CPLEX Barrier Solver is introduced. |
3.0 | April, 1994 | CPLEX Barrier Solver is introduced. |
2.1 | March, 1993 | Introduction of CPLEX Presolve algorithms. |
2.0 | April, 1992 | Performance improvements. |
1.2 | 1991 | Support for the dual simplex method and CPLEX Mixed Integer Optimizer. |
1.0 | 1988 | Primal Simplex Method |
See also[edit]

References[edit]
- ^'CPLEX Optimization Studio 20.1 is available'.
- ^IBM Completes Acquisition of ILOG, 6 Jan 2009, retrieved 24 June 2020
- ^Mittelmann, H. D. (10 July 2007), 'Recent Benchmarks of Optimization Software', 22nd European Conference on Operational Research, EURO XXII Prague, Czech Republic: Dept of Math and Stats Arizona State University
- ^Laborie P, Rogerie J, Shaw P, Vilim P (2018). 'IBM ILOG CP optimizer for scheduling'. Constraints. 23 (2): 210–250. doi:10.1007/s10601-018-9281-x.
- ^'CPLEX History'. CPLEX History as published by ILOG. Archived from the original on 13 April 2009. Retrieved 24 June 2020.CS1 maint: discouraged parameter (link)
- ^'CPLEX 20.1 Release Notes'. Retrieved 4 March 2021.CS1 maint: discouraged parameter (link)
External links[edit]
OMPR (Optimization Modeling Package) is a DSL to model and solve Mixed Integer Linear Programs. It is inspired by the excellent Jump project in Julia.
Qube laptops & desktops driver download for windows. Here are some problems you could solve with this package:
- What is the cost minimal way to visit a set of clients and return home afterwards?
- What is the optimal conference time table subject to certain constraints (e.g. availability of a projector)?
The Wikipedia article gives a good starting point if you would like to learn more about the topic.
I am always happy to get bug reports or feedback.
Install
CRAN
Development version
To install the current development version use devtools:
Available solver bindings
Package | Description | Build Linux | Build Windows | Test coverage |
---|---|---|---|---|
ompr.roi | Bindings to ROI (GLPK, Symphony, CPLEX etc.) |
A simple example:
API
These functions currently form the public API. More detailed docs can be found in the package function docs or on the website
DSL
MIPModel()
create an empty mixed integer linear model (the old way)MILPModel()
create an empty mixed integer linear model (an alternative way; experimental, especially suitable for large models)add_variable()
adds variables to a modelset_objective()
sets the objective function of a modelset_bounds()
sets bounds of variablesadd_constraint()
add constraintssolve_model()
solves a model with a given solverget_solution()
returns the column solution (primal or dual) of a solved model for a given variable or group of variablesget_row_duals()
returns the row duals of a solution (only if it is an LP)get_column_duals()
returns the column duals of a solution (only if it is an LP)
Backends
There are currently two backends. A backend is the function that initializes an empty model.
MIPModel()
is the standard MILP ModelMILPModel()
is another backend specifically optimized for linear models and is about 1000 times faster thanMIPModel()
. It has slightly different semantics, as it is vectorized. Currently experimental.
Solver

Solvers are in different packages. ompr.ROI
uses the ROI package which offers support for all kinds of solvers.
with_ROI(solver = 'glpk')
solve the model with GLPK. InstallROI.plugin.glpk
with_ROI(solver = 'symphony')
solve the model with Symphony. InstallROI.plugin.symphony
with_ROI(solver = 'cplex')
solve the model with CPLEX. InstallROI.plugin.cplex
- … See the ROI package for more plugins.
Further Examples
Please take a look at the docs for bigger examples.
Knapsack
Bin Packing
An example of a more difficult model solved by symphony.
License
Currently GPL.
Cplex Mixed Integer Programming
Contributing
Please post an issue first before sending a PR.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Related Projects

- CVXR - an excellent package for “object-oriented modeling language for convex optimization”. LP/MIP is a special case.
- ROML follows a similiar approach, but it seems the package is still under initial development.
