6.4 Setting solver parameters

MOSEK comes with a large number of parameters that allows the user to tune the behavior of the optimizer. The typical settings which can be changed with solver parameters include:

  • choice of the optimizer for linear problems,

  • choice of primal/dual solver,

  • turning presolve on/off,

  • turning heuristics in the mixed-integer optimizer on/off,

  • level of multi-threading,

  • feasibility tolerances,

  • solver termination criteria,

  • behaviour of the license manager,

and more. All parameters have default settings which will be suitable for most typical users.

The API reference contains:

Setting parameters

Each parameter is identified by a unique name and the parameter value should always be passed as a string. Parameters are passed through the argument param in mosekmodel.solve as an array of name-value pairs [name1, value1, name2, value2, ...].

Some parameters can accept symbolic strings or symbolic values from a fixed set. The set of accepted values for every parameter is provided in the API reference.

For example, the following piece of code sets up some parameters before solving a problem.

Listing 6.3 Parameter setting example. Click here to download.
    % Solve with a list of parameters
    model.solve(param = ["MSK_IPAR_LOG", "1", ...                           % Set log level (integer parameter)
                         "MSK_IPAR_CACHE_LICENSE", "MSK_OFF", ...           % Do not keep the license (integer parameter)
                         "MSK_DPAR_INTPNT_CO_TOL_REL_GAP", "1.0e-7" ]);     % Set relative gap tolerance (double parameter)