idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
MibS.h
1//
2// Created by henri on 01.02.24.
3//
4
5#ifndef IDOL_MIBS_H
6#define IDOL_MIBS_H
7
8#include <memory>
9#include "idol/general/optimizers/OptimizerFactory.h"
10#include "idol/mixed-integer/modeling/annotations/Annotation.h"
11#include "idol/mixed-integer/modeling/constraints/Ctr.h"
12#include "idol/bilevel/modeling/Description.h"
13#include "idol/mixed-integer/optimizers/callbacks/CallbackFactory.h"
14#include "idol/bilevel/optimizers/BilevelOptimizerInterface.h"
15
16#ifdef IDOL_USE_OSI
17#include <OsiSolverInterface.hpp>
18#endif
19
20namespace idol::Bilevel {
21 class MibS;
22}
23
24class OsiSolverInterface;
25
27 const Bilevel::Description* m_description = nullptr;
28 std::optional<bool> m_use_file_interface;
29 std::optional<bool> m_use_cplex_for_feasibility;
30 std::list<std::unique_ptr<CallbackFactory>> m_callbacks;
31#ifdef IDOL_USE_OSI
32 std::unique_ptr<OsiSolverInterface> m_osi_interface;
33#endif
34public:
35 MibS() = default;
36
37 explicit MibS(const Bilevel::Description& t_description);
38
39 MibS(const MibS& t_src);
40 MibS(MibS&&) noexcept = delete;
41
42 MibS& operator=(const MibS&) = delete;
43 MibS& operator=(MibS&&) noexcept = delete;
44
45 Optimizer *operator()(const Model &t_model) const override;
46
47 void set_bilevel_description(const Description &t_bilevel_description) override;
48
49 MibS& with_osi_interface(const OsiSolverInterface& t_osi_optimizer);
50
51 MibS& with_cplex_for_feasibility(bool t_value);
52
53 MibS& with_file_interface(bool t_value);
54
55 MibS& add_callback(const CallbackFactory& t_cb);
56
57 [[nodiscard]] MibS *clone() const override;
58};
59
60#endif //IDOL_MIBS_H
MibS * clone() const override
Optimizer * operator()(const Model &t_model) const override