idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
LocalBranching.h
1//
2// Created by henri on 16.10.23.
3//
4
5#ifndef IDOL_LOCAL_BRANCHING_H
6#define IDOL_LOCAL_BRANCHING_H
7
8#include "idol/mixed-integer/optimizers/callbacks/CallbackFactory.h"
9#include "idol/mixed-integer/optimizers/callbacks/Callback.h"
10#include "idol/general/optimizers/OptimizerFactory.h"
11
12namespace idol::Heuristics {
13 class LocalBranching;
14}
15
17
18 std::unique_ptr<OptimizerFactory> m_optimizer_factory;
19 double m_initial_neighbourhood_size = 2;
20
21 LocalBranching(const LocalBranching& t_src);
22public:
23 LocalBranching() = default;
24
25 class Strategy : public Callback {
26 unsigned int m_neighbourhood_size;
27 unsigned int m_initial_neighbourhood_size;
28 bool m_execute = true;
29 std::unique_ptr<OptimizerFactory> m_optimizer_factory;
30 protected:
31 void operator()(CallbackEvent t_event) override;
32 public:
33 Strategy(unsigned int t_neighbourhood_size,
34 OptimizerFactory* t_optimizer_factory);
35 };
36
37 Callback *operator()() override {
38
39 auto* result = new Strategy(m_initial_neighbourhood_size,
40 m_optimizer_factory->clone());
41
42 return result;
43 }
44
45 [[nodiscard]] CallbackFactory *clone() const override {
46 return new LocalBranching(*this);
47 }
48
49 LocalBranching& with_optimizer(const OptimizerFactory& t_optimizer_factory);
50
51};
52
53#endif //IDOL_LOCAL_BRANCHING_H
void operator()(CallbackEvent t_event) override