1#ifndef GYM_PCB_RL_STATS_H
2#define GYM_PCB_RL_STATS_H
4#include "RL/Action.hpp"
13 ResultRecord(
const Agent&);
19 uint64_t TimeMicroseconds;
23 void reset(
bool success, Reward r = std::numeric_limits<Reward>::infinity());
24 std::string str()
const;
25 PyObject *getPy()
const;
30 std::vector<ResultRecord> TimeLine;
33 std::map<std::string, float> F32;
34 std::map<std::string, int64_t> I64;
39 PyObject *getPy()
const;
42inline void ResultRecord::reset(
bool success, Reward r)
51inline void ResultCollection::reset()
54 WorstSuccess.reset(
false);
59inline bool ResultCollection::shouldAdd(
const Action::Result &res)
const
61 return TimeLine.empty() ||
62 (res > TimeLine.back().asResult()) ||
63 (res < Worst.asResult()) ||
64 (res.Success && res < WorstSuccess.asResult());
68 const auto res = rr.asResult();
69 if (TimeLine.empty() || res > TimeLine.back().asResult())
70 TimeLine.emplace_back(rr);
71 if (rr.Success && res < WorstSuccess.asResult())
73 if (res < Worst.asResult())