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
23inline std::string criterion_to_str(
const StoppingCriterion stopping_criterion)
25 std::string stop_crit(
"");
26 switch (stopping_criterion)
28 case StoppingCriterion::absolute_gap:
29 stop_crit =
"absolute gap";
32 case StoppingCriterion::relative_gap:
33 stop_crit =
"relative gap";
36 case StoppingCriterion::max_iteration:
37 stop_crit =
"maximum iterations";
40 case StoppingCriterion::timelimit:
41 stop_crit =
"timelimit";
57 double subproblem_cost;
64 double optimality_gap;
67 double benders_elapsed_time;
69 double subproblem_time;
70 int cumulative_number_of_subproblem_resolved;
95 LogUtils::LOGLEVEL level,
96 const std::string& context)
99 virtual void PrintIterationSeparatorBegin() = 0;
100 virtual void PrintIterationSeparatorEnd() = 0;
114 LogUtils::LOGLEVEL level,
115 const std::string& context)
override
119 void PrintIterationSeparatorBegin()
override {};
120 void PrintIterationSeparatorEnd()
override {};
134 for (
auto logger: loggers)
136 logger->display_message(str);
140 void AddLogger(std::shared_ptr<ILoggerXpansion> logger)
142 loggers.push_back(logger);
145 virtual void PrintIterationSeparatorBegin()
override
147 for (
auto logger: loggers)
149 logger->PrintIterationSeparatorBegin();
153 virtual void PrintIterationSeparatorEnd()
override
155 for (
auto logger: loggers)
157 logger->PrintIterationSeparatorEnd();
162 LogUtils::LOGLEVEL level,
163 const std::string& context)
override
165 for (
auto logger: loggers)
167 logger->display_message(msg, level, context);
172 std::vector<std::shared_ptr<ILoggerXpansion>> loggers;
186 LogUtils::LOGLEVEL level,
187 const std::string& context)
189 virtual void PrintIterationSeparatorBegin() = 0;
190 virtual void PrintIterationSeparatorEnd() = 0;
191 virtual void log_at_initialization(
const int it_number) = 0;
192 virtual void log_iteration_candidates(
const LogData& d) = 0;
193 virtual void log_master_solving_duration(
double durationInSeconds) = 0;
194 virtual void LogSubproblemsSolvingWalltime(
double durationInSeconds) = 0;
195 virtual void LogSubproblemsSolvingCumulativeCpuTime(
double durationInSeconds) = 0;
196 virtual void log_at_iteration_end(
const LogData& d) = 0;
197 virtual void log_at_ending(
const LogData& d) = 0;
198 virtual void log_total_duration(
double durationInSeconds) = 0;
199 virtual void log_stop_criterion_reached(
const StoppingCriterion stopping_criterion) = 0;
200 virtual void display_restart_message() = 0;
201 virtual void restart_elapsed_time(
const double elapsed_time) = 0;
202 virtual void number_of_iterations_before_restart(
const int num_iterations) = 0;
203 virtual void restart_best_iteration(
const int best_iterations) = 0;
204 virtual void restart_best_iterations_infos(
const LogData& best_iterations_data) = 0;
205 virtual void LogAtInitialRelaxation() = 0;
206 virtual void LogAtSwitchToInteger() = 0;
207 virtual void cumulative_number_of_sub_problem_solved(
int number) = 0;
208 const std::string CONTEXT =
"Benders";
211using Logger = std::shared_ptr<ILogger>;
abstract class for operational logs
Definition ILogger.h:180
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:132
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition ILogger.h:109
Xpansion Unique log Interface.
Definition ILogger.h:78
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:89