idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
Algorithm.h
1//
2// Created by henri on 01/02/23.
3//
4
5#ifndef IDOL_ALGORITHM_H
6#define IDOL_ALGORITHM_H
7
8#include "Optimizer.h"
9#include "idol/general/utils/Point.h"
10
11namespace idol {
12 class Algorithm;
13}
14
15class idol::Algorithm : public Optimizer {
16 SolutionStatus m_status = Loaded;
17 SolutionReason m_reason = NotSpecified;
18 double m_best_bound = -Inf;
19 double m_best_obj = +Inf;
20protected:
21 void build() override {}
22
23 virtual void set_status(SolutionStatus t_status) { m_status = t_status; }
24 virtual void set_reason(SolutionReason t_reason) { m_reason = t_reason; }
25 virtual void set_best_bound(double t_value) { m_best_bound = t_value; }
26 virtual void set_best_obj(double t_value) { m_best_obj = t_value; }
27public:
28 explicit Algorithm(const Model& t_model);
29
30 [[nodiscard]] SolutionStatus get_status() const override;
31 [[nodiscard]] SolutionReason get_reason() const override;
32 [[nodiscard]] double get_best_obj() const override;
33 [[nodiscard]] double get_best_bound() const override;
34 [[nodiscard]] double get_relative_gap() const override;
35 [[nodiscard]] double get_absolute_gap() const override;
36};
37
38#endif //IDOL_ALGORITHM_H