6#include "BendersStructsDatas.h"
7#include "antares-xpansion/benders/benders_core/BendersMethod.h"
8#include "antares-xpansion/xpansion_interfaces/ILogger.h"
10const std::string MATHLOGGERCONTEXT =
"Benders";
20 explicit HeadersManager(HEADERSTYPE type,
const BENDERSMETHOD& method);
23 BENDERSMETHOD method_;
25 virtual std::vector<std::string> HeadersList();
31 std::vector<std::string> HeadersList()
override;
38 explicit LogDestination(
const std::filesystem::path& file_path, std::streamsize width = 40);
40 std::ostream& operator<<(std::ostream& (*function)(std::ostream&))
42 return function(*stream_);
46 std::ostream& operator<<(
const T& obj);
48 std::ostream& InsertDelimiter()
50 return *stream_ << delimiter_;
54 std::ofstream file_stream_;
55 std::ostream* stream_;
56 std::streamsize width_ = 40;
57 std::string delimiter_ =
"\t";
60 void setDelimiter(
const std::string& delimiter);
64std::ostream& LogDestination::operator<<(
const T& obj)
66 return (*stream_) << std::left << std::setw(width_) << obj;
71 const HEADERSTYPE& type,
72 const BENDERSMETHOD& method);
76 const HEADERSTYPE& type,
77 const BENDERSMETHOD& method);
84 virtual std::vector<std::string> Headers()
const = 0;
87 virtual void PrintIterationSeparatorBegin()
override;
88 virtual void PrintIterationSeparatorEnd()
override;
89 virtual void setHeadersList() = 0;
95 explicit MathLogger(
const std::filesystem::path& file_path,
96 std::streamsize width = 40,
97 HEADERSTYPE type = HEADERSTYPE::LONG);
99 explicit MathLogger(std::streamsize width = 40, HEADERSTYPE type = HEADERSTYPE::SHORT);
103 LogUtils::LOGLEVEL level,
104 const std::string& context)
override;
106 std::vector<std::string> Headers()
const override;
108 virtual void setHeadersList() = 0;
109 HEADERSTYPE HeadersType()
const;
113 void setHeadersList(
const std::vector<std::string>& headers);
116 std::vector<std::string> headers_;
123 using MathLogger::MathLogger;
126 void setHeadersList()
override;
132 using MathLoggerBase::MathLoggerBase;
134 void setHeadersList()
override;
140 using MathLogger::MathLogger;
142 void setHeadersList()
override;
148 using MathLoggerBendersByBatch::MathLoggerBendersByBatch;
150 void setHeadersList()
override;
158 const std::vector<std::string>& headers,
163 headers_.push_back(
"Outer loop");
164 headers_.push_back(
"Ite");
165 headers_.insert(headers_.end(), headers.begin(), headers.end());
168 void setHeadersList()
override;
172 LogUtils::LOGLEVEL level,
173 const std::string& context)
override;
177 std::vector<std::string> headers_;
185 const std::filesystem::path& file_path,
186 std::streamsize width = 40,
187 HEADERSTYPE type = HEADERSTYPE::LONG);
189 std::streamsize width = 40,
190 HEADERSTYPE type = HEADERSTYPE::LONG);
195 LogUtils::LOGLEVEL level,
196 const std::string& context)
override;
198 void PrintIterationSeparatorBegin()
override;
199 void PrintIterationSeparatorEnd()
override;
204 void setHeadersList()
override;
205 std::vector<std::string> Headers()
const override;
209 std::shared_ptr<MathLogger> implementation_;
219 LogUtils::LOGLEVEL level,
220 const std::string& context)
override;
221 void add_logger(std::shared_ptr<MathLoggerImplementation> logger);
223 void add_logger(
const std::filesystem::path& file_path,
224 const std::vector<std::string>& headers,
227 virtual void PrintIterationSeparatorBegin()
override;
228 virtual void PrintIterationSeparatorEnd()
override;
232 std::vector<std::shared_ptr<MathLoggerImplementation>> math_loggers_;
236void MathLoggerDriver::add_logger(
const std::filesystem::path& file_path,
237 const std::vector<std::string>& headers,
240 auto impl = std::make_shared<MathLoggerExternalLoopSpecific<T>>(file_path, headers, t);
241 add_logger(std::make_shared<MathLoggerImplementation>(impl));
247 MathLogger::setHeadersList(headers_);
253 LogsDestination().InsertDelimiter();
254 LogsDestination() << data.criteria_current_iteration_data.benders_num_run;
255 LogsDestination().InsertDelimiter();
256 LogsDestination() << data.it;
257 LogsDestination().InsertDelimiter();
258 for (
const auto& t: data.criteria_current_iteration_data.*ptr_)
260 LogsDestination() << std::scientific << std::setprecision(10) << t;
261 LogsDestination().InsertDelimiter();
263 LogsDestination() << std::endl;
274 LogUtils::LOGLEVEL level,
275 const std::string& context)
Definition BendersMathLogger.h:35
Definition BendersMathLogger.h:213
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition BendersMathLogger.cpp:342
Definition BendersMathLogger.h:182
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:131
Definition BendersMathLogger.h:122
Definition BendersMathLogger.h:80
Definition BendersMathLogger.h:147
Definition BendersMathLogger.h:139
Definition BendersMathLogger.h:156
void display_message(const std::string &msg) override
pure virtual method to display a std::string message
Definition BendersMathLogger.h:267
Definition BendersMathLogger.h:94
void display_message(const std::string &str) override
pure virtual method to display a std::string message
Definition BendersMathLogger.cpp:144