idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
Optimizers_Deterministic.h
1//
2// Created by henri on 28.11.24.
3//
4
5#ifndef IDOL_OPTIMIZERS_DETERMINISTIC_H
6#define IDOL_OPTIMIZERS_DETERMINISTIC_H
7
8#include "idol/robust/modeling/Description.h"
9#include "idol/general/optimizers/Algorithm.h"
10#include "idol/general/optimizers/OptimizerFactory.h"
11#include "idol/mixed-integer/modeling/models/Model.h"
12
13namespace idol::Optimizers::Robust {
14 class Deterministic;
15}
16
18 const idol::Robust::Description& m_description;
19 std::unique_ptr<OptimizerFactory> m_deterministic_optimizer;
20 std::unique_ptr<Model> m_deterministic_model;
21
22 void throw_if_no_deterministic_model() const;
23public:
24 Deterministic(const Model& t_parent, const idol::Robust::Description& t_description, const OptimizerFactory& t_deterministic_optimizer);
25
26 [[nodiscard]] std::string name() const override;
27
28 [[nodiscard]] SolutionStatus get_status() const override;
29
30 [[nodiscard]] SolutionReason get_reason() const override;
31
32 [[nodiscard]] double get_best_obj() const override;
33
34 [[nodiscard]] double get_best_bound() const override;
35
36 [[nodiscard]] double get_var_primal(const Var &t_var) const override;
37
38 [[nodiscard]] double get_var_reduced_cost(const Var &t_var) const override;
39
40 [[nodiscard]] double get_var_ray(const Var &t_var) const override;
41
42 [[nodiscard]] double get_ctr_dual(const Ctr &t_ctr) const override;
43
44 [[nodiscard]] double get_ctr_farkas(const Ctr &t_ctr) const override;
45
46 [[nodiscard]] unsigned int get_n_solutions() const override;
47
48 [[nodiscard]] unsigned int get_solution_index() const override;
49
50protected:
51 void add(const Var &t_var) override;
52
53 void add(const Ctr &t_ctr) override;
54
55 void add(const QCtr &t_ctr) override;
56
57 void remove(const Var &t_var) override;
58
59 void remove(const Ctr &t_ctr) override;
60
61 void remove(const QCtr &t_ctr) override;
62
63 void update() override;
64
65 void write(const std::string &t_name) override;
66
67 void hook_optimize() override;
68
69 void set_solution_index(unsigned int t_index) override;
70
71 void update_obj_sense() override;
72
73 void update_obj() override;
74
75 void update_rhs() override;
76
77 void update_obj_constant() override;
78
79 void update_mat_coeff(const Ctr &t_ctr, const Var &t_var) override;
80
81 void update_ctr_type(const Ctr &t_ctr) override;
82
83 void update_ctr_rhs(const Ctr &t_ctr) override;
84
85 void update_var_type(const Var &t_var) override;
86
87 void update_var_lb(const Var &t_var) override;
88
89 void update_var_ub(const Var &t_var) override;
90
91 void update_var_obj(const Var &t_var) override;
92};
93
94#endif //IDOL_OPTIMIZERS_DETERMINISTIC_H