A C++ Framework for Optimization
Loading...
Searching...
No Matches
Formulation.h
1//
2// Created by henri on 09.01.26.
3//
4
5#ifndef IDOL_CVCCG_FORMULATION_H
6#define IDOL_CVCCG_FORMULATION_H
7
8#include <idol/mixed-integer/modeling/models/Model.h>
9
10namespace idol {
11 namespace Optimizers::Robust {
12 class CriticalValueColumnAndConstraintGeneration;
13 }
14 namespace CVCCG {
15 class Formulation;
16 }
17}
18
20public:
22
23 Model& master() { return m_master; }
24 [[nodiscard]] const idol::Model& master() const { return m_master; }
25
26 void update_separation_problems(const PrimalPoint& t_master_solution);
27 void add_scenario(const Ctr& t_ctr, const PrimalPoint& t_scenario);
28
29 auto separation_problems() { return IteratorForward(m_separation_problems); }
30 auto separation_problems() const { return ConstIteratorForward(m_separation_problems); }
31
32private:
34 Model m_master;
35 Map<Ctr, Model> m_separation_problems; // Constraints from the master <-> Model for separation
36 Map<Ctr, Map<long int, Var>> m_critical_values; // Constraints from the uncertainty set <-> (critical value <-> indicator variable)
37
38 void initialize_master_problem();
39 void initialize_separation_problems();
40 void initialize_critical_values();
41 void update_separation_problem_objective(const Ctr& t_ctr, Model& t_separation_problem, const PrimalPoint& t_master_solution);
42 void update_separation_problems_constraints(const PrimalPoint& t_master_solution);
43};
44
45#endif //IDOL_CVCCG_FORMULATION_H