proxsuite-nlp
0.10.0
A primal-dual augmented Lagrangian-type solver for nonlinear programming on manifolds.
|
Block sparsity-aware LDLT factorization algorithm. More...
#include <proxsuite-nlp/linalg/block-ldlt.hpp>
Public Types | |
using | Scalar = _Scalar |
using | Base = ldlt_base<Scalar> |
using | DView = typename Base::DView |
using | Traits = LDLT_Traits<MatrixXs, Eigen::Lower> |
using | PermutationType |
using | PermIdxType = Eigen::Matrix<isize, Eigen::Dynamic, 1> |
using | BlockTriL = TriangularBlockMatrix<const MatrixXs, Eigen::UnitLower> |
using | BlockTriU |
Public Types inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
using | DView |
Public Member Functions | |
BlockLDLT (isize size, SymbolicBlockMatrix const &structure) | |
The constructor copies the input matrix. | |
BlockLDLT (BlockLDLT const &other) | |
void | computeStartIndices (const SymbolicBlockMatrix &in) |
Compute indices indicating where blocks start. | |
~BlockLDLT () | |
const SymbolicBlockMatrix & | structure () const |
void | print_sparsity () const |
bool | analyzePattern () |
Analyze and factorize the block structure, if not done already. | |
usize | nblocks () const |
void | setBlockPermutation (isize const *new_perm=nullptr) |
Calls updateBlockPermutationMatrix. | |
auto | blockPermIndices () -> std::vector< isize > & |
BlockLDLT & | findSparsifyingPermutation () |
Find a sparsity-maximizing permutation of the blocks. This will also compute the symbolic factorization. | |
const PermutationType & | permutationP () const |
MatrixXs | reconstructedMatrix () const override |
Traits::MatrixL | matrixL () const |
Traits::MatrixU | matrixU () const |
DView | vectorD () const override |
template<typename Derived > | |
bool | solveInPlace (Eigen::MatrixBase< Derived > &b) const |
Solve for the right-hand side in-place. | |
template<typename Rhs > | |
Rhs::PlainObject | solve (const Eigen::MatrixBase< Rhs > &rhs) const |
const MatrixXs & | matrixLDLT () const override |
void | compute () |
BlockLDLT & | compute (const ConstMatrixRef &mat) override |
Public Member Functions inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
bool | solveInPlace (MatrixRef) const |
Eigen::ComputationInfo | info () const |
SignMatrix | sign () const |
virtual | ~ldlt_base ()=0 |
Public Attributes | |
Scalar | |
Public Attributes inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
Scalar | |
Protected Member Functions | |
BlockLDLT & | updateBlockPermutationMatrix (SymbolicBlockMatrix const &in) |
Protected Attributes | |
MatrixXs | m_matrix |
SymbolicBlockMatrix | m_structure |
SymbolicBlockMatrix | m_struct_tr |
PermutationType | m_permutation |
std::vector< isize > | m_perm |
std::vector< isize > | m_perm_inv |
std::vector< isize > | m_iwork |
std::vector< isize > | m_start_idx |
Eigen::ComputationInfo | m_info |
SignMatrix | m_sign |
Protected Attributes inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
Eigen::ComputationInfo | m_info |
SignMatrix | m_sign |
Additional Inherited Members | |
Static Public Member Functions inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
static DView | diag_view_impl (Mat &&mat) |
Block sparsity-aware LDLT factorization algorithm.
This struct owns the data of the SymbolicBlockMatrix given as input. The member function findSparsifyingPermutation() uses a heuristic (for now a brute-force search) to find a sparsity-maximizing permutation of the blocks in the input matrix. updateBlockPermutationMatrix() updates the permutation matrix according to the stored block-wise permutation indices.
Definition at line 197 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Scalar = _Scalar |
Definition at line 198 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Base = ldlt_base<Scalar> |
Definition at line 200 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::DView = typename Base::DView |
Definition at line 201 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Traits = LDLT_Traits<MatrixXs, Eigen::Lower> |
Definition at line 202 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::PermutationType |
Definition at line 203 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::PermIdxType = Eigen::Matrix<isize, Eigen::Dynamic, 1> |
Definition at line 205 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::BlockTriL = TriangularBlockMatrix<const MatrixXs, Eigen::UnitLower> |
Definition at line 206 of file block-ldlt.hpp.
using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::BlockTriU |
Definition at line 207 of file block-ldlt.hpp.
|
inline |
The constructor copies the input matrix.
mat | and symbolic block pattern |
structure. |
Definition at line 228 of file block-ldlt.hpp.
|
inline |
Definition at line 237 of file block-ldlt.hpp.
|
inline |
Definition at line 256 of file block-ldlt.hpp.
|
protected |
|
inline |
Compute indices indicating where blocks start.
Definition at line 249 of file block-ldlt.hpp.
|
inline |
Definition at line 266 of file block-ldlt.hpp.
|
inline |
Definition at line 267 of file block-ldlt.hpp.
|
inline |
Analyze and factorize the block structure, if not done already.
|
inline |
Definition at line 272 of file block-ldlt.hpp.
void proxsuite::nlp::linalg::BlockLDLT< _Scalar >::setBlockPermutation | ( | isize const * | new_perm = nullptr | ) |
Calls updateBlockPermutationMatrix.
|
inline |
Definition at line 277 of file block-ldlt.hpp.
BlockLDLT & proxsuite::nlp::linalg::BlockLDLT< _Scalar >::findSparsifyingPermutation | ( | ) |
Find a sparsity-maximizing permutation of the blocks. This will also compute the symbolic factorization.
|
inline |
Definition at line 283 of file block-ldlt.hpp.
|
overridevirtual |
Implements proxsuite::nlp::linalg::ldlt_base< _Scalar >.
|
inline |
Definition at line 287 of file block-ldlt.hpp.
|
inline |
Definition at line 291 of file block-ldlt.hpp.
|
inlineoverridevirtual |
Implements proxsuite::nlp::linalg::ldlt_base< _Scalar >.
Definition at line 295 of file block-ldlt.hpp.
bool proxsuite::nlp::linalg::BlockLDLT< _Scalar >::solveInPlace | ( | Eigen::MatrixBase< Derived > & | b | ) | const |
Solve for the right-hand side in-place.
|
inline |
Definition at line 304 of file block-ldlt.hpp.
|
inlineoverridevirtual |
Reimplemented from proxsuite::nlp::linalg::ldlt_base< _Scalar >.
Definition at line 310 of file block-ldlt.hpp.
|
inline |
Definition at line 312 of file block-ldlt.hpp.
|
inlineoverridevirtual |
Sets the input matrix to mat
, performs the permutation and runs the algorithm.
Implements proxsuite::nlp::linalg::ldlt_base< _Scalar >.
Definition at line 322 of file block-ldlt.hpp.
proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Scalar |
Definition at line 199 of file block-ldlt.hpp.
|
protected |
Definition at line 212 of file block-ldlt.hpp.
|
protected |
Definition at line 213 of file block-ldlt.hpp.
|
protected |
Definition at line 214 of file block-ldlt.hpp.
|
protected |
Definition at line 215 of file block-ldlt.hpp.
|
protected |
Definition at line 218 of file block-ldlt.hpp.
|
protected |
Definition at line 219 of file block-ldlt.hpp.
|
protected |
Definition at line 220 of file block-ldlt.hpp.
|
protected |
Definition at line 221 of file block-ldlt.hpp.
|
protected |
Definition at line 48 of file ldlt-base.hpp.
|
protected |
Definition at line 49 of file ldlt-base.hpp.