Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
cqpp.hpp File Reference

Classes

class  mundy::CQPP< Backend, LinearOp, QVector, ConvexSpace, Workspace >
 Constrained quadratic programming problem (CQPP) formulation. More...
class  mundy::MCQPP< Backend, LinearOpA, QVector, LinearOpL, FVector, ConvexSpace, WorkspaceA, WorkspaceL >
 Mixed constrained quadratic programming problem (MCQPP) formulation. More...
class  mundy::CongruentMCQPP< Backend, LinearOpDT, LinearOpM, LinearOpD, QVector, LinearOpL, FVector, ConvexSpace, WorkspaceDT, WorkspaceM, WorkspaceD, WorkspaceL >
struct  mundy::MixedCQPPWorkspace< SbVector, FbVector, SWorkspace, BWorkspace, DTWorkspace, MWorkspace, DWorkspace, LWorkspace, GVector, DxVector, MDxVector, LMDxVector >
 Storage for a mixed CQPP formed from (DT, M, D, q, B, S, BT, b): S b, f_b = B S b, the workspaces of S and B, and the problem's own workspaces and reduction storage. More...

Namespaces

namespace  mundy

Concepts

concept  mundy::CQPPSolverStrategy
 The strategy interface the solve_cqpp driver requires: initialize/iterate/done/result. Any method that solves a CQPP (PGD today, see pgd.hpp) satisfies this. Structurally generic across iterative methods.

Functions

Problems + state
template<class Backend, class LinearOpA, class QVector, class LinearOpL, class FVector, class ConvexSpace, class AWorkspace, class LWorkspace>
auto mundy::to_cqpp (const MCQPP< Backend, LinearOpA, QVector, LinearOpL, FVector, ConvexSpace, AWorkspace, LWorkspace > &P)
template<class Backend, class LinearOpDT, class LinearOpM, class LinearOpD, class QVector, class LinearOpL, class FVector, class ConvexSpace, class DTWorkspace, class MWorkspace, class DWorkspace, class LWorkspace>
auto mundy::to_cqpp (const CongruentMCQPP< Backend, LinearOpDT, LinearOpM, LinearOpD, QVector, LinearOpL, FVector, ConvexSpace, DTWorkspace, MWorkspace, DWorkspace, LWorkspace > &P)
template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace>
auto mundy::make_cqpp (LinearOp &&A, QVector &&q, ConvexSpace &&space)
template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, ValidConvexSpace ConvexSpace>
auto mundy::make_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, ConvexSpace &&space)
template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, ValidConvexSpace ConvexSpace, typename FVector, typename UVector>
auto mundy::make_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, FVector &&f, UVector &&u, ConvexSpace &&space)
template<typename Backend, typename LinearOp, typename QVector, ValidConvexSpace ConvexSpace, typename Workspace>
auto mundy::make_cqpp (LinearOp &&A, QVector &&q, ConvexSpace &&space, Workspace &&workspace)
template<typename Backend, typename LinearOpA, typename QVector, typename LinearOpL, typename FVector, ValidConvexSpace ConvexSpace>
auto mundy::make_mixed_cqpp (LinearOpA &&A, QVector &&q, LinearOpL &&L, FVector &&f_b, ConvexSpace &&space)
template<typename Backend, typename LinearOpA, typename QVector, typename LinearOpL, typename FVector, ValidConvexSpace ConvexSpace, typename AWorkspace, typename LWorkspace>
auto mundy::make_mixed_cqpp (LinearOpA &&A, QVector &&q, LinearOpL &&L, FVector &&f_b, ConvexSpace &&space, AWorkspace &&a_workspace, LWorkspace &&l_workspace)
template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename LinearOpL, typename FVector, ValidConvexSpace ConvexSpace>
auto mundy::make_mixed_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, LinearOpL &&L, FVector &&f_b, ConvexSpace &&space)
template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename LinearOpB, typename LinearOpS, typename LinearOpBT>
auto mundy::make_mixed_cqpp_workspace (const LinearOpDT &DT, const LinearOpM &M, const LinearOpD &D, const QVector &q, const LinearOpB &B, const LinearOpS &S, const LinearOpBT &BT)
 Storage for the mixed CQPPs formed from these operators and a q shaped like q, reusable for any b.
template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename LinearOpB, typename LinearOpS, typename LinearOpBT, typename SWorkspace>
auto mundy::make_mixed_cqpp_workspace (const LinearOpDT &DT, const LinearOpM &M, const LinearOpD &D, const QVector &q, const LinearOpB &B, const LinearOpS &S, const LinearOpBT &BT, const SWorkspace &s_workspace)
 Storage for the mixed CQPPs formed from these operators and a q shaped like q, whose applies of S, for S b and within L = B S B^T, all run in s_workspace, a workspace of S.
template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename LinearOpB, typename LinearOpS, typename LinearOpBT, typename BVector, ValidConvexSpace ConvexSpace, typename Workspace>
auto mundy::make_mixed_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, LinearOpB &&B, LinearOpS &&S, LinearOpBT &&BT, BVector &&b, ConvexSpace &&space, Workspace &&workspace)
 The mixed CQPP of (DT, M, D, q, B, S, BT, b), formed in workspace from make_mixed_cqpp_workspace.
template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename LinearOpB, typename LinearOpS, typename LinearOpBT, typename BVector, ValidConvexSpace ConvexSpace>
auto mundy::make_mixed_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, LinearOpB &&B, LinearOpS &&S, LinearOpBT &&BT, BVector &&b, ConvexSpace &&space)
template<class Problem, class Strategy, class State>
auto mundy::solve_cqpp (const Problem &prob, const Strategy &strat, State &state)
 Solve a constrained quadratic programming problem (CQPP): x* = argmin_{x in Omega} 0.5 x^T A x + q^T x.
template<class Problem, class Strategy, class State>
auto mundy::solve_mixed_cqpp (const Problem &prob, const Strategy &strat, State &state)
 Solve a mixed constrained convex quadratic programming problem (MCQPP).