Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace > Class Template Reference

Constrained quadratic programming problem (CQPP) formulation. More...

#include <cqpp.hpp>

Public Types

using backend_t = Backend
using linear_op_storage_t = ::mundy::storage<LinearOp>
using vector_storage_t = ::mundy::storage<QVector>
using linear_op_t = typename linear_op_storage_t::value_type
using vector_t = typename vector_storage_t::value_type
using space_t = ConvexSpace
using workspace_t = Workspace
using value_type = impl::vector_value_type<vector_t>

Public Member Functions

 CQPP (Backend, LinearOp &&A, QVector &&q, const space_t &space)
 CQPP (Backend, LinearOp &&A, QVector &&q, const space_t &space, workspace_t workspace)
Backend backend () const
const auto & A () const
const auto & q () const
const space_tspace () const
workspace_tworkspace () const
 This problem's cached scratch state for evaluating A (see Backend::apply and Op::Workspace types).

Detailed Description

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
class mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >

This is for a constrained quadratic programming problem of the form: x^* = argmin_{x in Omega} 0.5 x^T A x + q^T x where A is a symmetric positive semi-definite matrix, q is a vector, and Omega is a convex space.

Template Parameters
BackendThe backend to use for operations (e.g., KokkosBackend, MundyMathBackend)

Member Typedef Documentation

◆ backend_t

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::backend_t = Backend

◆ linear_op_storage_t

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::linear_op_storage_t = ::mundy::storage<LinearOp>

◆ vector_storage_t

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::vector_storage_t = ::mundy::storage<QVector>

◆ linear_op_t

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::linear_op_t = typename linear_op_storage_t::value_type

◆ vector_t

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::vector_t = typename vector_storage_t::value_type

◆ space_t

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::space_t = ConvexSpace

◆ workspace_t

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::workspace_t = Workspace

◆ value_type

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
using mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::value_type = impl::vector_value_type<vector_t>

Constructor & Destructor Documentation

◆ CQPP() [1/2]

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::CQPP ( Backend ,
LinearOp && A,
QVector && q,
const space_t & space )
inline

◆ CQPP() [2/2]

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::CQPP ( Backend ,
LinearOp && A,
QVector && q,
const space_t & space,
workspace_t workspace )
inline

Member Function Documentation

◆ backend()

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
Backend mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::backend ( ) const
inline

◆ A()

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
const auto & mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::A ( ) const
inline

◆ q()

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
const auto & mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::q ( ) const
inline

◆ space()

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
const space_t & mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::space ( ) const
inline

◆ workspace()

template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace = impl::workspace_for_t<std::remove_cvref_t<LinearOp>>>
workspace_t & mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >::workspace ( ) const
inline