A C++ Framework for Optimization
Loading...
Searching...
No Matches
BilevelBasedBranchAndBound.h
1//
2// Created by Henri on 03/02/2026.
3//
4
5#ifndef IDOL_NESTEDBRANCHANDCUT_H
6#define IDOL_NESTEDBRANCHANDCUT_H
7
8#include "idol/general/optimizers/OptimizerFactory.h"
9#include "idol/robust/modeling/Description.h"
10#include "idol/bilevel/modeling/Description.h"
11
12namespace idol::Robust {
13 class BilevelBasedBranchAndBound;
14}
15
17 const Bilevel::Description& m_bilevel_description;
18 const Robust::Description& m_robust_description;
19
20 std::unique_ptr<OptimizerFactory> m_optimality_bilevel_optimizer;
21 std::unique_ptr<OptimizerFactory> m_feasibility_bilevel_optimizer;
22 std::optional<bool> m_with_first_stage_relaxation;
23public:
24 BilevelBasedBranchAndBound(const Robust::Description& t_robust_description,
25 const Bilevel::Description& t_bilevel_description);
26
28
29 Optimizer *operator()(const Model &t_model) const override;
30
31 [[nodiscard]] OptimizerFactory *clone() const override { return new BilevelBasedBranchAndBound(*this); }
32
33 BilevelBasedBranchAndBound& with_optimality_bilevel_optimizer(const OptimizerFactory& t_factory);
34
35 BilevelBasedBranchAndBound& with_feasibility_bilevel_optimizer(const OptimizerFactory& t_factory);
36
37 BilevelBasedBranchAndBound& with_first_stage_relaxation(bool t_value);
38
39};
40
41#endif //IDOL_NESTEDBRANCHANDCUT_H
Optimizer * operator()(const Model &t_model) const override
OptimizerFactory * clone() const override