Loading...
Searching...
No Matches
Optimizers_LambdaOptimizer.h
1//
2// Created by charlotte on 05.06.26.
3//
4
5#ifndef IDOL_OPTIMIZERS_LAMBDA_OPTIMIZER_H
6#define IDOL_OPTIMIZERS_LAMBDA_OPTIMIZER_H
7
8#include "idol/general/optimizers/Algorithm.h"
9#include "idol/general/optimizers/LambdaOptimizer/LambdaOptimizer.h"
10
11namespace idol {
12 namespace Optimizers {
13 class LambdaOptimizer;
14 }
15
16 class LambdaContext;
17}
18
19class idol::Optimizers::LambdaOptimizer : public Algorithm {
20 const std::function<void(LambdaContext&)>& m_lambda;
21 std::vector<double> m_solution;
22
23public:
24 LambdaOptimizer(const Model& t_model,
25 const std::function<void(LambdaContext&)>& t_lambda);
26
27 [[nodiscard]] std::string name() const override;
28
29 void set_var_primal(const Var &t_var, double t_value);
30
31 [[nodiscard]] double get_var_primal(const Var &t_var) const override;
32
33 [[nodiscard]] double get_var_reduced_cost(const Var &t_var) const override;
34
35 [[nodiscard]] double get_var_ray(const Var &t_var) const override;
36
37 [[nodiscard]] double get_ctr_dual(const Ctr &t_ctr) const override;
38
39 [[nodiscard]] double get_ctr_farkas(const Ctr &t_ctr) const override;
40
41 [[nodiscard]] unsigned int get_n_solutions() const override;
42
43 [[nodiscard]] unsigned int get_solution_index() const override;
44
45protected:
46 void add(const Var &t_var) override;
47
48 void add(const Ctr &t_ctr) override;
49
50 void add(const QCtr &t_ctr) override;
51
52 void remove(const Var &t_var) override;
53
54 void remove(const Ctr &t_ctr) override;
55
56 void remove(const QCtr &t_ctr) override;
57
58 void update() override;
59
60 void write(const std::string &t_name) override;
61
62 void hook_optimize() override;
63
64 void set_solution_index(unsigned int t_index) override;
65
66 void update_obj_sense() override;
67
68 void update_obj() override;
69
70 void update_rhs() override;
71
72 void update_obj_constant() override;
73
74 void update_mat_coeff(const Ctr &t_ctr, const Var &t_var) override;
75
76 void update_ctr_type(const Ctr &t_ctr) override;
77
78 void update_ctr_rhs(const Ctr &t_ctr) override;
79
80 void update_var_type(const Var &t_var) override;
81
82 void update_var_lb(const Var &t_var) override;
83
84 void update_var_ub(const Var &t_var) override;
85
86 void update_var_obj(const Var &t_var) override;
87
88 void clear_solution();
89
90 friend class idol::LambdaContext;
91};
92
93#endif //IDOL_OPTIMIZERS_LAMBDA_OPTIMIZER_H