aligator  0.16.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
logger.hpp
Go to the documentation of this file.
1
3#pragma once
4
5#include "string-hash.hpp"
6
7#include <string_view>
8#include <boost/unordered_map.hpp>
9
10namespace aligator {
11using uint = unsigned int;
12
13constexpr std::string_view int_format = "{: >{}d} ";
14constexpr std::string_view sci_format = "{: >{}.3e} ";
15constexpr std::string_view dbl_format = "{: >{}.3g} ";
16struct LogColumn {
17 std::string_view name;
18 std::string_view format;
20};
21
22// log columns names and widths
23static const LogColumn BASIC_KEYS[12] = {
24 {"iter", int_format, 5U}, {"alpha", sci_format, 10U},
25 {"inner_crit", sci_format, 11U}, {"prim_err", sci_format, 10U},
26 {"dual_err", sci_format, 10U}, {"preg", sci_format, 10U},
27 {"cost", sci_format, 10U}, {"dphi0", sci_format, 11U},
28 {"merit", sci_format, 10U}, {"ΔM", sci_format, 11U},
29 {"aliter", int_format, 7U}, {"mu", dbl_format, 7U}};
30
32struct Logger {
33 bool active = true;
34
35 Logger() = default;
36
38 void log();
39 void finish(bool conv);
40 void reset();
41
42 void addColumn(std::string_view name, uint width, std::string_view format);
43 void addColumn(LogColumn col) { addColumn(col.name, col.width, col.format); }
44
45 void addEntry(std::string_view name, double val);
46 void addEntry(std::string_view name, size_t val);
47
48protected:
49 std::vector<std::string> m_columnNames; // in insertion order
50 boost::unordered_map<std::string_view, std::pair<uint, std::string>,
52 m_colSpecs; // column sizes and formats
53 boost::unordered_map<std::string_view, std::string, ExtendedStringHash>
54 m_currentLine; // iterate using order
55};
56
57} // namespace aligator
Main package namespace.
constexpr std::string_view sci_format
Definition logger.hpp:14
unsigned int uint
Definition logger.hpp:11
static const LogColumn BASIC_KEYS[12]
Definition logger.hpp:23
constexpr std::string_view dbl_format
Definition logger.hpp:15
constexpr std::string_view int_format
Definition logger.hpp:13
Extended hashing function for strings which supports const char* and std::string_view.
std::string_view format
Definition logger.hpp:18
std::string_view name
Definition logger.hpp:17
void addEntry(std::string_view name, double val)
void addEntry(std::string_view name, size_t val)
boost::unordered_map< std::string_view, std::pair< uint, std::string >, ExtendedStringHash > m_colSpecs
Definition logger.hpp:52
std::vector< std::string > m_columnNames
Definition logger.hpp:49
Logger()=default
void addColumn(std::string_view name, uint width, std::string_view format)
boost::unordered_map< std::string_view, std::string, ExtendedStringHash > m_currentLine
Definition logger.hpp:54
void finish(bool conv)
void addColumn(LogColumn col)
Definition logger.hpp:43