idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
AffineDecisionRule.h
1//
2// Created by henri on 28.11.24.
3//
4
5#ifndef IDOL_AFFINEDECISIONRULE_H
6#define IDOL_AFFINEDECISIONRULE_H
7
8#include "idol/general/optimizers/OptimizerFactory.h"
9#include "idol/robust/modeling/Description.h"
10#include "idol/mixed-integer/modeling/models/Model.h"
11
12namespace idol::Robust {
13 class AffineDecisionRule;
14}
15
17 const Robust::Description& m_description;
18 std::unique_ptr<OptimizerFactory> m_deterministic_optimizer;
19public:
20 explicit AffineDecisionRule(const Robust::Description& t_description);
21
23
24 Optimizer *operator()(const Model &t_model) const override;
25
26 [[nodiscard]] OptimizerFactory *clone() const override;
27
28 AffineDecisionRule& with_deterministic_optimizer(const OptimizerFactory& t_deterministic_optimizer);
29
30 struct Result {
31
32 Model model;
33 std::vector<QuadExpr<Var>> affine_decision_rules;
34 Robust::Description description;
35
36 explicit Result(Model&& t_model, const Model& t_uncertainty_set) : model(std::move(t_model)), description(t_uncertainty_set) {}
37 };
38
39 static Result make_model(const Model& t_model, const Robust::Description& t_description);
40};
41
42
43#endif //IDOL_AFFINEDECISIONRULE_H
Optimizer * operator()(const Model &t_model) const override
OptimizerFactory * clone() const override