akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
Loading...
Searching...
No Matches
convex::PrimalDualIPM< Problem > Struct Template Reference

Primal Dual Interior Point Method Solver. More...

#include <pd_ipm.hpp>

Public Types

using Builder = prob_builder_t< Problem >
 alias and helpers to get types
 
using DecVar = conic::builder_dom_t< Builder >
 
using ConeMap = decltype(std::declval< const Problem & >().constraint_map())
 
using ConeMat = affine::affine_mat_t< ConeMap >
 
using EqMap = decltype(std::declval< const Problem & >().equality_map())
 
using EqMat = affine::affine_mat_t< EqMap >
 
using CanonicalTrace = decltype(std::declval< const Problem & >().canonical_trace())
 
using T = linalg::space_type_t< DecVar >
 
using NuVar = linalg::Vector< T, EqRows >
 
using BlockMat = linalg::Matrix< T, N, N >
 useful types for PD-IPM
 
using Var = linalg::Vector< T, N >
 
using ConeVar = linalg::Vector< T, M >
 
using Step = NewtonStep< Var, ConeVar, NuVar >
 
using Residuals = ResidualState< Var, ConeVar, NuVar >
 
using SolverTrace = EmptySolverTrace
 

Public Member Functions

constexpr PrimalDualIPM (const Problem &prob)
 CTOR.
 
constexpr PrimalDualIPM (const Problem &prob, const config::PrimalDualIPMConfig< T > &config_in)
 CTOR.
 
constexpr PrimalDualIPM (const Problem &prob, const PrimalDualIterate< Var, ConeVar, NuVar > &iterate)
 CTOR (warm start)
 
constexpr PrimalDualIPM (const Problem &prob, const PrimalDualIterate< Var, ConeVar, NuVar > &iterate, const config::PrimalDualIPMConfig< T > &config_in)
 CTOR (warm start)
 

Public Attributes

PrimalDualResult< Var, ConeVar, NuVar, CanonicalTrace, SolverTrace > res
 member vars
 
bool dual_feas {false}
 status flag for dual feasibility
 
bool primal_feas {false}
 status flag for primal feasibility
 
bool gap_min {false}
 status flag for duality gap minimized
 

Static Public Attributes

static constexpr std::size_t NumCones
 helpers for size of cones & F mat size & A mat rows
 
static constexpr std::size_t M = linalg::mat_rows_v<ConeMat>
 
static constexpr std::size_t N = linalg::mat_cols_v<ConeMat>
 
static constexpr std::size_t EqRows = linalg::mat_rows_v<EqMat>
 
static constexpr T rho {linalg::ln2_v<T>}
 damping param using for alpha steps in predictor corrector
 
static constexpr T beta {1 - linalg::ln2_v<T>}
 beta F(beta) neighborhood of central path (within feasibility)
 

Detailed Description

template<ProblemLike Problem>
struct convex::PrimalDualIPM< Problem >

Primal Dual Interior Point Method Solver.

Definition at line 93 of file pd_ipm.hpp.

Member Typedef Documentation

◆ BlockMat

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::BlockMat = linalg::Matrix<T, N, N>

useful types for PD-IPM

Definition at line 115 of file pd_ipm.hpp.

◆ Builder

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::Builder = prob_builder_t<Problem>

alias and helpers to get types

Definition at line 95 of file pd_ipm.hpp.

◆ CanonicalTrace

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::CanonicalTrace = decltype(std::declval<const Problem&>().canonical_trace())

Definition at line 101 of file pd_ipm.hpp.

◆ ConeMap

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::ConeMap = decltype(std::declval<const Problem&>().constraint_map())

Definition at line 97 of file pd_ipm.hpp.

◆ ConeMat

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::ConeMat = affine::affine_mat_t<ConeMap>

Definition at line 98 of file pd_ipm.hpp.

◆ ConeVar

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::ConeVar = linalg::Vector<T, M>

Definition at line 117 of file pd_ipm.hpp.

◆ DecVar

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::DecVar = conic::builder_dom_t<Builder>

Definition at line 96 of file pd_ipm.hpp.

◆ EqMap

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::EqMap = decltype(std::declval<const Problem&>().equality_map())

Definition at line 99 of file pd_ipm.hpp.

◆ EqMat

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::EqMat = affine::affine_mat_t<EqMap>

Definition at line 100 of file pd_ipm.hpp.

◆ NuVar

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::NuVar = linalg::Vector<T, EqRows>

Definition at line 112 of file pd_ipm.hpp.

◆ Residuals

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::Residuals = ResidualState<Var, ConeVar, NuVar>

Definition at line 119 of file pd_ipm.hpp.

◆ SolverTrace

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::SolverTrace = EmptySolverTrace

Definition at line 123 of file pd_ipm.hpp.

◆ Step

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::Step = NewtonStep<Var, ConeVar, NuVar>

Definition at line 118 of file pd_ipm.hpp.

◆ T

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::T = linalg::space_type_t<DecVar>

Definition at line 103 of file pd_ipm.hpp.

◆ Var

template<ProblemLike Problem>
using convex::PrimalDualIPM< Problem >::Var = linalg::Vector<T, N>

Definition at line 116 of file pd_ipm.hpp.

Constructor & Destructor Documentation

◆ PrimalDualIPM() [1/4]

template<ProblemLike Problem>
constexpr convex::PrimalDualIPM< Problem >::PrimalDualIPM ( const Problem &  prob)
inlineexplicitconstexpr

CTOR.

Parameters
prob(ConvexProblem)

Definition at line 140 of file pd_ipm.hpp.

References convex::dom_size_v.

◆ PrimalDualIPM() [2/4]

template<ProblemLike Problem>
constexpr convex::PrimalDualIPM< Problem >::PrimalDualIPM ( const Problem &  prob,
const config::PrimalDualIPMConfig< T > &  config_in 
)
inlineexplicitconstexpr

CTOR.

Parameters
prob(ConvexProblem)
config(PrimalDualIPMConfig)

Definition at line 148 of file pd_ipm.hpp.

References convex::dom_size_v.

◆ PrimalDualIPM() [3/4]

template<ProblemLike Problem>
constexpr convex::PrimalDualIPM< Problem >::PrimalDualIPM ( const Problem &  prob,
const PrimalDualIterate< Var, ConeVar, NuVar > &  iterate 
)
inlineexplicitconstexpr

CTOR (warm start)

Parameters
prob(ConvexProblem)
iterate(PrimalDualIterate)

Definition at line 160 of file pd_ipm.hpp.

References convex::dom_size_v, and convex::PrimalDualIPM< Problem >::res.

◆ PrimalDualIPM() [4/4]

template<ProblemLike Problem>
constexpr convex::PrimalDualIPM< Problem >::PrimalDualIPM ( const Problem &  prob,
const PrimalDualIterate< Var, ConeVar, NuVar > &  iterate,
const config::PrimalDualIPMConfig< T > &  config_in 
)
inlineexplicitconstexpr

CTOR (warm start)

Parameters
prob(ConvexProblem)
iterate(PrimalDualIterate)
config(PrimalDualIPMConfig)

Definition at line 174 of file pd_ipm.hpp.

References convex::dom_size_v, and convex::PrimalDualIPM< Problem >::res.

Member Data Documentation

◆ beta

template<ProblemLike Problem>
constexpr T convex::PrimalDualIPM< Problem >::beta {1 - linalg::ln2_v<T>}
staticconstexpr

beta F(beta) neighborhood of central path (within feasibility)

Definition at line 133 of file pd_ipm.hpp.

◆ dual_feas

template<ProblemLike Problem>
bool convex::PrimalDualIPM< Problem >::dual_feas {false}

status flag for dual feasibility

Definition at line 189 of file pd_ipm.hpp.

◆ EqRows

template<ProblemLike Problem>
constexpr std::size_t convex::PrimalDualIPM< Problem >::EqRows = linalg::mat_rows_v<EqMat>
staticconstexpr

Definition at line 111 of file pd_ipm.hpp.

◆ gap_min

template<ProblemLike Problem>
bool convex::PrimalDualIPM< Problem >::gap_min {false}

status flag for duality gap minimized

Definition at line 191 of file pd_ipm.hpp.

◆ M

template<ProblemLike Problem>
constexpr std::size_t convex::PrimalDualIPM< Problem >::M = linalg::mat_rows_v<ConeMat>
staticconstexpr

Definition at line 108 of file pd_ipm.hpp.

◆ N

template<ProblemLike Problem>
constexpr std::size_t convex::PrimalDualIPM< Problem >::N = linalg::mat_cols_v<ConeMat>
staticconstexpr

Definition at line 109 of file pd_ipm.hpp.

◆ NumCones

template<ProblemLike Problem>
constexpr std::size_t convex::PrimalDualIPM< Problem >::NumCones
staticconstexpr
Initial value:
= std::tuple_size_v<
decltype(std::declval<const Problem&>().constraint_cones())>

helpers for size of cones & F mat size & A mat rows

Definition at line 106 of file pd_ipm.hpp.

◆ primal_feas

template<ProblemLike Problem>
bool convex::PrimalDualIPM< Problem >::primal_feas {false}

status flag for primal feasibility

Definition at line 190 of file pd_ipm.hpp.

◆ res

member vars

PD-IPM result

Definition at line 185 of file pd_ipm.hpp.

Referenced by convex::PrimalDualIPM< Problem >::PrimalDualIPM(), and convex::PrimalDualIPM< Problem >::PrimalDualIPM().

◆ rho

template<ProblemLike Problem>
constexpr T convex::PrimalDualIPM< Problem >::rho {linalg::ln2_v<T>}
staticconstexpr

damping param using for alpha steps in predictor corrector

Definition at line 130 of file pd_ipm.hpp.


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