Nonconvex constrained optimization
Loading...
Searching...
No Matches
problem-counters.cpp
Go to the documentation of this file.
2
3#include <iomanip>
4#include <iostream>
5
6namespace alpaqa {
7
8namespace {
9struct CountResult {
10 unsigned count;
11 std::chrono::nanoseconds time;
12};
13std::ostream &operator<<(std::ostream &os, const CountResult &t) {
14 auto sec = [](auto t) { return std::chrono::duration<double>(t).count(); };
15 os << std::setw(8);
16 if (t.count > 0) {
17 os << t.count << " (";
18 auto old = os.flags();
19 auto prec = os.precision(3);
20 os << std::scientific << std::setw(9) << 1e6 * sec(t.time) << " µs, "
21 << std::setw(9) << 1e6 * sec(t.time) / static_cast<double>(t.count)
22 << " µs/call)\r\n";
23 os.precision(prec);
24 os.flags(old);
25 } else {
26 os << '-' << "\r\n";
27 }
28 return os;
29}
30} // namespace
31
32#define ALPAQA_STRINGIFY(a) ALPAQA_STRINGIFY_IMPL(a)
33#define ALPAQA_STRINGIFY_IMPL(a) #a
34#define ALPAQA_PRINT_EVAL(x) \
35 do { \
36 os << std::setw(53) << ALPAQA_STRINGIFY(x) ":" \
37 << CountResult{c.x, c.time.x}; \
38 } while (false)
39
40std::ostream &operator<<(std::ostream &os, const EvalCounter &c) {
41 ALPAQA_PRINT_EVAL(projecting_difference_constraints);
42 ALPAQA_PRINT_EVAL(projection_multipliers);
43 ALPAQA_PRINT_EVAL(proximal_gradient_step);
44 ALPAQA_PRINT_EVAL(inactive_indices_res_lna);
45 ALPAQA_PRINT_EVAL(objective);
46 ALPAQA_PRINT_EVAL(objective_gradient);
47 ALPAQA_PRINT_EVAL(objective_and_gradient);
48 ALPAQA_PRINT_EVAL(objective_and_constraints);
49 ALPAQA_PRINT_EVAL(objective_gradient_and_constraints_gradient_product);
50 ALPAQA_PRINT_EVAL(constraints);
51 ALPAQA_PRINT_EVAL(constraints_gradient_product);
52 ALPAQA_PRINT_EVAL(grad_gi);
53 ALPAQA_PRINT_EVAL(constraints_jacobian);
54 ALPAQA_PRINT_EVAL(lagrangian_gradient);
55 ALPAQA_PRINT_EVAL(lagrangian_hessian_product);
56 ALPAQA_PRINT_EVAL(lagrangian_hessian);
57 ALPAQA_PRINT_EVAL(augmented_lagrangian_hessian_product);
58 ALPAQA_PRINT_EVAL(augmented_lagrangian_hessian);
59 ALPAQA_PRINT_EVAL(augmented_lagrangian);
60 ALPAQA_PRINT_EVAL(augmented_lagrangian_gradient);
61 ALPAQA_PRINT_EVAL(augmented_lagrangian_and_gradient);
62 os << "+ --------------------------------------------------:\n" //
63 << std::setw(53) << "total:" //
64 << CountResult{
94 };
95 return os;
96}
97
98} // namespace alpaqa
std::ostream & operator<<(std::ostream &os, PANOCStopCrit s)
#define ALPAQA_PRINT_EVAL(x)
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 augmented_lagrangian_hessian
std::chrono::nanoseconds augmented_lagrangian
unsigned augmented_lagrangian_hessian
std::chrono::nanoseconds proximal_gradient_step
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