Release notes

Note

The MATLAB interface to Knitro 12.3 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 libiomp5.so shared library provided in the Knitro lib directory, before starting MATLAB from the command line. For example: export LD_PRELOAD=/path/to/knitro-12.3.0-z-Linux-Intel17-64/lib/libiomp5.so

What’s new in Knitro 12.3 ?

  • Knitro 13.0 introduces updated C#, Fortran, and Java interfaces based on the latest Knitro C callable library API. These updated interfaces exploit all the latest features of Knitro and can offer efficiency improvements, particularly when solving models with quadratic structures (e.g. QPs and QCQPs).

  • The Knitro 13.0 callable library API has been extended to allow re-solving after adding linear structures to a model (e.g. adding new linear constraints or adding linear terms to the objective or existing constraints).

  • Knitro 13.0 offers improvements in memory usage. In some cases the memory used with the default algorithm may be roughly half what it was before.

  • Knitro 13.0 introduces a new value under the bar_linsys option used to control the form of the linear system used in the default barrier/interior-point algorithm. Setting bar_linsys to 3 (ineqs) may generate significant speedups on models where the number of variables is small, but the number of inequality constraints is large.

  • Knitro 13.0 introduces a new user option bar_linsys_storage to control the memory storage for the linear systems used in the default barrier/interior-point algorithm. Setting bar_linsys_storage to 1 (lowmem) will reduce the memory used by Knitro by using the same memory for different linear systems.

  • Knitro 13.0 introduces a new user option linsolver_maxitref to control the maximum number of iterative refinement steps allowed when solving linear systems inside Knitro. Increasing this value may improve numerical stability with some additional overhead cost.

  • Knitro 13.0 offers a new option bfgs_scaling to control the initial scaling strategy when using the BFGS or L-BFGS Hessian approximation. It is recommended to experiment with this option when using the BFGS or L-BFGS Hessian.

  • Knitro 13.0 introduces a new value under the mip_heuristic option. Setting mip_heuristic to 4 (diving) will enable a diving heuristic to search for an integer feasible point.

  • Knitro 13.0 introduces a new auto value for the bar_conic_enable option and makes this the default option value.

  • Knitro 13.0 introduces a new default value of 1e-4 for the mip_integral_gap_rel option.

  • Knitro 13.0 introduces new API functions to allow loading an LP, QP, or QCQP with one function call.

  • Knitro 13.0 introduces new API functions to get the variable types (e.g. continuous or integer), and to retrieve the number of complementarity constraints.

  • Knitro 13.0 improves numerical stability and robustness when using the non-default MKL PARDISO linear solver (linsolver =6).

  • Knitro 13.0 enables default parallelism when using the MKL PARDISO, MA86, or MA97 linear solvers on large models.

  • Knitro 13.0 offers speedups on large models when using the default (interior-point) algorithm.

  • Knitro 13.0 offers speedups on least-squares models.

Bug Fixes in Knitro 12.3.0

  • Fixed issue in the MA97 linear solver (linsolver =7) that could lead to a segfault.

  • Fixed a memory issue in the mixed-integer solvers when applying various cuts that could cause a segfault.

  • Fixed issue that could cause Knitro to segfault when using the default cpuplatform option on some computers with AMD processors.