IBM ILOG CPLEX Optimization Studio V12.6.0

IBM® ILOG® CPLEX® Optimization Studio provides the fastest way to build efficient optimization models and state-of-the-art applications for the full range of planning and scheduling problems. With its integrated development environment, descriptive modeling language and built-in tools, and state-of-the-art solvers for both mathematical programming and constraint programming problems, it supports the entire model development and solution process.

CPLEX Optimization Studio comprises several components. Not all components are available on all platforms. Consult the Detailed System Requirements page described below for details. Each component is located in a subfolder (subdirectory on UNIX/Linux) of the installation location. The APIs and connectors for each component are in the component subfolder (subdirectory), for example the MATLAB, Excel, and AMPL connectors for CPLEX are located in the cplex folder (directory).

Other directories:


New in - Using the CPLEX distributed MIP algorithm with OPL

The ability to use the CPLEX distributed MIP algorithm with OPL is included in the fix pack These notes provide the only documentation currently available for this OPL feature.

Using distributed MIP from the OPL IDE

To use the distributed MIP to solve a standalone OPL model, first create a Virtual Machine Configuration (VMC) file to specify the machines that you will use as workers for the distributed computation. The format of the VMC file is described in the CPLEX documentation: VMC file format: virtual machine configuration for distributed parallel optimization.

An example of a VMC file is provided with the distMIP OPL example. You may need to edit that file to indicate where you have installed CPLEX Optimization Studio. Then, from the IDE, link the VMC file to a run configuration by editing the settings (.ops) file of your project.

In the settings editor, go to:
Mathematical Programming / Mixed Integer Programming / General.
and enter the name and path of your CPLEX VMC file.

When you execute the run configuration of your project, OPL loads the specified VMC file into CPLEX. The VMC file indicates that CPLEX must use distributed parallel MIP with the machines specified in the file. Distributed parallel MIP is invoked only if the model to be solved is a MIP.

It is preferable to specify an absolute path to the VMC file in the settings editor. Otherwise, CPLEX may not be able to find your VMC file, depending on how and where the project is executed.

Instead of using a settings file in the IDE, you can specify the VMC file in a JavaScript execute block at the beginning of the model file.

An OPL example, distMIP, is provided in version
To import the distMIP model in the IDE:
File > Import > Example > IBM ILOG OPL Examples > Sorted by Technique > Integer Programming > distMIP

The three run configurations illustrate the various ways in which the VMC file can be specified:
* including it in a settings file
* including it in a JavaScript block
* reading it with a CPLEX method

The only known limitation to the use of distributed MIP in the OPL IDE is the fact that you cannot use the MPI (Message Passing Interface) protocol.

For detailed information about the distributed MIP algorithm, such as how it works and transport protocols, refer to the CPLEX document: Distributed parallel optimization.

Using distributed MIP from the APIs

You can use the distributed MIP from all the OPL APIs (C++, Java, .NET and JavaScript).

Several examples named distMIP are available from the OPL example libraries to show how to use the distributed MIP.

The methods readVMConfig, hasVMConfig, delVMConfig and copyVMConfig are available in C++, Java, .NET (from the CPLEX C++ library, OPL jar and OPL .NET DLL), and in JavaScript.

To make these examples run, only the paths to the VMC file and the path to the CPLEX libraries in these VMC files need to be updated.

To learn how to use the methods, see the CPLEX document: Solving a MIP with distributed parallel optimization.

Note that, to use the MPI transport, an application calling the OPL API must be started with mpirun.

See the User's Manual for CPLEX for information about how to use the MPI transport with distMIP. For example: Transport types for the remote object: MPI.

Release Notes for 12.6.0

Please refer to the release notes for a complete description of improvements and new features. To access the release notes and other documentation:

Information center

The documentation updates for 12.6.0 are also available online in the IBM ILOG CPLEX Optimization Studio information center. The information center contains PDF versions of some of the manuals.

Product support

For support, tips, and product news, see Support home.


Participate in technical discussions in the ILOG Optimization forum on developerWorks. Join the ILOG Optimization community here.

System requirements

For detailed system requirements and platform information, see Detailed System Requirements for IBM ILOG CPLEX Optimization Studio.

Installation Requirements

This fix pack is designed to install on top of an existing installation of IBM ILOG CPLEX Optimization Studio v12.6.0 as an upgrade.

Note for AIX users

The versions of IBM ILOG CPLEX Optimization Studio tuned for Power 7 architecture reside in the subdirectories named power7-32_aix and power7-64_aix in the component directories. The libraries and executable files in these subdirectories operate only on the Power 7 platform. C or C++ applications built with these libraries must use the IBM XL C/C++ for AIX, Version 11.1, or later compilers.

Installation on Windows

On Windows, the default installation location of IBM ILOG CPLEX Optimization Studio is:

C:\Program Files\IBM\ILOG\CPLEX_Studio[edition]126

For a Windows 32-bit installation on a Windows 64-bit platform, the default installation location is:

C:\Program Files (x86)\IBM\ILOG\CPLEX_Studio[edition]126

where [edition] can be:
* Preview Edition
* empty, for the standard commercial edition
During installation you may have selected a different location ([install_dir]).


You can launch the IDE using a Start Menu entry:
Start > All Programs > IBM ILOG > CPLEX Optimization Studio [edition] 12.6.0 > CPLEX Studio IDE

where [edition] can be:
* Preview Edition
* empty, for the standard commercial edition

More information

For more information on the CPLEX feature on the Windows platform, see [install_dir]\cplex\readmeWindows.html.

For more information on the CP Optimizer feature on the Windows platform, see [install_dir]\cpoptimizer\readmeWindows.html.

Installation on UNIX/Linux

The UNIX/Linux installer is an executable file and, to launch an installation, the file should have execute permission and should be executed from the command line. For example, issue the command ./<installname>.bin, where <installname> is the name of the installer. You can give a file execute permission with the command chmod u+x <installname>.bin.

On UNIX, the default installation location of IBM ILOG CPLEX Optimization Studio is:


On Linux, the default installation location of IBM ILOG CPLEX Optimization Studio is:


where [edition] can be:
* Preview Edition
* empty, for the standard commercial edition

During installation you may have selected a different location ([install_dir]).


You can launch the IDE from a Linux terminal.
1. Open a terminal window
2. Change the directory to [install_dir]/opl/oplide
3. Enter the command ./oplide

Or, from any terminal location, type the absolute path:

More information

For more information on the CPLEX feature on UNIX/Linux platforms, see [install_dir]/cplex/readmeUNIX.html.

For more information on the CP Optimizer feature on UNIX/Linux platforms, see [install_dir]/cpoptimizer/readmeUNIX.html.

Silent installation of CPLEX Optimization Studio

Refer to the documentation Silent installation of CPLEX Optimization Studio.

Uninstalling CPLEX Optimization Studio

Refer to the documentation Uninstalling CPLEX Optimization Studio.

Issues addressed in the fix pack version

APAR numberDescription
CPLEX Optimizer
RS01481The nonconvex MIQP solver may crash when memory is low.
RS01501In some QPs, CPLEX 12.5 and 12.6 do not provide condition number information on the final basis, which inhibits the .sol file writer.
RS01546Version 12.6 of the MATLAB optimization toolbox ignores CPLEX parameter settings that lack a corresponding toolbox parameter.
RS01551Sometimes parallel barrier optimizer is not deterministic.
RS01555C++ and Java APIs do not correctly handle the global nonconvex (MI)QP optimization status of unbounded relaxation.
RS01578The IloCplex.putenv() method in the Java API may not work correctly.
RS01579In the Java and C++ APIs, IloCplex.feasOpt returns a status of unknown, instead of feasible, on feasible MIPs.
RS01580If CPLEX reaches a time limit when solving a QP, a solution quality request involving the basis condition number may cause a crash.
RS01581In the C++ API, IloCplex does not extract the model name.
RS01582Models with massive amounts of symmetry may use large amounts of memory when a user, or CPLEX, invokes aggressive symmetry detection.
RS01583There may be non deterministic behavior in the barrier optimizer on small models, where barrier ordering is trivial.
RS01587A rare core dump occurs for indefinite QPs solved to global optimality.
RS01588A bug introduced in Interactive CPLEX 12.6, in which the set output command, followed by a message channel, creates an infinite loop.
RS01589The 'populate solution limit' is not correctly counted when populate is run after a regular MIP optimization.
RS01590CPLEX may lose lazy constraints in the presence of unbounded node relaxations.
RS01591Problem names longer than 16 characters may cause a crash when passed to the CPLEX constructor in the MATLAB Cplex Class API.
RS01592A rare core dump occurs during branching when you run opportunistic parallel MIP.
RS01593The datacheck parameter fails to detect error conditions in the MATLAB toolbox connector.
RS01594The MATLAB Toolbox API does not correctly process row vectors as input.
RS01595A rare core dump occurs in solution polishing when it is performed in opportunistic parallel mode.
RS01482Incremental changes in an OPL model via the engine APIs are not reflected in the solution.
RS01505Unexpected behavior when you perform comparisons of strings.
RS01507A conflict of identical names in different scopes is not correctly reported.
RS01515OPL using CP Optimizer does not report the syntax error "Decision variable is used in the ranges for all expressions".
RS01547A crash occurs when you call printRelaxation() while using CP Optimizer as the optimization engine.
RS01548CP functions such as append may raise an internal error if they are used, instead of the OPL keyword all, with array slots.
RS01559Slicing on strings with <, >, <=, >= is treated as == .
RS01565Removing a tuple from a tuple set by providing keys does not work.
RS01566Using convertAllIntVars on a submodel that contains only binary variables might not give a continuous model.
RS01567A memory leak in the Java interface IloOplFactory.
RS01568An assertion such as a <= b <= c is not yet implemented.
RS01571In the OPL settings editor, the option "Global optimal solution" is not available for the " Solution target" field.
RS01576Overflow errors in 64-bit .NET samples for Visual Studio 2012. This issue is common to both OPL and CP Optimizer .NET layers.
CP Optimizer
RS01577A model cannot be solved correctly when a variable is used in a search phase but not used in the constraints.
RS01517Concert does not process the expression "x * y - linear_expression" correctly.

Issues addressed in version 12.6.0

APAR numberDescription
CPLEX Optimizer
RS01342In rare cases, CPLEX crashes when doing strong branching on models with indicator variables and shaky numerics.
RS01376CPXaddcols and CPXnewcols do not properly handle infinite bounds specified with values larger than CPX_INFBOUND = 1e+20.
RS01381CPLEX support of non binary bounds on binary variables may cause heuristics applied before root node to provide a solution with non binary values.
RS01402A MILP instance that involved fairly large coefficients where CPLEX returned solution values that violated their lower bound of 0.
RS01435Creating empty IloCplex objects in C++ or Java consumes 4 MB, causing excess memory consumption in applications with many IloCplex objects (particularly for small models).
RS01439The Java API should not issue an exception when null pointers are provided for lower bound and upper bound arrays in sensitivity analysis routines.
RS01441Using a branch callback on a continuous model does not call a branch callback.
RS01443In rare cases, presolve may incorrectly relax a constraint.
RS01445CPXrefineconflictext (and API routines that call it) does not recompute the conflict when called again with new priorities.
RS01382An "oplrun is not responding" error occurs when a null set is passed as input.
RS01389When you call model.end() a crash sometimes occurs.
RS01390A model is not fully generated when a string variable is used for slicing in multi-models.
RS01396An extraction error occurs when a not in constraint is used with a set of strings.
RS01416An aggregation expression sometimes imposes an incorrect bound during linearization.
RS01444When the Access database is updated with string data, the values are not updated, only a few rows are updated. The other rows are null.
RS01446Concert memory corruption due to an internal multiplication by 0.