6#include <Eigen/SparseCore>
8#include "sleipnir/optimization/solver/util/dense_kkt_solver.hpp"
9#include "sleipnir/optimization/solver/util/sparse_kkt_solver.hpp"
18template <
typename Scalar>
34 int num_equality_constraints)
36 m_sparse_solver{num_decision_variables, num_equality_constraints},
37 m_dense_solver{num_decision_variables, num_equality_constraints} {}
48 int num_equality_constraints, Scalar
γ_min)
50 m_sparse_solver{num_decision_variables, num_equality_constraints,
52 m_dense_solver{num_decision_variables, num_equality_constraints,
58 Eigen::ComputationInfo
info()
const {
59 if (m_use_sparse_solver) {
60 return m_sparse_solver.info();
62 return m_dense_solver.info();
75 if (m_use_sparse_solver) {
76 m_sparse_solver.compute(
lhs);
78 m_dense_solver.compute(
lhs);
88 template <
typename Rhs>
90 if (m_use_sparse_solver) {
91 return m_sparse_solver.solve(
rhs);
93 return m_dense_solver.solve(
rhs);
101 template <
typename Rhs>
103 if (m_use_sparse_solver) {
104 return m_sparse_solver.solve(
rhs);
106 return m_dense_solver.solve(
rhs);
114 if (m_use_sparse_solver) {
115 return m_sparse_solver.hessian_regularization();
117 return m_dense_solver.hessian_regularization();
125 if (m_use_sparse_solver) {
126 return m_sparse_solver.constraint_jacobian_regularization();
128 return m_dense_solver.constraint_jacobian_regularization();
133 bool m_use_sparse_solver;
Definition intrusive_shared_ptr.hpp:27
Definition kkt_solver.hpp:19
KKTSolver & compute(const SparseMatrix &lhs)
Definition kkt_solver.hpp:74
DenseVector solve(const Eigen::MatrixBase< Rhs > &rhs) const
Definition kkt_solver.hpp:89
Eigen::Vector< Scalar, Eigen::Dynamic > DenseVector
Type alias for dense vector.
Definition kkt_solver.hpp:22
KKTSolver(bool use_sparse_solver, int num_decision_variables, int num_equality_constraints, Scalar γ_min)
Definition kkt_solver.hpp:47
KKTSolver(bool use_sparse_solver, int num_decision_variables, int num_equality_constraints)
Definition kkt_solver.hpp:33
Eigen::SparseMatrix< Scalar > SparseMatrix
Type alias for sparse matrix.
Definition kkt_solver.hpp:24
Eigen::ComputationInfo info() const
Definition kkt_solver.hpp:58
Scalar hessian_regularization() const
Definition kkt_solver.hpp:113
Scalar constraint_jacobian_regularization() const
Definition kkt_solver.hpp:124
DenseVector solve(const Eigen::SparseMatrixBase< Rhs > &rhs) const
Definition kkt_solver.hpp:102