A sparse MPC solver for walking motion generation (old version).
|
This page describes changes in KKT system after removal of inequality constraint from the active set.
Imagine, that we have selected an inequality constraint for removal, then corresponding line and column must be removed from matrix . We can represent this by moving these lines to the end and to the right of the matrix using permutation matrix:
But matrix is not lower triangular. We can transform it using Givens rotation matrices (which, obviously, cancel out):
. . . . .. .. .. .. ... -> remove -> .... < -> Givens -> ... -> Givens -> ... .... line .....< rotation ..... rotation .... ..... ^^^ these elements L must be adjusted
The rotations are performed in the following way:
The Cholesky decomposition is unique: given a positive-definite matrix A, there is only one lower triangular matrix L with strictly positive diagonal entries such that A = L*L'. The algorithm presented above can produce L with negative diagonal entries. If a negative diagonal element is found, the sign of the whole column must be altered after rotation.
All elements of starting from the position corresponding to the last non-zero (diagonal) element of removed row must be updated.
Consider the following situation (based on formulas derived in section 'Update of z'):
Some lines are not important right now and they are marked as 'ignored'. Elements of are computed on demand and there is no need to alter it. must be updated. Vector is not affected by update (see section 'Downdate of Cholesky factor'). Hence the following number stays constant:
After Cholesky factor was updated we get:
The new element of vector z can be computed:
Note, that computation of new elements must be started from the element corresponding to the first changed line of L and continued towards the end of z.