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
- Using CPLEX Interfaces
- Parameter Settings
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:
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.
Terminaland hit enter.
/bin/bash ~/cplex_studio126.osx.binand hit enter. Follow all the prompts.
Using CPLEX Interfaces
You can use the Julia Language to work with CPLEX solvers. See this instruction.
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
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.
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 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.
Read: Setting CPLEX Parameters in Java Revisited.
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))
Read this document.
Option ResLim = x;
Sets the time limit in seconds. The algorithm will terminate and pass on the current solution to GAMS.