Loading...
Searching...
No Matches
Convexification.h
1//
2// Created by Henri on 26/05/2026.
3//
4
5#ifndef IDOL_CONVEXIFICATION_H
6#define IDOL_CONVEXIFICATION_H
7
8#include "idol/general/optimizers/OptimizerFactory.h"
9
10namespace idol::Bilevel {
11 class Description;
12}
13
14namespace idol::Robust {
15 class Description;
16 class Convexification;
17}
18
20 const Robust::Description& m_robust_description;
21 const Bilevel::Description& m_bilevel_description;
22 std::unique_ptr<OptimizerFactory> m_master_problem_optimizer;
23 std::unique_ptr<OptimizerFactory> m_sub_problem_level_optimizer;
24 std::unique_ptr<OptimizerFactory> m_integer_master_heuristic_optimizer;
25protected:
26 [[nodiscard]] Optimizer *create(const Model &t_model) const override;
27public:
28 explicit Convexification(const Robust::Description& t_robust_description, const Bilevel::Description& t_bilevel_description);
29
30 Convexification(const Convexification& t_src);
31
32 [[nodiscard]] OptimizerFactory *clone() const override;
33
34 Convexification& with_master_optimizer(const OptimizerFactory& t_optimizer);
35
36 Convexification& with_sub_problem_optimizer(const OptimizerFactory& t_optimizer);
37
38 Convexification& with_integer_master_heuristic_optimizer(const OptimizerFactory& t_optimizer);
39
40 Convexification& operator+=(const OptimizerFactory& t_optimizer) { return with_master_optimizer(t_optimizer); }
41};
42
43
44#endif //IDOL_CONVEXIFICATION_H