1#ifndef ANTARESXPANSION_ILOGGER_H
2#define ANTARESXPANSION_ILOGGER_H
10#include "antares-xpansion/xpansion_interfaces/LogUtils.h"
12typedef std::map<std::string, double> LogPoint;
14enum class StoppingCriterion {
22inline std::string criterion_to_str(
23 const StoppingCriterion stopping_criterion) {
24 std::string stop_crit(
"");
25 switch (stopping_criterion) {
26 case StoppingCriterion::absolute_gap:
27 stop_crit =
"absolute gap";
30 case StoppingCriterion::relative_gap:
31 stop_crit =
"relative gap";
34 case StoppingCriterion::max_iteration:
35 stop_crit =
"maximum iterations";
38 case StoppingCriterion::timelimit:
39 stop_crit =
"timelimit";
54 double subproblem_cost;
61 double optimality_gap;
64 double benders_elapsed_time;
66 double subproblem_time;
67 int cumulative_number_of_subproblem_resolved;
89 virtual void display_message(
const std::string &msg, LogUtils::LOGLEVEL level,
90 const std::string &context) = 0;
92 virtual void PrintIterationSeparatorBegin() = 0;
93 virtual void PrintIterationSeparatorEnd() = 0;
103 const std::string &context)
override {}
105 void PrintIterationSeparatorBegin()
override {};
106 void PrintIterationSeparatorEnd()
override {};
116 for (
auto logger : loggers) {
117 logger->display_message(str);
120 void AddLogger(std::shared_ptr<ILoggerXpansion> logger) {
121 loggers.push_back(logger);
124 virtual void PrintIterationSeparatorBegin()
override {
125 for (
auto logger : loggers) {
126 logger->PrintIterationSeparatorBegin();
130 virtual void PrintIterationSeparatorEnd()
override {
131 for (
auto logger : loggers) {
132 logger->PrintIterationSeparatorEnd();
135 virtual void display_message(
const std::string &msg, LogUtils::LOGLEVEL level,
136 const std::string &context)
override {
137 for (
auto logger : loggers) {
138 logger->display_message(msg, level, context);
143 std::vector<std::shared_ptr<ILoggerXpansion>> loggers;
155 virtual void display_message(
const std::string &str, LogUtils::LOGLEVEL level,
156 const std::string &context) = 0;
157 virtual void PrintIterationSeparatorBegin() = 0;
158 virtual void PrintIterationSeparatorEnd() = 0;
159 virtual void log_at_initialization(
const int it_number) = 0;
160 virtual void log_iteration_candidates(
const LogData &d) = 0;
161 virtual void log_master_solving_duration(
double durationInSeconds) = 0;
162 virtual void LogSubproblemsSolvingWalltime(
double durationInSeconds) = 0;
163 virtual void LogSubproblemsSolvingCumulativeCpuTime(
164 double durationInSeconds) = 0;
165 virtual void log_at_iteration_end(
const LogData &d) = 0;
166 virtual void log_at_ending(
const LogData &d) = 0;
167 virtual void log_total_duration(
double durationInSeconds) = 0;
168 virtual void log_stop_criterion_reached(
169 const StoppingCriterion stopping_criterion) = 0;
170 virtual void display_restart_message() = 0;
171 virtual void restart_elapsed_time(
const double elapsed_time) = 0;
172 virtual void number_of_iterations_before_restart(
173 const int num_iterations) = 0;
174 virtual void restart_best_iteration(
const int best_iterations) = 0;
175 virtual void restart_best_iterations_infos(
176 const LogData &best_iterations_data) = 0;
177 virtual void LogAtInitialRelaxation() = 0;
178 virtual void LogAtSwitchToInteger() = 0;
179 virtual void cumulative_number_of_sub_problem_solved(
int number) = 0;
180 const std::string CONTEXT =
"Benders";
183using Logger = std::shared_ptr<ILogger>;
abstract class for operational logs
Definition ILogger.h:150
virtual void display_message(const std::string &str)=0
pure virtual method to display a std::string message
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition ILogger.h:115
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition ILogger.h:101
Xpansion Unique log Interface.
Definition ILogger.h:74
virtual void display_message(const std::string &str)=0
pure virtual method to display a std::string message
void display_message(const std::ostringstream &msg)
Definition ILogger.h:85