21 #ifndef OR_TOOLS_LINEAR_SOLVER_SCIP_CALLBACK_H_ 22 #define OR_TOOLS_LINEAR_SOLVER_SCIP_CALLBACK_H_ 28 #include "absl/memory/memory.h" 31 #include "scip/scip_sol.h" 32 #include "scip/type_cons.h" 33 #include "scip/type_scip.h" 34 #include "scip/type_sol.h" 35 #include "scip/type_var.h" 93 SCIP*
scip()
const {
return scip_; }
107 bool is_pseudo_solution_;
118 template <
typename Constra
int>
162 template <
typename Constra
int>
180 template <
typename Constra
intData>
183 const std::string& constraint_name,
184 const ConstraintData* constraint_data,
207 template <
typename Constra
intData>
212 : handler_(handler) {}
216 void* constraint_data)
override {
218 context, *static_cast<ConstraintData*>(constraint_data));
223 void* constraint_data)
override {
225 context, *static_cast<ConstraintData*>(constraint_data));
229 void* constraint_data)
override {
231 context, *static_cast<ConstraintData*>(constraint_data));
235 void* constraint_data)
override {
237 context, *static_cast<ConstraintData*>(constraint_data));
246 std::unique_ptr<ScipCallbackRunner> runner, SCIP* scip);
249 const std::string& constraint_name,
250 void* constraint_data,
255 template <
typename Constra
intData>
260 absl::make_unique<internal::ScipCallbackRunnerImpl<ConstraintData>>(
265 template <
typename Constra
intData>
268 const std::string& constraint_name,
269 const ConstraintData* constraint_data,
273 static_cast<void*>(const_cast<ConstraintData*>(constraint_data)),
279 #endif // OR_TOOLS_LINEAR_SOLVER_SCIP_CALLBACK_H_ virtual bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint)=0
ScipConstraintHandler(const ScipConstraintHandlerDescription &description)
virtual std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, const Constraint &constraint)=0
void AddConstraintHandlerImpl(const ScipConstraintHandlerDescription &description, std::unique_ptr< ScipCallbackRunner > runner, SCIP *scip)
double VariableValue(const MPVariable *variable) const
virtual bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, const Constraint &constraint)
int64_t NumNodesProcessed() const
void RegisterConstraintHandler(ScipConstraintHandler< Constraint > *handler, SCIP *scip)
A C++ wrapper that provides a simple and unified interface to several linear programming and mixed in...
int feasibility_check_priority
virtual ~ScipCallbackRunner()
bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint_data) override
virtual ~ScipConstraintHandler()
A constraint is the main modeling object.
bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint_data) override
The class for variables of a Mathematical Programming (MP) model.
std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, void *constraint_data) override
virtual std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, void *constraint)=0
bool is_pseudo_solution() const
int64_t CurrentNodeId() const
virtual std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, const Constraint &constraint)
virtual bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint)=0
ScipConstraintHandlerContext(SCIP *scip, SCIP_SOL *solution, bool is_pseudo_solution)
This file allows you to write natural code (like a mathematical equation) to model optimization probl...
const ScipConstraintHandlerDescription & description() const
Collection of objects used to extend the Constraint Solver library.
void AddCallbackConstraint(SCIP *scip, ScipConstraintHandler< ConstraintData > *handler, const std::string &constraint_name, const ConstraintData *constraint_data, const ScipCallbackConstraintOptions &options)
std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, void *constraint_data) override
ScipCallbackRunnerImpl(ScipConstraintHandler< ConstraintData > *handler)
An expression of the form:
virtual std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, void *constraint)=0
GurobiMPCallbackContext * context
virtual bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, const Constraint &constraint)
void AddCallbackConstraintImpl(SCIP *scip, const std::string &handler_name, const std::string &constraint_name, void *constraint_data, const ScipCallbackConstraintOptions &options)