idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
Benders.h
1//
2// Created by henri on 08.05.25.
3//
4
5#ifndef IDOL_ROBUST_BENDERS_H
6#define IDOL_ROBUST_BENDERS_H
7
8#include "idol/general/optimizers/OptimizerFactory.h"
9#include "idol/bilevel/modeling/Description.h"
10#include "idol/robust/modeling/Description.h"
11
12namespace idol::Robust {
13 class Benders;
14}
15
17 const Bilevel::Description& m_bilevel_description;
18 const Robust::Description& m_robust_description;
19
20 // Initial scenarios
21 std::vector<Point<Var>> m_initial_scenarios;
22
23 // Separation
24 std::list<std::unique_ptr<OptimizerFactory>> m_optimizer_feasibility_separation;
25 std::list<std::unique_ptr<OptimizerFactory>> m_optimizer_optimality_separation;
26 std::list<std::unique_ptr<OptimizerFactory>> m_optimizer_joint_separation;
27public:
28 Benders(const Robust::Description& t_robust_description,
29 const Bilevel::Description& t_bilevel_description);
30
31 Benders(const Benders& t_src);
32
33 Optimizer *operator()(const Model &t_model) const override;
34
35 [[nodiscard]] OptimizerFactory *clone() const override;
36
37 Benders& reserve_initial_scenarios(unsigned int t_n);
38
39 Benders& add_initial_scenario(Point<Var> t_scenario);
40
41 Benders& add_feasibility_separation_optimizer(const OptimizerFactory& t_optimizer);
42
43 Benders& add_optimality_separation_optimizer(const OptimizerFactory& t_optimizer);
44
45 Benders& add_joint_separation_optimizer(const OptimizerFactory& t_optimizer);
46};
47
48#endif //IDOL_ROBUST_BENDERS_H
OptimizerFactory * clone() const override
Optimizer * operator()(const Model &t_model) const override