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;
30 std::optional<bool> m_check_for_repeated_scenarios;
31public:
32 ColumnAndConstraintGeneration(const Robust::Description& t_robust_description,
33 const Bilevel::Description& t_bilevel_description);
34
36
37 Optimizer *operator()(const Model &t_model) const override;
38
39 [[nodiscard]] OptimizerFactory *clone() const override;
40
41 ColumnAndConstraintGeneration& with_master_optimizer(const idol::OptimizerFactory &t_deterministic_optimizer);
42
43 ColumnAndConstraintGeneration& reserve_initial_scenarios(unsigned int t_n);
44
45 ColumnAndConstraintGeneration& add_initial_scenario(Point<Var> t_scenario);
46
47 ColumnAndConstraintGeneration& with_initial_scenario_by_minimization(const OptimizerFactory& t_optimizer);
48
49 ColumnAndConstraintGeneration& with_initial_scenario_by_maximization(const OptimizerFactory& t_optimizer);
50
51 ColumnAndConstraintGeneration& add_feasibility_separation_optimizer(const OptimizerFactory& t_optimizer);
52
53 ColumnAndConstraintGeneration& add_optimality_separation_optimizer(const OptimizerFactory& t_optimizer);
54
55 ColumnAndConstraintGeneration& add_joint_separation_optimizer(const OptimizerFactory& t_optimizer);
56
57 ColumnAndConstraintGeneration& with_check_for_repeated_scenarios(bool t_value);
58};
59
60#endif //IDOL_COLUMNANDCONSTRAINTGENERATION_H
OptimizerFactory * clone() const override
Optimizer * operator()(const Model &t_model) const override