Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
LinkProblemsGenerator.h
1#pragma once
2
3#include <filesystem>
4#include <memory>
5#include <mutex>
6#include <utility>
7
8#include "antares-xpansion/helpers/ArchiveReader.h"
9#include "antares-xpansion/helpers/ArchiveWriter.h"
10#include "antares-xpansion/helpers/FileInBuffer.h"
11#include "antares-xpansion/lpnamer/helper/ProblemGenerationLogger.h"
12#include "antares-xpansion/lpnamer/input_reader/MpsTxtWriter.h"
13#include "antares-xpansion/lpnamer/input_reader/VariableFileReader.h"
14#include "antares-xpansion/lpnamer/problem_modifier/IProblemProviderPort.h"
15#include "antares-xpansion/lpnamer/problem_modifier/IProblemVariablesProviderPort.h"
16#include "antares-xpansion/lpnamer/problem_modifier/IProblemWriter.h"
17#include "antares-xpansion/lpnamer/problem_modifier/ProblemModifier.h"
18#include "antares-xpansion/multisolver_interface/SolverAbstract.h"
19#include "antares-xpansion/multisolver_interface/SolverConfig.h"
20#include "antares-xpansion/xpansion_interfaces/StringManip.h"
21
22const std::string CANDIDATES_INI{"candidates.ini"};
23const std::string STRUCTURE_FILE{"structure.txt"};
24const std::string STUDY_FILE{"study.antares"};
25using CandidateNameAndProblemName = std::pair<std::string, std::string>;
26using ColId = unsigned int;
27using Couplings = std::map<CandidateNameAndProblemName, ColId>;
28
30{
31public:
32 LinkProblemsGenerator(std::filesystem::path& lpDir,
33 const std::vector<ActiveLink>& links,
34 SolverConfig solver_config,
35 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger,
36 SolverLogManager& solver_log_manager,
37 bool rename_problems):
38 _links(links),
39 solver_config_(std::move(solver_config)),
40 lpDir_(lpDir),
41 logger_(std::move(logger)),
42 rename_problems_(rename_problems),
43 solver_log_manager_(solver_log_manager)
44 {
45 }
46
47 void treatloop(const std::filesystem::path& root,
48 Couplings& couplings,
49 const std::vector<ProblemData>& mps_list,
50 IProblemWriter* writer);
51 void treat(const std::string& problem_name,
52 Couplings& couplings,
53 Problem* problem,
54 IProblemVariablesProviderPort* variable_provider,
55 IProblemWriter* writer);
56 void treat(const std::string& problem_name,
57 Couplings& couplings,
58 IProblemProviderPort* problem_provider,
59 IProblemVariablesProviderPort* variable_provider,
60 IProblemWriter* writer);
61
62private:
63 const std::vector<ActiveLink>& _links;
64 SolverConfig solver_config_;
65 std::filesystem::path lpDir_ = "";
66 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger_;
67 mutable std::mutex coupling_mutex_;
68 bool rename_problems_ = false;
69 SolverLogManager& solver_log_manager_;
70};
Definition IProblemProviderPort.h:10
Definition IProblemVariablesProviderPort.h:21
Definition IProblemWriter.h:10
Definition LinkProblemsGenerator.h:30
Decorator to the SolverAbstract class.
Definition Problem.h:16
Class to store the configuration of a solver Invariant: name is lowercase.
Definition SolverConfig.h:12
Definition SolverAbstract.h:17