14 #ifndef OR_TOOLS_MATH_OPT_CORE_SOLVER_H_
15 #define OR_TOOLS_MATH_OPT_CORE_SOLVER_H_
20 #include "absl/status/status.h"
21 #include "absl/status/statusor.h"
22 #include "absl/synchronization/mutex.h"
23 #include "ortools/math_opt/callback.pb.h"
28 #include "ortools/math_opt/model.pb.h"
29 #include "ortools/math_opt/model_parameters.pb.h"
30 #include "ortools/math_opt/model_update.pb.h"
31 #include "ortools/math_opt/parameters.pb.h"
32 #include "ortools/math_opt/result.pb.h"
83 using Callback = std::function<CallbackResultProto(
const CallbackDataProto&)>;
107 const ModelProto&
model, SolverTypeProto solver_type,
112 static absl::StatusOr<std::unique_ptr<Solver>>
New(
113 SolverTypeProto solver_type,
const ModelProto&
model,
122 absl::StatusOr<SolveResultProto>
Solve(
const SolveArgs& arguments);
135 absl::StatusOr<bool>
Update(
const ModelUpdateProto& model_update);
138 Solver(std::unique_ptr<SolverInterface> underlying_solver,
147 std::unique_ptr<SolverInterface> underlying_solver_;
155 bool fatal_failure_occurred_ =
false;
163 SolverTypeProto solver_type);
static absl::StatusOr< SolveResultProto > NonIncrementalSolve(const ModelProto &model, SolverTypeProto solver_type, const InitArgs &init_args, const SolveArgs &solve_args)
absl::StatusOr< SolveResultProto > Solve(const SolveArgs &arguments)
SolverInterface::MessageCallback MessageCallback
Solver(const Solver &)=delete
std::function< CallbackResultProto(const CallbackDataProto &)> Callback
static absl::StatusOr< std::unique_ptr< Solver > > New(SolverTypeProto solver_type, const ModelProto &model, const InitArgs &arguments)
Solver & operator=(const Solver &)=delete
absl::StatusOr< bool > Update(const ModelUpdateProto &model_update)
std::function< void(const std::vector< std::string > &)> MessageCallback
absl::Status ValidateInitArgs(const Solver::InitArgs &init_args, const SolverTypeProto solver_type)
Collection of objects used to extend the Constraint Solver library.
CallbackRegistrationProto callback_registration
ModelSolveParametersProto model_parameters
MessageCallback message_callback
SolveInterrupter * interrupter
SolveParametersProto parameters