Accelerate business decision-making with optimization and data science

## How to build optimization models with IBM Decision Optimization

When you’re trying to make tough decisions about questions that involve an inordinate number of factors, the IBM Decision Optimization product family helps you to capture key components to build a mathematical model of the business situation, giving you the confidence to make better decisions more quickly.

An optimization model is a translation of the key characteristics of the business problem you are trying to solve. The model consists of three elements: the objective function, decision variables and business constraints.

The IBM Decision Optimization product family supports multiple approaches to help you build an optimization model:

## ㅤㅤ ㅤㅤ ㅤㅤ

With IBM ILOG® CPLEX® Optimization Studio, you can use either Optimization Programming Language or one of the application programming interfaces available — like Python, Java™, C, C++ or C# APIs.

With IBM Decision Optimization for IBM Watson® Studio, you can build models using either the Python API or the Optimization Modeling Assistant.

## Optimization Programming Language (OPL)

IBM ILOG CPLEX Optimization Studio provides you with the option to write models using Optimization Programming Language (OPL) in an integrated development environment.

OPL provides a natural mathematical description of optimization models. Expect high-level syntax for mathematical programming models that produces substantially simpler and shorter code than general-purpose programming languages. Help reduce the effort and improve the reliability of application development, upgrades and maintenance. The powerful syntax of OPL supports all expressions needed to model and solve problems using both mathematical programming and constraint programming.

OPL supports mathematical programming models along with constraint programming models. You can define decision variables and decision expressions over index sets to represent choices affected by the variables and expressions. When you use OPL, you can develop, debug, test and tune math programming, constraint programming and constraint-based scheduling models. Another important benefit is the ability to specify constraints, sums and other mathematical operations over index sets.

## OPL features

#### Advanced types for data organization

Define ranges, arrays and sets of strings and numbers. Apply set operations to construct complex index sets. Define tuples, data structures comprising heterogeneous data elements, and sets of tuples, with optional primary and foreign keys. Use tuple slicing (similar to the SQL SELECT operation) to define sparse models that reduce both problem size and data requirements.

#### Support for real or integer variables

Represent decisions involving quantities or amounts using real-number decision variables. Represent discrete choices or indivisible quantities using binary or integer decision variables. Utilize the mixed integer solver with sophisticated branch-and-cut search within IBM ILOG CPLEX Optimizer to solve difficult discrete optimization problems or use IBM ILOG CPLEX CP Optimizer to solve difficult combinatorial problems less suited to mixed-integer optimization algorithms.

#### Model detailed scheduling problems

Make use of OPL’s unique syntax and data structures to define problems in which timing is the fundamental decision. Use interval variables to represent activities, or tasks to be completed. Specify temporal constraints — relationships between the start and end times of the intervals — to represent precedence among activities. Define intensity and cumulative functions to represent resource usage as a function of time and specify resource constraints among intervals.

#### Simplify data management with OPL and Python

Bring the power of Python’s data-handling capabilities to your OPL models. Take advantage of the doopl API to embed OPL models into Python and benefit from the ability to more easily handle and manipulate data, using data structures supported by Python. The doopl API also simplifies optimization workflows that require multiple solves with data changes.

## Build models using APIs

IBM Decision Optimization solutions provide the flexibility to build optimization models using application programming interfaces (APIs). IBM ILOG CPLEX Optimization Studio supports multiple APIs such as C, C++, C#, Java and Python. If you are using IBM Decision Optimization for IBM Watson® Studio, you can create optimization models using Python API.

## Products

#### IBM ILOG CPLEX Optimization Studio

Develop and deploy optimization models quickly and identify the best possible actions that your users should take by employing powerful and robust decision optimization algorithms.

#### IBM Decision Optimization for Watson Studio

Easily combine optimization and machine learning techniques to create innovative solutions on IBM Watson® Studio Local.

#### IBM Decision Optimization Center

Build and deploy end-to-end decision-support applications using a GUI, collaboration tools, application data model support and flexible deployment options.

## Resources

#### Optimization modeling using OPL and Python APIs

Learn how you can use IBM CPLEX Optimization Studio to build optimization models.

#### Build and deploy optimization applications more easily

Get access to a number of interfaces to build and deploy optimization applications using the CPLEX Optimizer and CP Optimizer engines.

#### Build an optimization model for scheduling scarce resources

Use Optimization Modeling Assistant within IBM Decision Optimization for IBM Watson Studio.

## Engage with an expert

**Schedule a one-on-one call**

Get the answers you need from an available IBM expert.