Loading...
Searching...
No Matches
ROCPP.h
1//
2// Created by Henri on 13/05/2026.
3//
4
5#ifndef IDOL_ROCPP_WRAPPER_H
6#define IDOL_ROCPP_WRAPPER_H
7
8#include "idol/bilevel/modeling/Description.h"
9#include "idol/robust/modeling/Description.h"
10#include "idol/general/optimizers/OptimizerFactory.h"
11
12namespace idol::Robust {
13 class ROCPP;
14}
15
17public:
18 enum Approximation { KAdaptability, PiecewiseLinearDR, LinearDR };
19
20 ROCPP(const Robust::Description& t_robust_description, const Bilevel::Description& t_bilevel_description, Approximation t_approximation);
21
22 ROCPP(const ROCPP& t_src);
23
24 ROCPP& with_deterministic_optimizer(const OptimizerFactory& t_optimizer_factory);
25
26 ROCPP& with_n_policies(unsigned int t_n_policies);
27
28 [[nodiscard]] OptimizerFactory* clone() const override;
29
30 static Model make_model(const Model& t_model,
31 const Robust::Description& t_robust_description,
32 const Bilevel::Description& t_bilevel_description,
33 Approximation t_approximation,
34 unsigned int t_k = 1
35 );
36protected:
37 [[nodiscard]] Optimizer* create(const Model& t_model) const override;
38private:
39 const Bilevel::Description& m_bilevel_description;
40 const Robust::Description& m_robust_description;
41 std::optional<Approximation> m_approximation;
42 std::optional<unsigned int> m_n_policies;
43 std::unique_ptr<OptimizerFactory> m_optimizer_factory;
44};
45
46#endif //IDOL_ROCPP_WRAPPER_H