6#include <Eigen/SparseCore>
8#include "sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp"
9#include "sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp"
16template <
typename Scalar>
32 int num_equality_constraints)
34 m_sparse_solver{num_decision_variables, num_equality_constraints},
35 m_dense_solver{num_decision_variables, num_equality_constraints} {}
46 int num_equality_constraints, Scalar
γ_min)
48 m_sparse_solver{num_decision_variables, num_equality_constraints,
50 m_dense_solver{num_decision_variables, num_equality_constraints,
56 Eigen::ComputationInfo
info()
const {
57 if (m_use_sparse_solver) {
58 return m_sparse_solver.info();
60 return m_dense_solver.info();
73 if (m_use_sparse_solver) {
74 m_sparse_solver.compute(
lhs);
76 m_dense_solver.compute(
lhs);
86 template <
typename Rhs>
88 if (m_use_sparse_solver) {
89 return m_sparse_solver.solve(
rhs);
91 return m_dense_solver.solve(
rhs);
99 template <
typename Rhs>
101 if (m_use_sparse_solver) {
102 return m_sparse_solver.solve(
rhs);
104 return m_dense_solver.solve(
rhs);
112 if (m_use_sparse_solver) {
113 return m_sparse_solver.hessian_regularization();
115 return m_dense_solver.hessian_regularization();
123 if (m_use_sparse_solver) {
124 return m_sparse_solver.constraint_jacobian_regularization();
126 return m_dense_solver.constraint_jacobian_regularization();
131 bool m_use_sparse_solver;
Definition intrusive_shared_ptr.hpp:27
Definition regularized_ldlt.hpp:17
Eigen::SparseMatrix< Scalar > SparseMatrix
Type alias for sparse matrix.
Definition regularized_ldlt.hpp:22
RegularizedLDLT(bool use_sparse_solver, int num_decision_variables, int num_equality_constraints)
Definition regularized_ldlt.hpp:31
Eigen::Vector< Scalar, Eigen::Dynamic > DenseVector
Type alias for dense vector.
Definition regularized_ldlt.hpp:20
Scalar constraint_jacobian_regularization() const
Definition regularized_ldlt.hpp:122
RegularizedLDLT & compute(const SparseMatrix &lhs)
Definition regularized_ldlt.hpp:72
Scalar hessian_regularization() const
Definition regularized_ldlt.hpp:111
Eigen::ComputationInfo info() const
Definition regularized_ldlt.hpp:56
DenseVector solve(const Eigen::MatrixBase< Rhs > &rhs) const
Definition regularized_ldlt.hpp:87
RegularizedLDLT(bool use_sparse_solver, int num_decision_variables, int num_equality_constraints, Scalar γ_min)
Definition regularized_ldlt.hpp:45
DenseVector solve(const Eigen::SparseMatrixBase< Rhs > &rhs) const
Definition regularized_ldlt.hpp:100