Linear complementarity problem

This is an old revision of this page, as edited by Kiefer.Wolfowitz (talk | contribs) at 23:55, 22 March 2011 (Relation to quadratic programming: <ref name="Todd" > {{cite journal|last=Todd|first=Michael J.|authorlink=Michael J. Todd (mathematician)|title=Linear and quadratic programming in oriented matroids|journal=Journal of Combinatorial Theory|s). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In mathematical optimization theory, the linear complementarity problem (LCP) arises frequently in computational mechanics and encompasses the well-known quadratic programming as a special case.

Formulation

Given a real matrix M and vector q, the linear complementarity problem seeks vectors z and w which satisfy the following constraints:

  •  
  •   (that is, each component of these two vectors is non-negative)
  •   for all i. (The complementarity condition)

A sufficient condition for existence and uniqueness of a solution to this problem is that M be symmetric positive-definite.

The vector   is a slack variable, and so is generally discarded after   is found. As such, the problem can also be formulated as:

  •  
  •  
  •   (the complementarity condition)

Relation to quadratic programming

According to the Karush–Kuhn–Tucker conditions, finding a solution to the linear complementarity problem is equivalent to minimizing the quadratic function

 

subject to the constraints

 
 

Because these constraints ensure that f is always non-negative, it attains its minimum of 0 at z if and only if z solves the linear complementarity problem.

If M is positive definite, any algorithm for solving (convex) QPs can of course be used to solve the LCP. However, there also exist more efficient, specialized algorithms, such as Lemke's algorithm and Dantzig's algorithm.

Also, a quadratic programming problem stated as minimize   subject to   as well as  

is the same as solving the LCP with

  •  
  •  

This is because the Karush-Kuhn-Tucker conditions of the QP problem can be written as:

  •  
  •  
  •  
  •  


...being   the multipliers on the non-negativity constraints,  the multipliers on the inequality constraints, and   the slack variables for the inequality constraints. The fourth condition derives from the complementarity of each group of variables ( ) with its set of KKT multipliers ( ).

In that case,

 
 

If the non-negativity constraint on the   is relaxed, the dimensionality of the LCP problem can be reduced to the number of the inequalities, as long as   is non-singular (which is guaranteed if it is positive definite). The multipliers   are no longer present, and the first KKT conditions can be rewritten as:

  •  

or:

 

pre-multiplying the two sides by   and subtracting   we obtain:

 

The left side, due to the second KKT condition, is  . Substituting and reordering:

 

Calling now   and   we have an LCP, due to the relation of complementarity between the slack variables   and their multipliers  . Once we solve it, we may obtain the value of   from   through the first KKT condition.


Finally, it is also possible to handle additional equality constraints:

 

This introduces a vector of Lagrange multipliers  , with the same dimension as  .

It is easy to verify that the   and   for the LCP system   are now expressed as:

 
 

From   we can now recover the values of both   and the multiplier of equalities  :

 


In fact, most QP solvers work on the LCP formulation, including the interior point method, principal / complementarity pivoting and active set methods. LCP problems can be solved by the criss-cross algorithm, even when they are formulated abstractly using oriented-matroid theory.[1]

See also

References

  • Murty, K. G. (1988). Linear complementarity, linear and nonlinear programming. Sigma Series in Applied Mathematics. Vol. 3. Berlin: Heldermann Verlag. pp. xlviii+629 pp. ISBN 3-88538-403-5. (Available for download at the website of Professor Katta G. Murty.) MR 0949214

Further reading

  • LCPSolve — A simple procedure in GAUSS to solve a linear complementarity problem
  • LCPSolve.py — A Python/NumPy implementation of LCPSolve is part of OpenOpt since its release 0.32


  1. ^ Todd, Michael J. (1985). "Linear and quadratic programming in oriented matroids". Journal of Combinatorial Theory. Series B. 39 (2): 105–133. doi:10.1016/0095-8956(85)90042-5. MR 0811116. {{cite journal}}: Invalid |ref=harv (help)