25.11.2015 Views

The MOSEK Python optimizer API manual Version 7.0 (Revision 141)

Optimizer API for Python - Documentation - Mosek

Optimizer API for Python - Documentation - Mosek

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

136 CHAPTER 11. THE OPTIMIZERS FOR CONTINUOUS PROBLEMS<br />

11.1.1 Presolve<br />

Before an <strong>optimizer</strong> actually performs the optimization the problem is preprocessed using the so-called<br />

presolve. <strong>The</strong> purpose of the presolve is to<br />

• remove redundant constraints,<br />

• eliminate fixed variables,<br />

• remove linear dependencies,<br />

• substitute out (implied) free variables, and<br />

• reduce the size of the optimization problem in general.<br />

After the presolved problem has been optimized the solution is automatically postsolved so that the<br />

returned solution is valid for the original problem. Hence, the presolve is completely transparent. For<br />

further details about the presolve phase, please see [8], [9].<br />

It is possible to fine-tune the behavior of the presolve or to turn it off entirely. If presolve consumes<br />

too much time or memory compared to the reduction in problem size gained it may be disabled. This<br />

is done by setting the parameter iparam.presolve use to presolvemode.off.<br />

<strong>The</strong> two most time-consuming steps of the presolve are<br />

• the eliminator, and<br />

• the linear dependency check.<br />

<strong>The</strong>refore, in some cases it is worthwhile to disable one or both of these.<br />

11.1.1.1 Numerical issues in the presolve<br />

During the presolve the problem is reformulated so that it hopefully solves faster. However, in rare<br />

cases the presolved problem may be harder to solve then the original problem. <strong>The</strong> presolve may also<br />

be infeasible although the orinal problem is not.<br />

If it is suspected that presolved problem is much harder to solve than the original then it is suggested<br />

to first turn the eliminator off by setting the parameter iparam.presolve eliminator use. If that<br />

does not help, then trying to turn presolve off may help.<br />

Since all computations are done in finite prescision then the presolve employs some tolerances when<br />

concluding a variable is fixed or constraint is redundant. If it happens that <strong>MOSEK</strong> incorrectly concludes<br />

a problem is primal or dual infeasible, then it is worthwhile to try to reduce the parameters<br />

dparam.presolve tol x and dparam.presolve tol s. However, if actually help reducing the parameters<br />

then this should be taken as an indication of the problem is badly formulated.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!