Optimization Programming Language

Optimization Programming Language
ParadigmAlgebraic modeling, Constraint programming, Constraint logic
Designed byPascal Van Hentenryck
DeveloperIBM (originally ILOG)
First appeared1998 (1998)
Stable release
22.1.1 (within CPLEX Studio) / December 2022; 3 years ago (2022-12)
Typing disciplineStrong, static
OSWindows, Linux, macOS, AIX
LicenseProprietary
Websitewww.ibm.com/products/ilog-cplex-optimization-studio
Major implementations
IBM ILOG CPLEX Optimization Studio

Optimization Programming Language (OPL) is an algebraic modeling language for mathematical optimization models, which makes the coding easier and shorter than with a general-purpose programming language.

It is part of the CPLEX software package and therefore tailored for the IBM ILOG CPLEX and IBM ILOG CPLEX CP Optimizers. The original author of OPL is Pascal Van Hentenryck.

Characteristics

OPL allows users to define models using high-level mathematical notation. Its primary features include:

Example

The following is a simple OPL model (.mod) for a Knapsack problem:

// Knapsack capacity, provided externally in the data file
int capacity = ...;

// Item index set
range Items = 1..5;

// Item parameters: one value and one weight per item in Items
int value[Items] =  [6, 7, 3, 9, 6];
int weight[Items] = [11, 7, 9, 13, 12];

// Decision variable: 
//   x[i] = 1 if item i is selected
//   x[i] = 0 otherwise
dvar boolean x[Items];

// obj: maximize total value of selected items
maximize obj: sum(i in Items) value[i] * x[i];

subject to {
  // total weight of selected items cannot exceed capacity
  sum(i in Items) weight[i] * x[i] <= capacity;
}

The associated data (.dat) file is

capacity = 10

Integration

While OPL is typically used within the CPLEX Studio IDE, it can also be deployed in production environments. IBM provides APIs (such as the Concert Technology) that allow OPL models to be called from Java, C++, .NET, and Python.

See also

References

  1. ↑ Kevin Ruland (1999). "The OPL Optimization Programming Language". INFORMS Journal on Applied Analytics. 29 (5): 148–149. ISSN 0092-2102. Wikidata Q124605115. {{Cite Q}}: Missing first/last names in Wikidata for Kevin Ruland (help)

Further reading