Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
SolverFactory.h
1#pragma once
2
3#include <set>
4
5#include "SolverConfig.h"
6#include "antares-xpansion/multisolver_interface/SolverAbstract.h"
7#include "antares-xpansion/xpansion_interfaces/ILogger.h"
8
13enum class SOLVER_TYPE
14{
15 INTEGER,
16 CONTINUOUS
17};
18
24{
25public:
26 static std::vector<std::string> GetAvailableSolvers(std::shared_ptr<ILoggerXpansion> logger);
27
32 static std::vector<std::string> GetSupportedSolvers();
33};
34
41{
42private:
43 std::vector<std::string> _available_solvers;
44 bool _is_xpress_available = false; // remplacé ancien isXpress_available_
45
46public:
50 explicit SolverFactory(
51 std::shared_ptr<ILoggerXpansion> logger = std::make_shared<EmptyLogger>());
52
53public:
62 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(
63 const std::string& solver_name) const;
64 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(
65 const std::string& solver_name,
66 const SolverLogManager& log_manager) const;
67 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(const std::string& solver_name,
68 SOLVER_TYPE solver_type) const;
69 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(
70 const std::string& solver_name,
71 SOLVER_TYPE solver_type,
72 const SolverLogManager& log_manager) const;
73
82 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(
83 const SolverConfig& solver_config) const;
84 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(const SolverConfig& solver_config,
85 SOLVER_TYPE solver_type) const;
86 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(
87 const SolverConfig& solver_config,
88 const SolverLogManager& log_manager) const;
89 [[nodiscard]] std::shared_ptr<SolverAbstract> create_solver(
90 const SolverConfig& solver_config,
91 SOLVER_TYPE solver_type,
92 const SolverLogManager& log_manager) const;
93
100 static std::shared_ptr<SolverAbstract> copy_solver(const SolverAbstract& to_copy);
101
105 [[nodiscard]] const std::vector<std::string>& get_solvers_list() const;
106
107 [[nodiscard]] bool is_xpress_available() const noexcept
108 {
109 return _is_xpress_available;
110 }
111
112 std::shared_ptr<ILoggerXpansion> logger_;
113};
Definition SolverAbstract.h:203
Class to store the configuration of a solver Invariant: name is lowercase.
Definition SolverConfig.h:12
Definition SolverFactory.h:41
static std::shared_ptr< SolverAbstract > copy_solver(const SolverAbstract &to_copy)
Copy constructor : Creates and returns to an object solver from the wanted implementation by copying ...
Definition SolverFactory.cpp:247
std::shared_ptr< SolverAbstract > create_solver(const std::string &solver_name) const
Creates and returns to an object solver from the wanted implementation.
Definition SolverFactory.cpp:108
const std::vector< std::string > & get_solvers_list() const
Returns a reference to the list of available solvers.
Definition SolverFactory.cpp:252
SolverFactory(std::shared_ptr< ILoggerXpansion > logger=std::make_shared< EmptyLogger >())
Constructor of SolverFactory, fills the list of available solvers.
Definition SolverFactory.cpp:70
Definition SolverFactory.h:24
static std::vector< std::string > GetSupportedSolvers()
Returns a list of supported solvers Supported doesn't mean available, for exemple if licence are not ...
Definition SolverFactory.cpp:56
Definition SolverAbstract.h:20