2 Major changes

Specific information regarding particular APIs, parameters and portability of code from version 9 can be found in the section Interface changes towards the end of the respective manual. This section lists general changes throughout MOSEK.

2.1 Release notes for 10.1

2.1.1 New features

Platform support

  • Introduce Julia and Rust as officially supported Optimizer API interfaces with full documentation.

  • Introduce support for Python 3.11.

  • Introduce the native M1 MOSEK Optimization Toolbox for the native beta M1 (Apple Silicon) release of MATLAB.

Remote optimization

  • Released OptServerLight - a minimal, easy to install, stateless version of OptServer on all major platforms.

Mixed-integer optimizer

  • Branch variable selection has been significantly improved. By default the solver automatically selects the best variable selection method and adjusts work limits related to strong branching based on problem characteristics. The variable selection method can be controlled with the parameter MSK_IPAR_MIO_VAR_SELECTION.

  • Knapsack cover cuts are now enabled by default.

  • Conflict analysis based on dual ray analysis has been added. This can be controlled with the parameter MSK_IPAR_MIO_DUAL_RAY_ANALYSIS_LEVEL.

2.1.2 Removed features

  • AMPL support has been removed from the command line tool, since a new interface has been made avialble from AMPL Inc. Contact support in case this give rise to questions.

2.2 Release notes for 10.0

2.2.1 New features

Platform support

  • Introduced native support for Apple Silicon M1 osxaarch64.

  • Improved support and introduced multithreading for Linux ARM 64bit linuxaarch64.

Optimizer

  • Introduced new cone types: generalized power cone (primal and dual), geometric mean cone (primal and dual) and the cone of vectorized lower-triangular parts of semidefinite matrices.

Presolve

  • Presolve has been improved significantly for conic problems.

Interior-point Optimizer

  • Improved performance for large-scale linear problems.

  • Significantly improved performance when running on recent AMD CPUs.

  • Significantly improved multithreaded performance for a class of SDPs.

Mixed-integer Optimizer

  • (Optimizer API and Fusion). Introduced disjunctive constraints (DJC), a language for writing constraints of the form \(A_1\ \mathrm{OR}\ A_2\ \mathrm{OR} \ldots \mathrm{OR}\ A_k\) where \(A_i\) are ordinary linear equations or inequalities.

  • Improved cutting plane separation; in particular, implied bound cuts, controllable with the parameter MSK_IPAR_MIO_CUT_IMPLIED_BOUND, are used by default.

  • Improved presolve, in particular probing and the aggregator. The latter can be controled with the new parameter MSK_IPAR_MIO_PRESOLVE_AGGREGATOR_USE.

  • Introduced symmetry detection and exploitation, controllable with the parameter MSK_IPAR_MIO_SYMMETRY_LEVEL.

  • Introduced reformulation methods for MIQCQO problems, controllable with the parameter MSK_IPAR_MIO_QCQO_REFORMULATION_METHOD. This allows the solution of non-convex MIQCQO problems that are amenable to such a reformulation.

  • Introduced parameters MSK_IPAR_MIO_NUMERICAL_EMPHASIS_LEVEL and MSK_IPAR_MIO_MEMORY_EMPHASIS_LEVEL that may be used to reduce numerical and memory issues, respectively.

  • Distinction between complete and partial initial user solutions, the exploitation of the latter being controllable with the parameter MSK_IPAR_MIO_CONSTRUCT_SOL.

Multithreading

  • Switch from Cilk to the oneTBB library for multithreading in the interior-point optimizer. The reason is Cilk has been deprecated in the Intel C compiler tool chain. Moreover, compared to Cilk oneTBB allows fine grained control of the number of threads employed in each optimization.

  • Introduce parallel optimization of a number of tasks in the Optimizer API (optimizebatch) and Fusion (solveBatch).

  • Previously missing support for multithreading has been enabled on the linuxaarch64 (Linux ARM64) platform.

Licensing

  • Updated FLEXlm to version 11.18.3. Upgrade of floating license servers is required to use MOSEK 10 clients.

  • License server available for all platforms.

Interface

  • (Optimizer API). Introduced affine conic constraints (ACC) as a preferred method of expressing conic problems. An affine conic constraints allows the user to directly write \(Fx+g\in \K\) without introducing slack variables.

  • (Optimizer API). Introduced the possibility to create tasks without an environment.

  • (Optimizer API, Python, Java, .NET). Methods can return arrays and tuples instead of taking them as arguments.

  • (Fusion). Allow more flexible naming in Fusion.

I/O

  • Faster I/O across all file formats.

  • Fixed interpretation of integer keyword in LP files.

  • The PTF format replaces the OPF format as a read/write human-readable file format for conic problems, supporting also semidefinite variables.

  • (Optimizer API and Fusion) Allow writing data files to streams instead of files.

2.2.2 Changes compared to version 9

  • The function computesparsecholesky has changed API: the argument previously indicating whether to use multiple threads or not is now an integer denoting the number of threads to use, with 0 meaning that MOSEK makes the choice.

2.2.3 Removed features

  • Support for Python 2.7 on all platforms.

  • Support for Java on Windows 32 bit.

  • Support for all versions of Python on Windows 32 bit.

2.2.4 Deprecated features

  • Conic constraints restricted to \(x\in\K\) for a variable \(x\) are deprecated as a method of representing conic problems in favor of affine conic constraints (ACC) of the form \(Fx+g\in\K\). This affects mainly the Optimizer API, in a minor degree the Optimization Toolbox for MATLAB and Rmosek, and does not affect Fusion where this language was already used.

  • The OPF file format for conic problems is deprecated in favor of PTF.

  • It is recommended to move away from Windows 32 bit platform.