1#ifndef ANTARESXPANSION_ILOGGER_H
2#define ANTARESXPANSION_ILOGGER_H
11#include "antares-xpansion/xpansion_interfaces/LogUtils.h"
13typedef std::map<std::string, double> LogPoint;
15enum class StoppingCriterion
24inline std::string criterion_to_str(
const StoppingCriterion stopping_criterion)
26 std::string stop_crit(
"");
27 switch (stopping_criterion)
29 case StoppingCriterion::absolute_gap:
30 stop_crit =
"absolute gap";
33 case StoppingCriterion::relative_gap:
34 stop_crit =
"relative gap";
37 case StoppingCriterion::max_iteration:
38 stop_crit =
"maximum iterations";
41 case StoppingCriterion::timelimit:
42 stop_crit =
"timelimit";
58 double subproblem_cost;
65 double optimality_gap;
68 double benders_elapsed_time;
70 double subproblem_time;
71 int cumulative_number_of_subproblem_resolved;
96 LogUtils::LOGLEVEL level,
97 const std::string& context)
100 virtual void PrintIterationSeparatorBegin() = 0;
102 virtual void PrintIterationSeparatorEnd() = 0;
117 LogUtils::LOGLEVEL level,
118 const std::string& context)
override
122 void PrintIterationSeparatorBegin()
override {};
124 void PrintIterationSeparatorEnd()
override {};
138 for (
auto logger: loggers)
140 logger->display_message(str);
144 void AddLogger(std::shared_ptr<ILoggerXpansion> logger)
146 loggers.push_back(logger);
149 virtual void PrintIterationSeparatorBegin()
override
151 for (
auto logger: loggers)
153 logger->PrintIterationSeparatorBegin();
157 virtual void PrintIterationSeparatorEnd()
override
159 for (
auto logger: loggers)
161 logger->PrintIterationSeparatorEnd();
166 LogUtils::LOGLEVEL level,
167 const std::string& context)
override
169 for (
auto logger: loggers)
171 logger->display_message(msg, level, context);
176 std::vector<std::shared_ptr<ILoggerXpansion>> loggers;
191 LogUtils::LOGLEVEL level,
192 const std::string& context)
override
195 void PrintIterationSeparatorBegin()
override = 0;
197 void PrintIterationSeparatorEnd()
override = 0;
199 virtual void log_at_initialization(
const int it_number) = 0;
201 virtual void log_iteration_candidates(
const LogData& d) = 0;
203 virtual void log_master_solving_duration(
double durationInSeconds) = 0;
205 virtual void LogSubproblemsSolvingWalltime(
double durationInSeconds) = 0;
207 virtual void LogSubproblemsSolvingCumulativeCpuTime(
double durationInSeconds) = 0;
209 virtual void log_at_iteration_end(
const LogData& d) = 0;
211 virtual void log_at_ending(
const LogData& d) = 0;
213 virtual void log_total_duration(
double durationInSeconds) = 0;
215 virtual void log_stop_criterion_reached(
const StoppingCriterion stopping_criterion) = 0;
217 virtual void display_restart_message() = 0;
219 virtual void restart_elapsed_time(
const double elapsed_time) = 0;
221 virtual void number_of_iterations_before_restart(
const int num_iterations) = 0;
223 virtual void restart_best_iteration(
const int best_iterations) = 0;
225 virtual void restart_best_iterations_infos(
const LogData& best_iterations_data) = 0;
227 virtual void LogAtInitialRelaxation() = 0;
229 virtual void LogAtSwitchToInteger() = 0;
231 virtual void cumulative_number_of_sub_problem_solved(
int number) = 0;
233 const std::string CONTEXT =
"Benders";
236using Logger = std::shared_ptr<ILogger>;
abstract class for operational logs
Definition ILogger.h:184
void display_message(const std::string &str) override=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:136
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition ILogger.h:112
Xpansion Unique log Interface.
Definition ILogger.h:79
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:90