# CPLEX

CPLEX is an optimization solver, for Linear/Quadratic Programming, Mixed Linear/Quadratic Integer Programming. CPLEX is a *de facto* standard solver for solving such problems.

## Downloading and Installing CPLEX

CPLEX is freely available for academics. You can follow this step by step guide to install:

- Log in at: https://www-304.ibm.com/ibm/university/academic/pub/jsps/assetredirector.jsp?asset_id=1070.
- Follow the instructions on the page.
- Download an appropriate version to your system.
- Follow this instruction to install.

### Installing CPLEX on Mac OS X

The instruction includes how to deal with `.bin`

file on Mac OS X:

- Download
`cplex_studio126.osx.bin`

. Place the file in your home directory (`/Users/[Your User Name]`

). Copying and pasting from the Download directory will work fine here. - To
install, open
Terminal.
To
do
this,
click
on
the
magnifying
glass
in
the
top
right
corner of
your
screen
and
type
`Terminal`

and hit enter. - At
the
prompt,
type
in
`/bin/bash ~/cplex_studio126.osx.bin`

and hit enter. Follow all the prompts.

## Using CPLEX Interfaces

### Julia

You can use the Julia Language to work with CPLEX solvers. See this instruction.

### MATLAB

Inside MATLAB, you can directly call CPLEX solvers. See this help. Run MATLAB, and type `pathtool`

. Add the CPLEX MATLAB folder to the path. The folder location in Mac OS X is:

```
/User/[your user name]/Applications/IBM/ILOG/CPLEX_Studio126/cplex/matlab
```

### Other Languages

You can use CPLEX with C++, Java, Python. If you want to use C++ or Java to work with CPLEX, you can also do so. C++ is usually faster and proficiency in C++ is very helpful when you seek a job. It’s your call.

# Exercise Tasks to Complete

After you install, please do the following task. I attached network example files. One for network structure, the other for travel demand. Please solve the min cost network flow problem based on those data.

- Solve the problem as a linear program. (using cplexlp function)
- Solve the problem as an integer program. (using cplexmilp function)

Objectives of this task are:

- To keep your computing environments ready for advanced research works.
- To be familiar with CPLEX solvers.
- To learn how to read Excel files in MATLAB.
- To know how to deal with network data.

## Parameter Settings

The CPLEX solver can be fine tuned by adjusting its parameters. Two steps:

- Find a correct parameter name in the topical list or the list of all parameters.
- Set a value for the parameter and pass it to the solver.

The second step will vary for each programming language. Suppose we want to limit the CPU time of the solver to 3600 seconds. The parameter for this purpose is found here.

### MATLAB

MATLAB uses the same names as in Python. So, the parameter name is `timelimit`

. Do the following:

```
options = cplexoptimset('timelimit', 3600)
x = cplexmilp(f,Aineq,bineq,Aeq,beq,sostype,sosind,soswt,lb,ub,ctype,x0,options)
```

Read this document.

### Java

Read: Setting CPLEX Parameters in Java Revisited.

### Julia

In Julia and the JuMP package, the parameter names are same as in C. So the correct parameter name is `CPX_PARAM_TILIM`

in this case.

```
m = Model(solver=CplexSolver(CPX_PARAM_TILIM=3600))
```

### GAMS

Read this document.

```
Option ResLim = x;
```

Sets the time limit in seconds. The algorithm will terminate and pass on the current solution to GAMS.