Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
|
#include <rank_one_update.h>
Public Member Functions | |
RankOneUpdateElementaryMatrix (const CompactSparseMatrix *storage, ColIndex u_index, ColIndex v_index, Fractional u_dot_v) | |
bool | IsSingular () const |
void | RightSolve (DenseColumn *x) const |
void | RightSolveWithNonZeros (ScatteredColumn *x) const |
void | LeftSolve (DenseRow *y) const |
void | LeftSolveWithNonZeros (ScatteredRow *y) const |
void | RightMultiply (DenseColumn *x) const |
Computes T.x for a given column vector. | |
void | LeftMultiply (DenseRow *y) const |
Computes y.T for a given row vector. | |
EntryIndex | num_entries () const |
This class holds a matrix of the form T = I + u.Tr(v) where I is the identity matrix and u and v are two column vectors of the same size as I. It allows for efficient left and right solves with T. When T is non-singular, it is easy to show that T^{-1} = I - 1 / mu * u.Tr(v) where mu = 1.0 + Tr(v).u
This is based on section 3.1 of: Qi Huangfu, J. A. Julian Hall, "Novel update techniques for the revised simplex method", 28 january 2013, Technical Report ERGO-13-0001
Definition at line 40 of file rank_one_update.h.
|
inline |
Rather than copying the vectors u and v, RankOneUpdateElementaryMatrix takes two columns of a provided CompactSparseMatrix which is used for storage. This has a couple of advantages, especially in the context of the RankOneUpdateFactorization below:
Definition at line 48 of file rank_one_update.h.
|
inline |
Returns whether or not this matrix is singular.
Definition at line 59 of file rank_one_update.h.
|
inline |
Computes y.T for a given row vector.
Definition at line 106 of file rank_one_update.h.
|
inline |
Solves y.T = rhs with rhs initialy in y (a row vector). The non-zeros version keeps track of the new non-zeros.
Definition at line 81 of file rank_one_update.h.
|
inline |
Definition at line 88 of file rank_one_update.h.
|
inline |
Definition at line 112 of file rank_one_update.h.
|
inline |
Computes T.x for a given column vector.
Definition at line 99 of file rank_one_update.h.
|
inline |
Solves T.x = rhs with rhs initialy in x (a column vector). The non-zeros version keeps track of the new non-zeros.
Definition at line 63 of file rank_one_update.h.
|
inline |
Definition at line 69 of file rank_one_update.h.