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#include <memory>
10
11namespace idol::Bilevel {
12 class Description;
13}
14
15namespace idol::Robust {
16 class Description;
17 class Convexification;
18}
19
21 const Robust::Description& m_robust_description;
22 const Bilevel::Description& m_bilevel_description;
23 std::unique_ptr<OptimizerFactory> m_master_problem_optimizer;
24 std::unique_ptr<OptimizerFactory> m_sub_problem_level_optimizer;
25 std::unique_ptr<OptimizerFactory> m_integer_master_heuristic_optimizer;
26protected:
27 [[nodiscard]] Optimizer *create(const Model &t_model) const override;
28public:
29 explicit Convexification(const Robust::Description& t_robust_description, const Bilevel::Description& t_bilevel_description);
30
31 Convexification(const Convexification& t_src);
32
33 [[nodiscard]] OptimizerFactory *clone() const override;
34
35 Convexification& with_master_optimizer(const OptimizerFactory& t_optimizer);
36
37 Convexification& with_sub_problem_optimizer(const OptimizerFactory& t_optimizer);
38
39 Convexification& with_integer_master_heuristic_optimizer(const OptimizerFactory& t_optimizer);
40
41 Convexification& operator+=(const OptimizerFactory& t_optimizer) { return with_master_optimizer(t_optimizer); }
42};
43
44
45#endif //IDOL_CONVEXIFICATION_H