Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
presolve.h
1#pragma once
2#include <antares-xpansion/multisolver_interface/SolverAbstract.h>
3#include <antares-xpansion/xpansion_interfaces/ILogger.h>
4#include <filesystem>
5#include <span>
6#include <unordered_map>
7
8struct PresolveOptions;
9
11{
12public:
13 static constexpr std::string_view PRESOLVE_CONTEXT{"Presolve"};
14 // Initialise un solver; lève std::runtime_error si indisponible
15 std::shared_ptr<SolverAbstract> init_solver(const PresolveOptions& options,
16 std::shared_ptr<ILogger>& logger);
17
18 // Construit le mapping entre indices candidats (full) et indices réduits après presolve.
19 // Pré-condition: solver déjà en état presolve_only.
20 // Post-condition: mapping size == candidate_ids.size() sinon exception.
21 [[nodiscard]] std::unordered_map<int, int> get_candidates_presolve_map(
22 const SolverAbstract& solver,
23 std::span<const int> candidate_ids) const;
24
25 void reduce_problems(std::shared_ptr<SolverAbstract> solver,
26 const PresolveOptions& options,
27 std::shared_ptr<ILogger> logger);
28
29private:
30 static void safe_create_directory(const std::filesystem::path& dir);
31 static void safe_move_file(const std::filesystem::path& from, const std::filesystem::path& to);
32};
Definition presolve.h:11
Definition SolverAbstract.h:203
Definition common.h:168