OR-Tools  9.6
pdlp_solver.h
Go to the documentation of this file.
1 // Copyright 2010-2022 Google LLC
2 // Licensed under the Apache License, Version 2.0 (the "License");
3 // you may not use this file except in compliance with the License.
4 // You may obtain a copy of the License at
5 //
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13 
14 #ifndef OR_TOOLS_MATH_OPT_SOLVERS_PDLP_SOLVER_H_
15 #define OR_TOOLS_MATH_OPT_SOLVERS_PDLP_SOLVER_H_
16 
17 #include <memory>
18 
19 #include "absl/status/status.h"
20 #include "absl/status/statusor.h"
21 #include "ortools/math_opt/callback.pb.h"
24 #include "ortools/math_opt/model.pb.h"
25 #include "ortools/math_opt/model_parameters.pb.h"
26 #include "ortools/math_opt/model_update.pb.h"
27 #include "ortools/math_opt/parameters.pb.h"
28 #include "ortools/math_opt/result.pb.h"
31 #include "ortools/pdlp/solvers.pb.h"
32 
33 namespace operations_research {
34 namespace math_opt {
35 
36 class PdlpSolver : public SolverInterface {
37  public:
38  static absl::StatusOr<std::unique_ptr<SolverInterface>> New(
39  const ModelProto& model, const InitArgs& init_args);
40 
41  absl::StatusOr<SolveResultProto> Solve(
42  const SolveParametersProto& parameters,
43  const ModelSolveParametersProto& model_parameters,
44  MessageCallback message_cb,
45  const CallbackRegistrationProto& callback_registration, Callback cb,
46  SolveInterrupter* interrupter) override;
47  absl::StatusOr<bool> Update(const ModelUpdateProto& model_update) override;
48 
49  // Returns the merged parameters and a list of warnings.
50  static absl::StatusOr<pdlp::PrimalDualHybridGradientParams> MergeParameters(
51  const SolveParametersProto& parameters);
52 
53  private:
54  PdlpSolver() = default;
55 
56  absl::StatusOr<SolveResultProto> MakeSolveResult(
57  const pdlp::SolverResult& pdlp_result,
58  const ModelSolveParametersProto& model_params);
59 
60  PdlpBridge pdlp_bridge_;
61 };
62 
63 } // namespace math_opt
64 } // namespace operations_research
65 
66 #endif // OR_TOOLS_MATH_OPT_SOLVERS_PDLP_SOLVER_H_
absl::StatusOr< bool > Update(const ModelUpdateProto &model_update) override
Definition: pdlp_solver.cc:378
static absl::StatusOr< pdlp::PrimalDualHybridGradientParams > MergeParameters(const SolveParametersProto &parameters)
Definition: pdlp_solver.cc:72
static absl::StatusOr< std::unique_ptr< SolverInterface > > New(const ModelProto &model, const InitArgs &init_args)
Definition: pdlp_solver.cc:65
absl::StatusOr< SolveResultProto > Solve(const SolveParametersProto &parameters, const ModelSolveParametersProto &model_parameters, MessageCallback message_cb, const CallbackRegistrationProto &callback_registration, Callback cb, SolveInterrupter *interrupter) override
Definition: pdlp_solver.cc:343
std::function< void(const std::vector< std::string > &)> MessageCallback
std::function< absl::StatusOr< CallbackResultProto >(const CallbackDataProto &)> Callback
SatParameters parameters
GRBmodel * model
Collection of objects used to extend the Constraint Solver library.