17 Interface changes

The section shows interface-specific changes to the MOSEK Fusion API for C++ in version 9.3 compared to version 8. See the release notes for general changes and new features of the MOSEK Optimization Suite.

17.1 Backwards compatibility

Compared to version 8 there is a number of small changes in the Fusion API. Most of them should not affect standard applications of Fusion and very few should cause compilation errors.

  • Parameters. Users who set parameters to tune the performance and numerical properties of the solver (termination criteria, tolerances, solving primal or dual, presolve etc.) are recommended to reevaluate such tuning. It may be that other, or default, parameter settings will be more beneficial in the current version. The hints in Sec. 9 (Debugging Tutorials) may be useful for some cases.

  • Remove all Near problem and solution statuses i.e. SolutionStatus.NearOptimal, SolutionStatus.NearCertificate, AccSolutionStatus.NearOptimal, etc. See Sec. 13.3.3 (Adjusting optimality criteria).

  • Some algebraic operators are more strict when it comes to exactly matching shapes, especially regarding shapes such as \(1\times n\), \(n\times 1\) and \(n\). The same applies to matching variable/expression and domain shapes. In some cases it may be necessary to explicitly reshape using the method Variable.reshape or LinearDomain.withShape.

  • All shapes are specified with ordinary arrays instead of objects of class Set. The static methods of the class Set produce arrays as shape specifications.

  • Replace shape() with getShape() and size() with getSize() in most places.

  • Remove the option in Expr.sum to sum over a range of dimensions in a multidimensional expression.

  • Remove the method Constraint.add and introduce Constraint.update (see Sec. 7.10 (Problem Modification and Reoptimization)).

  • Rename QConeDomain to ConeDomain.

  • Variable now extends Expression, so the number of method prototypes is reduced in some cases. A variable can be used everywhere an expression can.

  • Expressions are evaluated lazily only when used in a constraint.

  • Semidefinite variables. The preferred ways to declare semidefinite variables are:

        M->variable(Domain::inPSDCone(3));         // A 3x3 PSD variable
        M->variable(Domain::inPSDCone(3, 100));    // One hundred 3x3 PSD variables
                                                   // arranged in shape [100, 3, 3]

17.2 Parameters



  • dataTolAij

  • intpntNlMeritBal

  • intpntNlTolDfeas

  • intpntNlTolMuRed

  • intpntNlTolNearRel

  • intpntNlTolPfeas

  • intpntNlTolRelGap

  • intpntNlTolRelStep

  • mioDisableTermTime

  • mioNearTolAbsGap

  • mioNearTolRelGap

  • mioConstructSol

  • mioMtUserCb

  • opfMaxTermsPerLine

  • readDataCompressed

  • readDataFormat

  • writeDataCompressed

  • writeDataFormat

17.3 Constants



  • xml

  • mioHeuristicTime

  • mioOptimizerTime

  • mioConstructNumRoundings

  • mioInitialSolution

  • mioNearAbsgapSatisfied

  • mioNearRelgapSatisfied

  • mioSimMaxiterSetbacks

  • hybrid

  • worst

  • geco

  • nearDualFeas

  • nearPrimAndDualFeas

  • nearPrimFeas

  • optimalPartition

  • nearDualFeas

  • nearDualInfeasCer

  • nearIntegerOptimal

  • nearOptimal

  • nearPrimAndDualFeas

  • nearPrimFeas

  • nearPrimInfeasCer