akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
Loading...
Searching...
No Matches
convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar > Struct Template Reference

Predictor Corrector. More...

#include <pred_corr.hpp>

Public Types

using T = linalg::matrix_scalar_t< ConeMat >
 extract T and N from Mat
 
using NuVar = linalg::Vector< T, EqRows >
 
using Step = NewtonStep< Var, ConeVar, NuVar >
 

Public Member Functions

template<std::size_t idx = 0, std::size_t Start = 0>
constexpr auto predictor (Var &&pz_rhs, const auto &K, const auto &M_inv, const auto &eq, const ConeMat &F, const ConeVar &rp, const Var &rd, const NuVar &req, const ConeVar &x, const ConeVar &y) const
 predictor (affine-scaling) direction
 
template<std::size_t idx = 0, std::size_t Start = 0>
constexpr auto corrector (Var &&pz_rhs, const ConeVar &px_aff, const ConeVar &py_aff, const auto &K, const auto &M_inv, const auto &eq, const ConeMat &F, const ConeVar &rp, const Var &rd, const NuVar &req, const ConeVar &x, const ConeVar &y) const
 corrector (centering) direction
 

Static Public Attributes

static constexpr std::size_t N = linalg::mat_cols_v<ConeMat>
 
static constexpr std::size_t EqRows = linalg::mat_rows_v<EqMat>
 

Detailed Description

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
struct convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >

Predictor Corrector.

Definition at line 25 of file pred_corr.hpp.

Member Typedef Documentation

◆ NuVar

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
using convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::NuVar = linalg::Vector<T, EqRows>

Definition at line 31 of file pred_corr.hpp.

◆ Step

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
using convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::Step = NewtonStep<Var, ConeVar, NuVar>

Definition at line 32 of file pred_corr.hpp.

◆ T

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
using convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::T = linalg::matrix_scalar_t<ConeMat>

extract T and N from Mat

Definition at line 27 of file pred_corr.hpp.

Member Function Documentation

◆ corrector()

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
template<std::size_t idx = 0, std::size_t Start = 0>
constexpr auto convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::corrector ( Var &&  pz_rhs,
const ConeVar &  px_aff,
const ConeVar &  py_aff,
const auto &  K,
const auto &  M_inv,
const auto &  eq,
const ConeMat &  F,
const ConeVar &  rp,
const Var &  rd,
const NuVar &  req,
const ConeVar &  x,
const ConeVar &  y 
) const
inlineconstexpr

corrector (centering) direction

Parameters
pz_rhs(forward pass accumulate)
px_pred(newton step affine scaling dir x)
py_pred(newton step affine scaling dir y)
K(cartesian product of cones)
M_inv(factored M = (F^T H F)^{-1})
eq(equality coupling)
F(R^n -> conic space)
rp(primal residual)
rd(dual residual)
req(equality residual)
x(x in K iterate)
y(y in K^* iterate)
Returns
pz_rhs, step (ignore rhs on return), event

Definition at line 146 of file pred_corr.hpp.

References convex::dom_size_v.

◆ predictor()

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
template<std::size_t idx = 0, std::size_t Start = 0>
constexpr auto convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::predictor ( Var &&  pz_rhs,
const auto &  K,
const auto &  M_inv,
const auto &  eq,
const ConeMat &  F,
const ConeVar &  rp,
const Var &  rd,
const NuVar &  req,
const ConeVar &  x,
const ConeVar &  y 
) const
inlineconstexpr

predictor (affine-scaling) direction

Parameters
pz_rhs(rhs forward pass accumulate)
K(cartesian product of cones)
M_inv(factored M = (F^T H F)^{-1})
eq(equality coupling)
F(R^n -> conic space)
rp(primal residual)
rd(dual residual)
req(equality residual)
x(x in K iterate)
y(y in K^* iterate)
Returns
pz_rhs, step (ignore rhs on return), event

Definition at line 51 of file pred_corr.hpp.

References convex::dom_size_v.

Member Data Documentation

◆ EqRows

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
constexpr std::size_t convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::EqRows = linalg::mat_rows_v<EqMat>
staticconstexpr

Definition at line 30 of file pred_corr.hpp.

◆ N

template<std::size_t NumCones, linalg::MatrixContainer ConeMat, linalg::MatrixContainer EqMat, linalg::VectorContainer Var, linalg::VectorContainer ConeVar>
constexpr std::size_t convex::PredictorCorrector< NumCones, ConeMat, EqMat, Var, ConeVar >::N = linalg::mat_cols_v<ConeMat>
staticconstexpr

Definition at line 28 of file pred_corr.hpp.


The documentation for this struct was generated from the following file: