**Contents**view

## Description

CPLEX Optimizer provides flexible and high-performance mathematical programming solvers for linear programming, mixed-integer programming, constraint programming, and quadratic constraint programming problems. These solvers include a distributed parallel algorithm for mixed-integer programming to leverage multiple computers to solve challenging problems.

## Setting up the environment

- Loading the
*cplex*module

```
ml optimizer/cplex
or
ml optimizer/cplex/12.8.0
```

- Available version : 22.1.1.0 (limited version) and 12.8.0 (academic version)

## Tutorials

#### Access to the software

- Loading the
*cplex*module - Type in
`cplex`

command line

```
$ ml optimizer/cplex/22.1.1.0
$ cplex
Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer Community Edition 22.1.1.0
with Simplex, Mixed Integer & Barrier Optimizers
5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21
Copyright IBM Corp. 1988, 2022. All Rights Reserved.
Type 'help' for a list of available commands.
Type 'help' followed by a command name for more
information on commands.
CPLEX> help
add add constraints to the problem
baropt solve using barrier algorithm
change change the problem
display display problem, solution, or parameter settings
enter enter a new problem
feasopt find relaxation to an infeasible problem
help provide information on CPLEX commands
mipopt solve a mixed integer program
netopt solve the problem using network method
optimize solve the problem
populate get additional solutions for a mixed integer program
primopt solve using the primal method
quit leave CPLEX
read read problem or advanced start information from a file
set set parameters
tools tools for analysis and debugging of models
tranopt solve using the dual method
write write problem or solution information to a file
xecute execute a command from the operating system
Enter enough characters to uniquely identify commands & options. Commands can be
entered partially (CPLEX will prompt you for further information) or as a whole.
CPLEX> quit
```

#### Launching a job

For launching the job, we need 2 input files in addition to the launch script:

- the file containing the problem to solve
- a
`cplex`

command file

##### Description of the toy example

Minimize – x1 – 2 x2 – 3 x3 with the following constraints :

- x1 + x2 + x3 <= 20
- x1 – 3 x2 + x3 <= 30
- 3 x1 + 2 x2 – x3 >= 100
- x3 – 4 x4 <= 40
- 0 <= x1 <= 40
- x2 >= 10
- 0 <= x3 <= 100
- All other variables are >= 0.

##### File *example.mps* containing the problem

```
NAME
ROWS
N obj
L c1
L c2
G c3
L c4
COLUMNS
x1 obj -1 c1 -1
x1 c2 1 c3 3
x2 obj -2 c1 1
x2 c2 -3 c3 2
x3 obj -3 c1 1
x3 c2 1 c3 -1
x3 c4 1
x4 c4 -4
RHS
rhs c1 20 c2 30
rhs c3 100 c4 40
BOUNDS
UP bnd x1 40
LO bnd x2 10
UP bnd x3 100
ENDATA
```

`cplex`

command file

The following commands ask to find :

- an optimization of the problem described in the
*example.mps*file - display the problem
- display the solution for the 4 variables
*x1*,*x2*,*x3*and*x4* - display the quality of the solution
- then quit
`cplex`

```
read example.mps
optimize
display problem all
display solution variables 1-4
display solution quality
quit
```

##### Script to launch a cplex job

We assume that the script is called *launch_cplex.sh.*

```
#!/bin/sh
#SBATCH --job-name=test_cplex
#SBATCH --partition=normal-amd # submission queue
#SBATCH --time=1:00:00 # 1-1 means one day and one hour
#SBATCH --mem=8G # T-tera, G-giga, M-mega
#SBATCH --cpus-per-task=1
#SBATCH --ntasks-per-node=1
#SBATCH --nodes=1
ml optimizer/cplex
cplex -f mycplexcommands.txt
```

##### Submitting the job

`sbatch launch_cplex.sh`

#### Search for examples

Here is a command to search for other toy examples :

`ml help optimizer/cplex`