Thursday, September 3, 2020

Installing Rcplex and cplexAPI

I've previously mentioned solving MIP models in R, using CPLEX. In one post [1], I used the OMPR package, which provides a domain specific language for model construction. OMPR uses the ROI package, and in particular the ROI.plugin.cplex package, to communicate with CPLEX. That, in turn, uses the Rcplex package. In another post [2], I used Rcplex directly. Meanwhile, there is still another package, cplexAPI, that provides a low-level API to CPLEX.

Both Rcplex and cplexAPI will install against CPLEX Studio 12.8 and earlier, but neither one installs with CPLEX Studio 12.9 or 12.10. Fortunately, IBM's Daniel Junglas was able to hack solutions for both of them. I'll spell out the steps I used to get Rcplex working with CPLEX 12.10. You can find the solutions for both in the responses to this question on the IBM Decision Optimization community site. Version information for what follows is: Linux Mint 19.3; CPLEX Studio 12.10; R 3.6.3; and Rcplex 0.3-3. Hopefully essentially the same hack works with Windows.

1. Download Rcplex_0.3-3.tar.gz, put it someplace harmless (the Downloads folder in my case, but /tmp would be fine) and expand it, producing a folder named Rcplex.
2. Go to the Rcplex folder and open the 'configure' file in a text editor (one you would use for plain text files).
3. Line 1548 should read as follows:
CPLEX_LIBS="-L${CPLEXLIBDIR} ${AWK} 'BEGIN {FS = " = "} /^CLNFLAGS/ {print $2}'${CPLEX_MAKEFILE}"
.
Replace it with
CPLEX_LIBS="-L${CPLEXLIBDIR} ${AWK} 'BEGIN {FS = " = "} /^CLNFLAGS/ {print $2}'${CPLEX_MAKEFILE} | sed -e 's,\\$(CPLEXLIB),cplex,'"
.
Save the modified file.
4. Open a terminal in the parent directory of the Rcplex folder and run the following command:
R CMD INSTALL --configure-args="--with-cplex-dir=.../CPLEX_Studio1210/cplex/" ./Rcplex
.
Adjust the file path (particularly the ...) so that it points to the 'cplex' directory in your CPLEX Studio installation (the one that has subdirectories named "bin", "examples", "include" etc.).
5. Assuming there were no error messages during installation, you should be good to go.