# 7.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,
• 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. There are three types of parameters depending on the values they take:

There are also parameter setting functions which operate fully on symbolic strings containing command-line style names of parameters and their values. See the example below. The optimizer will try to convert the given argument to the exact expected type, and will error if that fails.

If an incorrect value is provided then the parameter is left unchanged.

For example, the following piece of code sets up parameters which choose and tune the interior point optimizer before solving a problem.

Listing 15 Parameter setting example. Click here to download.
      // Set log level (integer parameter)
// Select interior-point optimizer... (integer parameter)
// ... without basis identification (integer parameter)
// Set relative gap tolerance (double parameter)

// The same using explicit string names
res = MSK_putparam     (task, "MSK_DPAR_INTPNT_CO_TOL_REL_GAP", "1.0e-7");

// Incorrect value
res = MSK_putdouparam(task, MSK_DPAR_INTPNT_CO_TOL_REL_GAP,  -1.0 );
if (res != MSK_RES_OK)
printf("Wrong parameter value\n");


The functions MSK_getintparam, MSK_getdouparam, MSK_getstrparam can be used to inspect the current value of a parameter, for example:
      res = MSK_getdouparam(task, MSK_DPAR_INTPNT_CO_TOL_REL_GAP, &param);