|
Mundy: Multibody Nonlocal Dynamics Version of the Day
|
Linear complementarity problem (LCP) formulation. More...
#include <lcp.hpp>
Public Types | |
| using | backend_t = Backend |
| using | linear_op_storage_t = ::mundy::storage<LinearOp> |
| using | q_vector_storage_t = ::mundy::storage<QVector> |
| using | linear_op_t = typename linear_op_storage_t::value_type |
| using | q_vector_t = typename q_vector_storage_t::value_type |
| using | workspace_t = Workspace |
| using | value_type = impl::vector_value_type<q_vector_t> |
Public Member Functions | |
| LCP (Backend, LinearOp &&A, QVector &&q) | |
| LCP (Backend, LinearOp &&A, QVector &&q, workspace_t workspace) | |
| Backend | backend () const |
| const auto & | A () const |
| const auto & | q () const |
| workspace_t & | workspace () const |
This is for a linear complementarity problem of the form: 0 <= A x + q _|_ x >= 0 where A is a symmetric positive semi-definite matrix, q is a vector, and x is the solution vector.
This is equivalent to solving the following constrained quadratic programming problem: x^* = argmin 0.5 x^T A x + q^T x s.t. x in R^n, x >= 0
| using mundy::LCP< Backend, LinearOp, QVector, Workspace >::backend_t = Backend |
| using mundy::LCP< Backend, LinearOp, QVector, Workspace >::linear_op_storage_t = ::mundy::storage<LinearOp> |
| using mundy::LCP< Backend, LinearOp, QVector, Workspace >::q_vector_storage_t = ::mundy::storage<QVector> |
| using mundy::LCP< Backend, LinearOp, QVector, Workspace >::linear_op_t = typename linear_op_storage_t::value_type |
| using mundy::LCP< Backend, LinearOp, QVector, Workspace >::q_vector_t = typename q_vector_storage_t::value_type |
| using mundy::LCP< Backend, LinearOp, QVector, Workspace >::workspace_t = Workspace |
| using mundy::LCP< Backend, LinearOp, QVector, Workspace >::value_type = impl::vector_value_type<q_vector_t> |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |