21#ifndef OR_TOOLS_LINEAR_SOLVER_SCIP_CALLBACK_H_
22#define OR_TOOLS_LINEAR_SOLVER_SCIP_CALLBACK_H_
27#include "absl/memory/memory.h"
30#include "scip/scip_sol.h"
31#include "scip/type_cons.h"
32#include "scip/type_scip.h"
33#include "scip/type_sol.h"
34#include "scip/type_var.h"
92 SCIP*
scip()
const {
return scip_; }
106 bool is_pseudo_solution_;
117template <
typename Constra
int>
161template <
typename Constra
int>
179template <
typename Constra
intData>
182 const std::string& constraint_name,
183 const ConstraintData* constraint_data,
206template <
typename Constra
intData>
211 : handler_(handler) {}
215 void* constraint_data)
override {
217 context, *
static_cast<ConstraintData*
>(constraint_data));
222 void* constraint_data)
override {
224 context, *
static_cast<ConstraintData*
>(constraint_data));
228 void* constraint_data)
override {
230 context, *
static_cast<ConstraintData*
>(constraint_data));
234 void* constraint_data)
override {
236 context, *
static_cast<ConstraintData*
>(constraint_data));
245 std::unique_ptr<ScipCallbackRunner> runner, SCIP* scip);
248 const std::string& constraint_name,
249 void* constraint_data,
254template <
typename Constra
intData>
264template <
typename Constra
intData>
267 const std::string& constraint_name,
268 const ConstraintData* constraint_data,
272 static_cast<void*
>(
const_cast<ConstraintData*
>(constraint_data)),
A constraint is the main modeling object.
An expression of the form:
The class for variables of a Mathematical Programming (MP) model.
int64 CurrentNodeId() const
double VariableValue(const MPVariable *variable) const
ScipConstraintHandlerContext(SCIP *scip, SCIP_SOL *solution, bool is_pseudo_solution)
int64 NumNodesProcessed() const
bool is_pseudo_solution() const
virtual std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, const Constraint &constraint)=0
virtual bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, const Constraint &constraint)
const ScipConstraintHandlerDescription & description() const
virtual bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, const Constraint &constraint)
ScipConstraintHandler(const ScipConstraintHandlerDescription &description)
virtual ~ScipConstraintHandler()
virtual std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, const Constraint &constraint)
virtual bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint)=0
virtual bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint)=0
virtual ~ScipCallbackRunner()
virtual std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, void *constraint)=0
virtual std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, void *constraint)=0
std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, void *constraint_data) override
ScipCallbackRunnerImpl(ScipConstraintHandler< ConstraintData > *handler)
bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint_data) override
std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, void *constraint_data) override
bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint_data) override
GurobiMPCallbackContext * context
This file allows you to write natural code (like a mathematical equation) to model optimization probl...
A C++ wrapper that provides a simple and unified interface to several linear programming and mixed in...
void AddConstraintHandlerImpl(const ScipConstraintHandlerDescription &description, std::unique_ptr< ScipCallbackRunner > runner, SCIP *scip)
void AddCallbackConstraintImpl(SCIP *scip, const std::string &handler_name, const std::string &constraint_name, void *constraint_data, const ScipCallbackConstraintOptions &options)
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
void RegisterConstraintHandler(ScipConstraintHandler< Constraint > *handler, SCIP *scip)
void AddCallbackConstraint(SCIP *scip, ScipConstraintHandler< ConstraintData > *handler, const std::string &constraint_name, const ConstraintData *constraint_data, const ScipCallbackConstraintOptions &options)
int feasibility_check_priority