Nonconvex constrained optimization
Loading...
Searching...
No Matches
problem-counters.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <alpaqa/export.h>
4
5#include <chrono>
6#include <iosfwd>
7
8namespace alpaqa {
9
17 unsigned objective{};
22 unsigned constraints{};
24 unsigned grad_gi{};
34
35 struct EvalTimer {
36 std::chrono::nanoseconds projecting_difference_constraints{};
37 std::chrono::nanoseconds projection_multipliers{};
38 std::chrono::nanoseconds proximal_gradient_step{};
39 std::chrono::nanoseconds inactive_indices_res_lna{};
40 std::chrono::nanoseconds prox_jacobian_diag{};
41 std::chrono::nanoseconds nonsmooth_objective{};
42 std::chrono::nanoseconds objective{};
43 std::chrono::nanoseconds objective_gradient{};
44 std::chrono::nanoseconds objective_and_gradient{};
45 std::chrono::nanoseconds objective_and_constraints{};
47 std::chrono::nanoseconds constraints{};
48 std::chrono::nanoseconds constraints_gradient_product{};
49 std::chrono::nanoseconds grad_gi{};
50 std::chrono::nanoseconds constraints_jacobian{};
51 std::chrono::nanoseconds lagrangian_gradient{};
52 std::chrono::nanoseconds lagrangian_hessian_product{};
53 std::chrono::nanoseconds lagrangian_hessian{};
54 std::chrono::nanoseconds augmented_lagrangian_hessian_product{};
55 std::chrono::nanoseconds augmented_lagrangian_hessian{};
56 std::chrono::nanoseconds augmented_lagrangian{};
57 std::chrono::nanoseconds augmented_lagrangian_gradient{};
58 std::chrono::nanoseconds augmented_lagrangian_and_gradient{};
60
61 void reset() { *this = {}; }
62};
63
64ALPAQA_EXPORT std::ostream &operator<<(std::ostream &, const EvalCounter &);
65
67 const EvalCounter::EvalTimer &b) {
74 a.objective += b.objective;
82 a.grad_gi += b.grad_gi;
92 return a;
93}
94
102 a.objective += b.objective;
110 a.grad_gi += b.grad_gi;
120 a.time += b.time;
121 return a;
122}
123
124inline EvalCounter operator+(EvalCounter a, const EvalCounter &b) { return a += b; }
125
126} // namespace alpaqa
std::ostream & operator<<(std::ostream &os, PANOCStopCrit s)
OCPEvalCounter operator+(OCPEvalCounter a, const OCPEvalCounter &b)
InnerStatsAccumulator< FISTAStats< Conf > > & operator+=(InnerStatsAccumulator< FISTAStats< Conf > > &acc, const FISTAStats< Conf > &s)
Definition fista.hpp:191
std::chrono::nanoseconds grad_gi
std::chrono::nanoseconds constraints
std::chrono::nanoseconds projecting_difference_constraints
unsigned augmented_lagrangian_gradient
std::chrono::nanoseconds inactive_indices_res_lna
struct alpaqa::EvalCounter::EvalTimer time
std::chrono::nanoseconds prox_jacobian_diag
std::chrono::nanoseconds augmented_lagrangian_hessian
std::chrono::nanoseconds augmented_lagrangian
unsigned augmented_lagrangian_hessian
std::chrono::nanoseconds proximal_gradient_step
std::chrono::nanoseconds nonsmooth_objective
unsigned augmented_lagrangian_hessian_product
std::chrono::nanoseconds constraints_jacobian
std::chrono::nanoseconds objective
std::chrono::nanoseconds lagrangian_hessian
unsigned augmented_lagrangian_and_gradient
std::chrono::nanoseconds objective_gradient
std::chrono::nanoseconds constraints_gradient_product
std::chrono::nanoseconds augmented_lagrangian_and_gradient
std::chrono::nanoseconds augmented_lagrangian_gradient
std::chrono::nanoseconds objective_and_constraints
std::chrono::nanoseconds augmented_lagrangian_hessian_product
std::chrono::nanoseconds projection_multipliers
unsigned projecting_difference_constraints
unsigned objective_gradient_and_constraints_gradient_product
std::chrono::nanoseconds lagrangian_gradient
unsigned constraints_gradient_product
std::chrono::nanoseconds lagrangian_hessian_product
std::chrono::nanoseconds objective_and_gradient
std::chrono::nanoseconds objective_gradient_and_constraints_gradient_product