8#include "BendersStructsDatas.h"
9#include "antares-xpansion/xpansion_interfaces/ILogger.h"
11const std::string MATHLOGGERCONTEXT =
"Benders";
21 explicit HeadersManager(HEADERSTYPE type,
const BENDERSMETHOD& method);
24 BENDERSMETHOD method_;
26 virtual std::vector<std::string> HeadersList();
32 std::vector<std::string> HeadersList()
override;
39 explicit LogDestination(
const std::filesystem::path& file_path, std::streamsize width = 40);
41 std::ostream& operator<<(std::ostream& (*function)(std::ostream&))
43 return function(*stream_);
47 std::ostream& operator<<(
const T& obj);
49 std::ostream& InsertDelimiter()
51 return *stream_ << delimiter_;
55 std::ofstream file_stream_;
56 std::ostream* stream_;
57 std::streamsize width_ = 40;
58 std::string delimiter_ =
"\t";
61 void setDelimiter(
const std::string& delimiter);
65std::ostream& LogDestination::operator<<(
const T& obj)
67 return (*stream_) << std::left << std::setw(width_) << obj;
72 const HEADERSTYPE& type,
73 const BENDERSMETHOD& method);
77 const HEADERSTYPE& type,
78 const BENDERSMETHOD& method);
85 virtual std::vector<std::string> Headers()
const = 0;
88 virtual void PrintIterationSeparatorBegin()
override;
89 virtual void PrintIterationSeparatorEnd()
override;
90 virtual void setHeadersList() = 0;
96 explicit MathLogger(
const std::filesystem::path& file_path,
97 std::streamsize width = 40,
98 HEADERSTYPE type = HEADERSTYPE::LONG);
100 explicit MathLogger(std::streamsize width = 40, HEADERSTYPE type = HEADERSTYPE::SHORT);
104 LogUtils::LOGLEVEL level,
105 const std::string& context)
override;
107 std::vector<std::string> Headers()
const override;
109 virtual void setHeadersList() = 0;
110 HEADERSTYPE HeadersType()
const;
114 void setHeadersList(
const std::vector<std::string>& headers);
117 std::vector<std::string> headers_;
124 using MathLogger::MathLogger;
127 void setHeadersList()
override;
133 using MathLoggerBase::MathLoggerBase;
135 void setHeadersList()
override;
141 using MathLogger::MathLogger;
143 void setHeadersList()
override;
149 using MathLoggerBendersByBatch::MathLoggerBendersByBatch;
151 void setHeadersList()
override;
159 const std::vector<std::string>& headers,
164 headers_.push_back(
"Outer loop");
165 headers_.push_back(
"Ite");
166 headers_.insert(headers_.end(), headers.begin(), headers.end());
169 void setHeadersList()
override;
173 LogUtils::LOGLEVEL level,
174 const std::string& context)
override;
178 std::vector<std::string> headers_;
186 const std::filesystem::path& file_path,
187 std::streamsize width = 40,
188 HEADERSTYPE type = HEADERSTYPE::LONG);
190 std::streamsize width = 40,
191 HEADERSTYPE type = HEADERSTYPE::LONG);
196 LogUtils::LOGLEVEL level,
197 const std::string& context)
override;
199 void PrintIterationSeparatorBegin()
override;
200 void PrintIterationSeparatorEnd()
override;
205 void setHeadersList()
override;
206 std::vector<std::string> Headers()
const override;
210 std::shared_ptr<MathLogger> implementation_;
220 LogUtils::LOGLEVEL level,
221 const std::string& context)
override;
222 void add_logger(std::shared_ptr<MathLoggerImplementation> logger);
224 void add_logger(
const std::filesystem::path& file_path,
225 const std::vector<std::string>& headers,
228 virtual void PrintIterationSeparatorBegin()
override;
229 virtual void PrintIterationSeparatorEnd()
override;
233 std::vector<std::shared_ptr<MathLoggerImplementation>> math_loggers_;
237void MathLoggerDriver::add_logger(
const std::filesystem::path& file_path,
238 const std::vector<std::string>& headers,
241 auto impl = std::make_shared<MathLoggerExternalLoopSpecific<T>>(file_path, headers, t);
242 add_logger(std::make_shared<MathLoggerImplementation>(impl));
248 MathLogger::setHeadersList(headers_);
254 LogsDestination().InsertDelimiter();
255 LogsDestination() << data.criteria_current_iteration_data.benders_num_run;
256 LogsDestination().InsertDelimiter();
257 LogsDestination() << data.it;
258 LogsDestination().InsertDelimiter();
259 for (
const auto& t: data.criteria_current_iteration_data.*ptr_)
261 LogsDestination() << std::scientific << std::setprecision(10) << t;
262 LogsDestination().InsertDelimiter();
264 LogsDestination() << std::endl;
275 LogUtils::LOGLEVEL level,
276 const std::string& context)
Definition BendersMathLogger.h:36
Definition BendersMathLogger.h:214
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition BendersMathLogger.cpp:342
Definition BendersMathLogger.h:183
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition BendersMathLogger.cpp:432
Definition BendersStructsDatas.h:9
Definition BendersStructsDatas.h:27
Xpansion Unique log Interface.
Definition ILogger.h:78
Definition BendersMathLogger.h:132
Definition BendersMathLogger.h:123
Definition BendersMathLogger.h:81
Definition BendersMathLogger.h:148
Definition BendersMathLogger.h:140
Definition BendersMathLogger.h:157
void display_message(const std::string &msg) override
pure virtual method to display a std::string message
Definition BendersMathLogger.h:268
Definition BendersMathLogger.h:95
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition BendersMathLogger.cpp:144