CPLEX Optimizer

Description

CPLEX solver from IBM is a high performance solver for linear programming (LP), mixed integer programming (MIP) and some quadratic programming (QP/QCP/MIQP/MIQCP) problems.

Availability

CPLEX is installed on the Kellogg's UNIX server Skew. It can be used interactively, as well as called from C and C++ programs. Our license allows up to 2 simultaneous users.

Vendor Information
IBM Corp.

1 New Orchard Road
Armonk, New York 10504-1722
United States
914-499-1900

Using CPLEX
There are two ways to use CPLEX: either through an interactive command line-based interface, or by calling the CPLEX library from your C or C++ code.

Using the Interactive CPLEX optimizer:
The interactive CPLEX optimizer is invoked by a command cplex on Skew. It allows to enter a model or load it from an external file, try different solution methods, and export the results. You can type help at the CPLEX prompt to get help on commands.

Below is an example of using it to solve a simple mixed-integer linear programming problem with equality and inequality constraints.

1. Create a problem description file toy.lp as follows:

 
MINIMIZE
obj: 5.8 x_1 + 3 x_2

SUBJECT TO
r1: x_1 + 2.1 x_2 = 6
r2: 3 x_2 < 4.2

BOUNDS
x_1 >= 0
x_2 >= 0

INTEGER
x_1

END

2. Type cplex to start the interactive optimizer:

[zzz123@skew]$ cplex
ILOG CPLEX 11.210, licensed to "northwestern-evanston, il", options: e m b q use=2 
 
Welcome to CPLEX Interactive Optimizer 11.2.1
  with Simplex, Mixed Integer & Barrier Optimizers
Copyright (c) ILOG 1997-2008
CPLEX is a registered trademark of ILOG
 
Type 'help' for a list of available commands.
Type 'help' followed by a command name for more
information on commands.

3. Load a problem:


CPLEX> read toy.lp
Problem 'toy.lp' read.
Read time =    0.00 sec.

4. Solve using the default optimizer:


CPLEX> opt
Tried aggregator 1 time.
MIP Presolve eliminated 2 rows and 2 columns.
All rows and columns eliminated.
Presolve time =    0.00 sec.
 
Solution pool: 1 solution saved.
 
MIP - Integer optimal solution:  Objective =  2.6057142857e+01
Solution time =    0.00 sec.  Iterations = 0  Nodes = 0

5. Save results into file results.sol:


CPLEX> write results.sol
Solution pool written to file 'results.sol'.

This saves the solution. You can specify options to save other information, see "help write". The output file is in XML format. Most statistical software has functions to read XML. For example, this function (matlabcentral) provides a wrapper to read CPLEX solution files from within Matlab:


>> read_cplexsol('results.sol')
 
ans =
 
    4.0000
    0.9524

Using interactive CPLEX in batch mode
It is also possible to run the command-line CPLEX in batch mode. To do so, you need to create an input CPLEX command file. For example, to run the previous example, we can create a file toy.cmd as follows:


read toy.lp
opt
write results.sol
y
quit

It can then be executed simply by

 
cat toy.cmd | cplex &

Please note that the command file must end with a "quit" followed by an empty line. Also note the "y" after the "write" command: it is there to confirm overwriting in case the file "results.sol" already exists.

Calling CPLEX from C and C++
CPLEX comes with a large number of examples, located in /usr/local/cplex112/examples on Skew. Various compiler and linker options have to be set properly (see /usr/local/cplex112/readme.html on Skew), so the best way to get started is to to copy one of the examples and modify it to your purposes. Below are the instructions on how to compile the provided examples in C and C++:

1. Copy example files to your home directory

 
mkdir ~/mycplex
cp -r /usr/local/cplex112/examples ~/mycplex
cd ~/mycplex/examples/x86_64_debian4.0_4.1/static_pic

2. Edit the Makefile, changing lines 12 and 13 to the Skew installation directories:

 
CPLEXDIR = /usr/local/cplex112
CONCERTDIR = /usr/local/concert27

3. Compile and run all examples:

 
make execute_c
make execute_cpp

Documentation Installed version
  • Full documentation is available in /usr/local/cplex112/doc on Skew