IBM® ILOG® CPLEX® Enterprise Server provides for remote, concurrent, queued, multi-user solving for optimization models and state-of-the-art applications for the full range of planning and scheduling problems, based on the OPL modeling layer.
It is delivered with IBM ILOG CPLEX Optimization Studio V12.6.0 which supports the entire model development process with its integrated development environment, descriptive modeling language and built-in tools.
For a description of CPLEX Optimization Studio, please refer to the readme file in the installation directory.
CPLEX Enterprise Server comprises several components. Each component is located in a subfolder (subdirectory on UNIX/Linux) of the installation location.
CPLEX_Server\server
: the Enterprise Archive (EAR files) that are part of the serverCPLEX_Server\client
: the Java Client API to deploy and undeploy, solve on the server and introspect the solutions.CPLEX_Studio
: the CPLEX Optimization Studio, which is described in the readme file in this folder.Other directories:
license
: license agreement documentsUninstall
: information needed to uninstall the productproperties
: inventory informationCONTENTS
The ability to use the CPLEX distributed MIP algorithm with OPL is included in the fix pack 12.6.0.1. These notes provide the only documentation currently available for this OPL feature.
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 12.6.0.1.
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.
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.
The documentation is available online in the IBM ILOG CPLEX Optimization Studio information center. The information center contains PDF versions of some of the manuals.
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.
For detailed system requirements and platform information, see Detailed System Requirements for IBM ILOG CPLEX Optimization Studio.
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.
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.
On Windows, the default installation location of IBM ILOG CPLEX Enterprise Server is:
C:\Program Files\IBM\ILOG\CPLEX_Enterprise_Server126
During installation you may have selected a different location (<Install_dir>
).
For a description of CPLEX Optimization Studio, please refer to the readme file in the installation directory, which by default is C:\Program Files\IBM\ILOG\CPLEX_Enterprise_Server126\CPLEX_Studio
On AIX, the default installation location of IBM ILOG CPLEX Enterprise Server is:
/opt/IBM/ILOG/CPLEX_Enterprise_Server126
During installation you may have selected a different location (<Install_dir>
).
For a description of CPLEX Optimization Studio, please refer to the readme file in the installation directory, which by default is /opt/IBM/ILOG/CPLEX_Enterprise_Server126/CPLEX_Studio
On Linux, the default installation location of IBM ILOG CPLEX Enterprise Server is:
/opt/ibm/ILOG/CPLEX_Enterprise_Server126
During installation you may have selected a different location (<Install_dir>
).
For a description of CPLEX Optimization Studio, please refer to the readme file in the installation directory, which by default is /opt/ibm/ILOG/CPLEX_Enterprise_Server126/CPLEX_Studio
APAR number | Description |
CPLEX Optimizer | |
RS01481 | The nonconvex MIQP solver may crash when memory is low. |
RS01501 | In some QPs, CPLEX 12.5 and 12.6 do not provide condition number information on the final basis, which inhibits the .sol file writer. |
RS01546 | Version 12.6 of the MATLAB optimization toolbox ignores CPLEX parameter settings that lack a corresponding toolbox parameter. |
RS01551 | Sometimes parallel barrier optimizer is not deterministic. |
RS01555 | C++ and Java APIs do not correctly handle the global nonconvex (MI)QP optimization status of unbounded relaxation. |
RS01578 | The IloCplex.putenv() method in the Java API may not work correctly. |
RS01579 | In the Java and C++ APIs, IloCplex.feasOpt returns a status of unknown, instead of feasible, on feasible MIPs. |
RS01580 | If CPLEX reaches a time limit when solving a QP, a solution quality request involving the basis condition number may cause a crash. |
RS01581 | In the C++ API, IloCplex does not extract the model name. |
RS01582 | Models with massive amounts of symmetry may use large amounts of memory when a user, or CPLEX, invokes aggressive symmetry detection. |
RS01583 | There may be non deterministic behavior in the barrier optimizer on small models, where barrier ordering is trivial. |
RS01587 | A rare core dump occurs for indefinite QPs solved to global optimality. |
RS01588 | A bug introduced in Interactive CPLEX 12.6, in which the set output command, followed by a message channel, creates an infinite loop. |
RS01589 | The 'populate solution limit' is not correctly counted when populate is run after a regular MIP optimization. |
RS01590 | CPLEX may lose lazy constraints in the presence of unbounded node relaxations. |
RS01591 | Problem names longer than 16 characters may cause a crash when passed to the CPLEX constructor in the MATLAB Cplex Class API. |
RS01592 | A rare core dump occurs during branching when you run opportunistic parallel MIP. |
RS01593 | The datacheck parameter fails to detect error conditions in the MATLAB toolbox connector. |
RS01594 | The MATLAB Toolbox API does not correctly process row vectors as input. |
RS01595 | A rare core dump occurs in solution polishing when it is performed in opportunistic parallel mode. |
OPL | |
RS01482 | Incremental changes in an OPL model via the engine APIs are not reflected in the solution. |
RS01505 | Unexpected behavior when you perform comparisons of strings. |
RS01507 | A conflict of identical names in different scopes is not correctly reported. |
RS01515 | OPL using CP Optimizer does not report the syntax error "Decision variable is used in the ranges for all expressions". |
RS01547 | A crash occurs when you call printRelaxation() while using CP Optimizer as the optimization engine. |
RS01548 | CP functions such as append may raise an internal error if they are used, instead of the OPL keyword all , with array slots. |
RS01559 | Slicing on strings with <, >, <=, >= is treated as == . |
RS01565 | Removing a tuple from a tuple set by providing keys does not work. |
RS01566 | Using convertAllIntVars on a submodel that contains only binary variables might not give a continuous model. |
RS01567 | A memory leak in the Java interface IloOplFactory . |
RS01568 | An assertion such as a <= b <= c is not yet implemented. |
RS01571 | In the OPL settings editor, the option "Global optimal solution" is not available for the " Solution target" field. |
RS01576 | Overflow errors in 64-bit .NET samples for Visual Studio 2012. This issue is common to both OPL and CP Optimizer .NET layers. |
CP Optimizer | |
RS01577 | A model cannot be solved correctly when a variable is used in a search phase but not used in the constraints. |
Concert | |
RS01517 | Concert does not process the expression "x * y - linear_expression" correctly. |
APAR number | Description |
CPLEX Optimizer | |
RS01342 | In rare cases, CPLEX crashes when doing strong branching on models with indicator variables and shaky numerics. |
RS01376 | CPXaddcols and CPXnewcols do not properly handle infinite bounds
specified with values larger than CPX_INFBOUND = 1e+20 . |
RS01381 | CPLEX support of non binary bounds on binary variables may cause heuristics applied before root node to provide a solution with non binary values. |
RS01402 | A MILP instance that involved fairly large coefficients where CPLEX returned solution values that violated their lower bound of 0. |
RS01435 | Creating empty IloCplex objects in C++ or Java consumes 4 MB,
causing excess memory consumption in applications with many
IloCplex objects (particularly for small models). |
RS01439 | The Java API should not issue an exception when null pointers are provided for lower bound and upper bound arrays in sensitivity analysis routines. |
RS01441 | Using a branch callback on a continuous model does not call a branch callback. |
RS01443 | In rare cases, presolve may incorrectly relax a constraint. |
RS01445 | CPXrefineconflictext (and API routines that call it) does not
recompute the conflict when called again with new priorities. |
OPL | |
RS01382 | An "oplrun is not responding" error occurs when a null set is passed as input. |
RS01389 | When you call model.end() a crash sometimes occurs. |
RS01390 | A model is not fully generated when a string variable is used for slicing in multi-models. |
RS01396 | An extraction error occurs when a not in constraint is used with a set of strings. |
RS01416 | An aggregation expression sometimes imposes an incorrect bound during linearization. |
RS01444 | When the Access database is updated with string data, the values are not updated, only a few rows are updated. The other rows are null. |
RS01446 | Concert memory corruption due to an internal multiplication by 0. |