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