idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
BranchAndCut.h
1//
2// Created by henri on 11.04.25.
3//
4
5#ifndef IDOL_BILEVEL_BRANCHANDCUT_H
6#define IDOL_BILEVEL_BRANCHANDCUT_H
7
8#include "idol/general/optimizers/OptimizerFactory.h"
9#include "idol/bilevel/optimizers/BilevelOptimizerInterface.h"
10
11namespace idol::Bilevel {
12 class BranchAndCut;
13}
14
16 const Bilevel::Description* m_description = nullptr;
17 std::unique_ptr<OptimizerFactory> m_optimizer_for_sub_problems;
18public:
19 BranchAndCut() = default;
20
21 explicit BranchAndCut(const Bilevel::Description& t_description);
22
23 BranchAndCut(const BranchAndCut& t_src);
24 BranchAndCut(BranchAndCut&&) noexcept = delete;
25
26 BranchAndCut& operator=(const BranchAndCut&) = delete;
27 BranchAndCut& operator=(BranchAndCut&&) noexcept = delete;
28
29 Optimizer *operator()(const Model &t_model) const override;
30
31 BranchAndCut& with_sub_problem_optimizer(const OptimizerFactory& t_optimizer);
32
33 void set_bilevel_description(const Description &t_bilevel_description) override;
34
35 [[nodiscard]] Bilevel::BranchAndCut *clone() const override;
36};
37
38#endif //IDOL_BILEVEL_BRANCHANDCUT_H
Optimizer * operator()(const Model &t_model) const override
Bilevel::BranchAndCut * clone() const override