15#include "akreon/linalg/linalg.hpp"
26template <linalg::Field T>
35template <linalg::Field T, std::
size_t NumCones>
42 constexpr void reset() { *
this = {}; }
51 constexpr auto&
cone(std::size_t idx) {
55 constexpr const auto&
cone(std::size_t idx)
const {
61 std::array<ConeStepTrace<T>, NumCones>
cones{};
70template <linalg::Field T, std::
size_t NumCones>
78 constexpr void reset() { *
this = {}; }
96 linalg::NumericalEvent
event{};
106template <linalg::Field T, std::
size_t NumCones>
108 constexpr void reset() { *
this = {}; }
134 constexpr const auto&
iter(std::size_t
k)
const {
return iters[
k]; }
179template <linalg::Field T, std::
size_t MaxConeDim>
181 std::array<T, MaxConeDim>
xk{};
182 std::array<T, MaxConeDim>
yk{};
184 std::array<T, MaxConeDim>
px{};
185 std::array<T, MaxConeDim>
py{};
191template <linalg::Field T, std::
size_t VarDim, std::
size_t EqDim>
193 std::array<T, VarDim>
pz{};
194 std::array<T, EqDim>
pnu{};
203template <linalg::Field T, std::size_t NumCones, std::size_t
MaxConeDim,
206 std::array<PdIpmConeSnapshot<T, MaxConeDim>, NumCones>
208 std::array<PdIpmConeSnapshot<T, MaxConeDim>, NumCones>
217template <
bool Enable, linalg::Field T, std::size_t NumCones,
224template <linalg::Field T,
typename CanonicalTraceT>
SolverResult
SolverResult.
constexpr std::size_t dom_size_v
std::conditional_t< Enable, PdIpmFullIterSnapshot< T, NumCones, MaxConeDim, VarDim, EqDim >, EmptyPdIpmSnapshot > PdIpmSnapshotStorage
Alias for snap shot storage (full or empty)
#define PD_IPM_STEPS
(dakre) note increase constexpr steps / depth for # steps to increase here for constexpr usage
Per-cone scalar diagnostics for one predictor or corrector pass.
T pz_rhs_norm
||pz_rhs||_2 after this cone contribution.
T rhs_c_norm
||rhs_c||_2 in this cone block.
T mu
Local normalized duality gap for this cone.
bool active
Set true when this cone was touched/populated.
Empty object used when full snapshot tracing is disabled.
Cone snap shot at current iterate.
std::array< T, MaxConeDim > py
dual newton step
std::array< T, MaxConeDim > px
primal newton step
std::array< T, MaxConeDim > rhs_c
rhs at k in pred-corr
std::array< T, MaxConeDim > xk
primal var at k
std::array< T, MaxConeDim > yk
dual var at k
Optional full debug snapshot for one PD-IPM iteration.
std::array< PdIpmConeSnapshot< T, MaxConeDim >, NumCones > corrector_cones
corrector cone snap shot
std::array< PdIpmConeSnapshot< T, MaxConeDim >, NumCones > predictor_cones
predictor cone snap shot
PdIpmGlobalStepSnapshot< T, VarDim, EqDim > corrector_global
corrector global snap shot
PdIpmGlobalStepSnapshot< T, VarDim, EqDim > predictor_global
predicator global snap shot
Global snap shot at current iterate.
std::array< T, EqDim > pnu
equality newton step
std::array< T, VarDim > pz
dec var newton step
Outer PD-IPM iteration diagnostics.
T px_norm
||Newton step in x||_2.
PdIpmStepTrace< T, NumCones > corrector
corrector pd ipm trace
T rd_norm
||dual residual||_2.
T alpha_x
Max primal cone step.
T py_norm
||Newton step in y||_2.
T alpha_y
Max dual cone step.
constexpr void reset()
reset
PdIpmStepTrace< T, NumCones > predictor
predictor pd ipm trace
bool stalled
tag whether or not its been stalled
T pnu_norm
||Newton step in nu||_2.
config::SolverResult tag
tag of solver result
T req_norm
||equality residual||_2.
T rp_norm
||cone/primal residual||_2.
T pz_norm
||Newton step in z||_2.
Predictor or corrector cone diagnostics for one outer iteration.
constexpr const auto & cone(std::size_t idx) const
std::array< ConeStepTrace< T >, NumCones > cones
public member vars
constexpr auto & cone(std::size_t idx)
cone
constexpr void reset()
reset
Fixed-capacity PD-IPM trace.
constexpr const auto & current() const
current
constexpr auto & iter(std::size_t k)
iter & relevent overrides
static constexpr std::size_t num_cones
static export of num cones
constexpr bool commit_iter()
commit iter will increment the number of iters
constexpr std::size_t size() const
size
std::array< PdIpmIterTrace< T, NumCones >, PD_IPM_STEPS > iters
public member vars
constexpr auto & operator[](std::size_t k)
constexpr bool full() const
full (num_iters >= PD_IPM_STEPS)
constexpr auto & current()
current
constexpr const auto & operator[](std::size_t k) const
std::size_t num_iters
number of iterations
constexpr const auto & iter(std::size_t k) const