A C++ Framework for Optimization
Loading...
Searching...
No Matches
Gurobi.h
1//
2// Created by henri on 23/03/23.
3//
4
5#ifndef IDOL_GUROBI_H
6#define IDOL_GUROBI_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
15namespace idol {
16 class Callback;
17 class Gurobi;
18}
19
21 std::optional<bool> m_continuous_relaxation;
22 std::optional<bool> m_lazy_cuts;
23 std::optional<unsigned int> m_max_n_solution_in_pool;
24 std::list<std::unique_ptr<CallbackFactory>> m_callbacks;
25
26 Map<std::string, int> m_int_params;
27 Map<std::string, double> m_double_params;
28public:
29 Gurobi() = default;
30
31 Gurobi(const Gurobi& t_src);
32 Gurobi(Gurobi&&) noexcept = default;
33
34 Gurobi& operator=(const Gurobi&) = delete;
35 Gurobi& operator=(Gurobi&&) noexcept = default;
36
37 Optimizer *operator()(const Model &t_model) const override;
38
39 static Gurobi ContinuousRelaxation();
40
41 Gurobi& add_callback(const CallbackFactory& t_cb);
42 Gurobi& with_lazy_cut(bool t_value);
43 Gurobi& with_max_n_solution_in_pool(unsigned int t_value);
44 Gurobi& with_continuous_relaxation_only(bool t_value);
45 Gurobi& with_external_param(const std::string& t_param, int t_value);
46 Gurobi& with_external_param(const std::string& t_param, double t_value);
47
48 [[nodiscard]] Gurobi *clone() const override;
49};
50
51#endif //IDOL_GUROBI_H
Optimizer * operator()(const Model &t_model) const override
Gurobi * clone() const override