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.

178 CHAPTER 14. PRIMAL FEASIBILITY REPAIR<br />

which is infeasible for any ɛ ≠ 0. Here the infeasibility is caused by a linear dependency in the constraint<br />

matrix and that the right-hand side does not match if ɛ ≠ 0. Observe even if the problem is feasible<br />

then just a tiny perturbation to the right-hand side will make the problem infeasible. <strong>The</strong>refore, even<br />

though the problem can be repaired then a much more robust solution is to avoid problems with linear<br />

dependent constraints. Indeed if a problem contains linear dependencies then the problem is either<br />

infeasible or contains redundant constraints. In the above case any of the equality constraints can be<br />

removed while not changing the set of feasible solutions.<br />

To summarize linear dependencies in the constraints can give rise to infeasible problems and therefore<br />

it is better to avoid them. Note that most network flow models usually is formulated with one linear<br />

dependent constraint.<br />

Next consider the problem<br />

minimize<br />

subject to x 1 − 0.01x 2 = 0<br />

x 2 − 0.01x 3 = 0<br />

x 3 − 0.01x 4 = 0<br />

x 1 ≥ − 1.0e − 9<br />

x 1 ≤ 1.0e − 9<br />

x 4 ≤ − 1.0e − 4<br />

(14.2)<br />

Now the <strong>MOSEK</strong> presolve for the sake of efficiency fix variables (and constraints) that has tight bounds<br />

where tightness is controlled by the parameter dparam.presolve tol x. Since, the bounds<br />

−1.0e − 9 ≤ x 1 ≤ 1.0e − 9<br />

are tight then the <strong>MOSEK</strong> presolve will fix variable x 1 at the mid point between the bounds i.e. at 0.<br />

It easy to see that this implies x 4 = 0 too which leads to the incorrect conclusion that the problem is<br />

infeasible. Observe tiny change of the size 1.0e-9 make the problem switch from feasible to infeasible.<br />

Such a problem is inherently unstable and is hard to solve. We normally call such a problem ill-posed.<br />

In general it is recommended to avoid ill-posed problems, but if that is not possible then one solution<br />

to this issue is is to reduce the parameter to say dparam.presolve tol x to say 1.0e-10. This will at<br />

least make sure that the presolve does not make the wrong conclusion.<br />

14.2 Automatic repair<br />

In this section we will describe the idea behind a method that automatically can repair an infeasible<br />

probem. <strong>The</strong> main idea can be described as follows.<br />

Consider the linear optimization problem with m constraints and n variables<br />

which is assumed to be infeasible.<br />

minimize<br />

c T x + c f<br />

subject to l c ≤ Ax ≤ u c ,<br />

l x ≤ x ≤ u x ,<br />

(14.3)

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

Saved successfully!

Ooh no, something went wrong!