lpinterface
 All Classes Namespaces Files Functions Variables Enumerations Enumerator
lpinterface_gurobi.hpp
1 #ifndef LPINTERFACE_LPINTERFACE_GUROBI_H
2 #define LPINTERFACE_LPINTERFACE_GUROBI_H
3 
4 #include <memory>
5 #include <unordered_map>
6 
7 #include "gurobi_c.h"
8 
9 #include "lpinterface/common.hpp"
10 #include "lpinterface/data_objects.hpp"
11 #include "lpinterface/errors.hpp"
12 #include "lpinterface/gurobi/lphandle_gurobi.hpp"
13 #include "lpinterface/gurobi/lputil_gurobi.hpp"
14 #include "lpinterface/lp.hpp"
15 #include "lpinterface/lpinterface.hpp"
16 
17 namespace lpint {
18 
20  public:
21  GurobiSolver();
22  explicit GurobiSolver(OptimizationType optim_type);
23 
24  bool parameter_supported(const Param param) const override;
25 
26  void set_parameter(const Param param, const int value) override;
27 
28  void set_parameter(const Param param, const double value) override;
29 
30  Status solve() override;
31 
32  Status solution_status() const override;
33 
34  const ILinearProgramHandle& linear_program() const override;
35 
37 
38  const Solution<double>& get_solution() const override;
39 
40  static Status convert_gurobi_status(int status);
41 
42  static const std::unordered_map<Param, const char*> param_dict_;
43  static const std::unordered_map<int, Status> status_dict_;
44 
46  std::shared_ptr<GRBenv> gurobi_env_;
47 
49  std::shared_ptr<GRBmodel> gurobi_model_;
50 
53 
56 };
57 
58 inline Status GurobiSolver::convert_gurobi_status(int status) {
59  return status_dict_.count(status) ? status_dict_.at(status)
60  : throw UnknownStatusException(status);
61 }
62 
63 } // namespace lpint
64 
65 #endif // LPINTERFACE_LPINTERFACE_GUROBI_H
LinearProgramHandleGurobi lp_handle_
The linear program to solve.
Definition: lpinterface_gurobi.hpp:52
Attempt to use a status code that is not supported.
Definition: errors.hpp:95
const Solution< double > & get_solution() const override
Get the solution of the linear program. This method will fail with LpError::ModelNotsolvedError if th...
Status solve() override
Solve the linear program.
OptimizationType
Objective sense for an LP.
Definition: lp.hpp:17
Definition: lpinterface_gurobi.hpp:19
Interface representing linear program formulation. This interface represents linear programs of the f...
Definition: lp.hpp:53
void set_parameter(const Param param, const int value) override
Set an integer-valued parameter in the internal LP solver. This method will fail with LpError::Unsupp...
Solution< double > solution_
The solution vector.
Definition: lpinterface_gurobi.hpp:55
std::shared_ptr< GRBenv > gurobi_env_
The gurobi environment object.
Definition: lpinterface_gurobi.hpp:46
const ILinearProgramHandle & linear_program() const override
Get immutable access to the underlying Linear Program object.
bool parameter_supported(const Param param) const override
Check whether the solver backend supports the given parameter.
Definition: lphandle_gurobi.hpp:19
std::shared_ptr< GRBmodel > gurobi_model_
The gurobi model object.
Definition: lpinterface_gurobi.hpp:49
Status solution_status() const override
Query the LP solver for the solution status.
Param
Enum class representing linear solver parameters. The linear solvers this library interfaces with hav...
Definition: parameter_type.hpp:12
Status
Enum class representing LP solution status.
Definition: errors.hpp:129
Interface to internal linear program solver. This interface is the most important interface within lp...
Definition: lpinterface.hpp:22