idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
Cplex.h
1//
2// Created by henri on 07.04.25.
3//
4
5#ifndef IDOL_CPLEX_H
6#define IDOL_CPLEX_H
7
8#include "idol/general/optimizers/OptimizerFactory.h"
9#include <list>
10#include <memory>
11#include "idol/mixed-integer/optimizers/callbacks/CallbackFactory.h"
12#include "idol/general/utils/Map.h"
13#include "idol/mixed-integer/modeling/objects/Env.h"
14
15#ifdef IDOL_USE_CPLEX
16#include <ilcplex/ilocplex.h>
17#else
18// enum GRB_IntParam {};
19// enum GRB_DoubleParam {};
20#endif
21
22namespace idol {
23 class Callback;
24 class Cplex;
25}
26
28 std::optional<bool> m_continuous_relaxation;
29 std::optional<bool> m_lazy_cuts;
30 std::optional<unsigned int> m_max_n_solution_in_pool;
31 std::list<std::unique_ptr<CallbackFactory>> m_callbacks;
32
33public:
34 Cplex() = default;
35
36 Cplex(const Cplex& t_src);
37 Cplex(Cplex&&) noexcept = default;
38
39 Cplex& operator=(const Cplex&) = delete;
40 Cplex& operator=(Cplex&&) noexcept = default;
41
42 Optimizer *operator()(const Model &t_model) const override;
43
44 static Cplex ContinuousRelaxation();
45
46 Cplex& add_callback(const CallbackFactory& t_cb);
47
48 Cplex& with_max_n_solution_in_pool(unsigned int t_value);
49
50 Cplex& with_lazy_cut(bool t_value);
51
52 Cplex& with_continuous_relaxation_only(bool t_value);
53
54 static Model read_from_file(Env& t_env, const std::string& t_filename);
55
56 [[nodiscard]] Cplex *clone() const override;
57};
58
59#endif //IDOL_CPLEX_H
Cplex * clone() const override
Optimizer * operator()(const Model &t_model) const override