akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
Loading...
Searching...
No Matches
pd_ipm_result.hpp
Go to the documentation of this file.
1/*
2 * Copyright © 2025-2026 Akreon LLC
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6#pragma once
7
8#include <cstddef>
9#include <type_traits>
10
16#include "akreon/linalg/linalg.hpp"
17
18namespace convex {
19
24 std::size_t num_iters{};
25 constexpr void reset() { *this = {}; }
26};
27
32template <linalg::VectorContainer Var, linalg::VectorContainer ConeVar,
33 linalg::VectorContainer NuVar,
34 typename CanonicalTraceT = EmptyCanonicalTrace,
35 typename SolverTraceT = EmptySolverTrace>
37 using Scalar = linalg::vector_element_t<Var>;
38 using CanonicalTrace = CanonicalTraceT;
40
42 linalg::NumericalEvent event{};
43 bool stalled{};
44 std::size_t
46
50
53 Var rd{};
54 ConeVar rp{};
55 NuVar req{};
56
57 CanonicalTraceT canonical_trace{};
59};
60
61} // namespace convex
SolverResult
SolverResult.
constexpr std::size_t dom_size_v
CanonicalTrace<> EmptyCanonicalTrace
Empty solver trace for users/builds that only want the final result.
PrimalDualIterate.
Definition pd_info.hpp:17
Final primal-dual solve result plus optional structural and iteration traces.
Scalar dual_obj
Dual objective result.
CanonicalTraceT canonical_trace
Attached canonical trace.
bool stalled
Tag that indicates if backtracking stalled.
linalg::vector_element_t< Var > Scalar
SolverTraceT solver_trace
Solver trace.
Scalar mu
Normalized duality gap.
CanonicalTraceT CanonicalTrace
std::size_t num_iter
Number of iterations until convergence, stalled, or max.
config::SolverResult tag
Solver result tag.
Scalar convex_obj
Convex objective result.
ConeVar rp
Primal residual.
PrimalDualIterate< Var, ConeVar, NuVar > iterate
PD iterate (z, x, y, nu)
NuVar req
Equality residual.