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/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;
26public:
27 MibS() = default;
28
29 explicit MibS(const Bilevel::Description& t_description);
30
31 MibS(const MibS& t_src);
32 MibS(MibS&&) noexcept = delete;
33
34 MibS& operator=(const MibS&) = delete;
35 MibS& operator=(MibS&&) noexcept = delete;
36
37 Optimizer *operator()(const Model &t_model) const override;
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
MibS * clone() const override
Optimizer * operator()(const Model &t_model) const override