Knitro
Description
The Artelys Knitro Solver is a plug-in Solver Engine that extends Analytic Solver Platform, Risk Solver Platform, Premium Solver Platform or Solver SDK Platform to solve nonlinear optimization problems of virtually unlimited size. The solver has plugins for MATLAB, R, Python, C/C++, and Fortran.
For more information, please visit https://www.solver.com/artelys-knitro-solver-engine
Setting up the Knitro environment
Knitro is available on the Grace and FASTER clusters.
Before using Knitro, you need to set up the environment. To do this, load the Knitro module
[NetID@cluster ~]$
module load Knitro/13.2
Using Knitro
As mentioned, Knitro has bindings for MATLAB, R, Python, C/C++, and Fortran. To use Knitro with any of these, you need to load the appropriate module (e.g. Matlab, R) in addition to the Knitro module
MATLAB
To use Knitro with MATLAB, load both modules first:
module load Knitro/13.2
module load Matlab
Loading the Knitro module will set the $MATLABPATH to the directory containing the Knitro mex files and interfaces. After loading the modules you can call the Knitro solver like any regular MATLAB function. The $MATLABROOT directory also contains a sample Knitro options file and example MATLAB scripts that use the Knitro solver.
R
To use Knitro with R, load both modules first:
module load Knitro/13.2
module load R
NOTE: Instead of loading the default R module it's recommended to load a version specific R version (e.g. R/3.3.2-iomkl-2017A-Python-2.7.12-default-mt). Alternatively, you can also load the R_tamu module. Knitro will work with any R or R_tamu version.
The Knitro module will append the Knitro package directory to the R environmental variable $R_LIBS_USER. Loading the Knitro package can be done using the R library() function
For some example R scripts that use the Knitro solver, see directory ${KNITROEXAMPLES}/R
Python
To use Knitro with Python, load both modules first:
module load Knitro/13.2
module load Python/version
NOTE: Knitro will work with any Python version (2.7.xx as well as 3.xx) and toolchain combination.
The Knitro module will set the environmental variable PYTHONPATH to include the Knitro Python directory. The Knitro solver can be accessed from any Python script. For some example Python scripts that use the Knitro solver, see directory ${KNITROEXAMPLES}/Python
C/C++ and Fortran
To use Knitro inside your own C/C++, or Fortran code, load Knitro and the preferred toolchain first:
module load Knitro/13.2
module load intel/2020b
NOTE: The toolchain used above is just an example. Knitro will work with any toolchain (e.g. Intel, GNU).
The Knitro module will set the environmental variables CPATH for the include files, LIBRARY_PATH for the compile time library paths, and LD_LIBRARY_PATH for the runtime library paths.
Directories \${KNITROEXAMPLES}/C, \${KNITROEXAMPLES}/C++, and \${KNITROEXAMPLES} /Fortran contain example programs for C,C++, and Fortran respectively. The directories also contain a Makefile, explaining how to compile the examples.
Acknowledgement
The license for Knitro has been purchased by the Department of Economics. We are thankful for their contribution and for allowing access to all HPRC users.