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"
27#include "ortools/math_opt/model.pb.h"
28#include "ortools/math_opt/model_parameters.pb.h"
29#include "ortools/math_opt/model_update.pb.h"
30#include "ortools/math_opt/parameters.pb.h"
31#include "ortools/math_opt/result.pb.h"
82 using Callback = std::function<CallbackResultProto(
const CallbackDataProto&)>;
106 const ModelProto&
model, SolverTypeProto solver_type,
111 static absl::StatusOr<std::unique_ptr<Solver>>
New(
112 SolverTypeProto solver_type,
const ModelProto&
model,
121 absl::StatusOr<SolveResultProto>
Solve(
const SolveArgs& arguments);
128 absl::StatusOr<bool>
Update(
const ModelUpdateProto& model_update);
131 Solver(std::unique_ptr<SolverInterface> underlying_solver,
137 const std::unique_ptr<SolverInterface> underlying_solver_;
146 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)
Solver & operator=(const Solver &)=delete
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)
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