Release notes


Knitro 11.0 was the last major Knitro release to provide a version for the Windows 32-bit platform. Impacted users are advised to migrate to 64-bit Windows.


The MATLAB interface to Knitro 12.0 (i.e. knitromatlab) supports MATLAB 2018 and newer. To use Knitro with older versions of MATLAB (i.e. pre-2018) on Linux-based systems, it may be necessary to first set the LD_PRELOAD environment variable to point to the shared library provided in the Knitro lib directory, before starting MATLAB from the command line. For example: export LD_PRELOAD=/path/to/knitro-12.0.0-z-Linux-Intel17-64/lib/

What’s new in Knitro 12.0 ?

  • Knitro 12.0 offers a new interface to the Julia language based on the latest Knitro API and the new Julia MathOptInterface (MOI). It can also be used through the JuliaOpt JuMP modeling language, which provides automatic derivatives for nonlinear functions. See Knitro / Julia reference.
  • Knitro 12.0 introduces a new single call Python interface, as an alternative to the existing Knitro Python interface that mimics the Knitro callable library API. This new interface allows the user to directly pass an optimization problem structure to Knitro and solve it in a single call fashion. See Getting started with Python for a quick introduction to Knitro Python and in the Python directory of the Knitro distribution for examples.
  • Knitro 12.0 adds many improvements to the Knitro mixed-integer (MIP/MINLP) branch-and-cut solver. Several new cuts controlled by Knitro user options have been introduced including mixed-integer rounding cuts (mip_mir), zero-half cuts (mip_zerohalf) and clique cuts (mip_clique). In addition, improvements were made to the knapsack cuts implementation. Lastly the Knitro-Tuner, which previously could only be applied to continuous models, has been extended to handle mixed-integer models.
  • Knitro 12.0 offers several enhancements to the Knitro presolver. The presolver has been extended to allow multiple passes through the presolve operations controlled via the new presolve_passes user option. In addition, the level of presolve operations applied is controlled through the new presolve_level user option. Note that the existing presolve user option is only used to enable or disable the Knitro presolver and the presolve option names have changed from “none” (0) and “basic” (1) to “no” (0) and “yes” (1).
  • Knitro 12.0 offers the capability to read and solve optimization models written in MPS (Mathematical Programming System) format. See The Knitro MPS file reader for more information on this topic.
  • Knitro 12.0 offers performance improvements on medium to large-scale SOCP models.
  • Knitro 12.0 offers efficiency and storage/memory improvements in the callable library C API.

Bug Fixes in Knitro 12.0.0

  • Fixed bugs in the mip_knapsack option that could occasionally cause Knitro to segfault when mip_knapsack>0.
  • Fixed a bug detecting convexity of some QCQP models with linear objective functions.
  • Fixed a bug detecting certain quadratic constraints as cone constraints, when the quadratic constraint has repeated elements.