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/bilevel/modeling/Description.h"
11#include "idol/mixed-integer/optimizers/callbacks/CallbackFactory.h"
12#include "idol/bilevel/optimizers/BilevelOptimizerInterface.h"
13
14namespace idol::Bilevel {
15 class MibS;
16}
17
18class OsiSolverInterface;
19
21 const Bilevel::Description* m_description = nullptr;
22 std::optional<bool> m_use_file_interface;
23 std::optional<bool> m_use_cplex_for_feasibility;
24 std::list<std::unique_ptr<CallbackFactory>> m_callbacks;
25 void* m_osi_interface = nullptr;
26protected:
27 [[nodiscard]] Optimizer *create(const Model &t_model) const override;
28public:
29 MibS() = default;
30
31 explicit MibS(const Bilevel::Description& t_description);
32
33 MibS(const MibS& t_src);
34 MibS(MibS&&) noexcept = delete;
35
36 MibS& operator=(const MibS&) = delete;
37 MibS& operator=(MibS&&) noexcept = delete;
38
39 void set_bilevel_description(const Description &t_bilevel_description) override;
40
41 MibS& with_osi_interface(const void* t_osi_optimizer);
42
43 MibS& with_cplex_for_feasibility(bool t_value);
44
45 MibS& with_file_interface(bool t_value);
46
47 MibS& add_callback(const CallbackFactory& t_cb);
48
49 [[nodiscard]] MibS *clone() const override;
50};
51
52#endif //IDOL_MIBS_H