Google OR-Tools: ortools/linear_solver/scip_callback.h Source File
20#ifndef ORTOOLS_LINEAR_SOLVER_SCIP_CALLBACK_H_
21#define ORTOOLS_LINEAR_SOLVER_SCIP_CALLBACK_H_
113template <typename Constraint>
157template <typename Constraint>
175template <typename ConstraintData>
178 const std::string& constraint_name,
179 const ConstraintData* constraint_data,
202template <typename ConstraintData>
211 void* constraint_data) override {
212 return handler_->SeparateFractionalSolution(
213 context, *static_cast<ConstraintData*>(constraint_data));
218 void* constraint_data) override {
219 return handler_->SeparateIntegerSolution(
220 context, *static_cast<ConstraintData*>(constraint_data));
224 void* constraint_data) override {
225 return handler_->FractionalSolutionFeasible(
226 context, *static_cast<ConstraintData*>(constraint_data));
241 std::unique_ptr<ScipCallbackRunner> runner, SCIP* scip);
244 const std::string& constraint_name,
250template <typename ConstraintData>
260template <typename ConstraintData>
263 const std::string& constraint_name,
264 const ConstraintData* constraint_data,
268 static_cast<void*>(const_cast<ConstraintData*>(constraint_data)),
The class for variables of a Mathematical Programming (MP) model.
Definition scip_callback.h:79
int64_t CurrentNodeId() const
double VariableValue(const MPVariable *variable) const
ScipConstraintHandlerContext(SCIP *scip, SCIP_SOL *solution, bool is_pseudo_solution)
int64_t NumNodesProcessed() const
SCIP * scip() const
Definition scip_callback.h:89
bool is_pseudo_solution() const
Definition scip_callback.h:98
Definition scip_callback.h:114
virtual ~ScipConstraintHandler()
Definition scip_callback.h:119
ScipConstraintHandler(const ScipConstraintHandlerDescription &description)
Definition scip_callback.h:116
const ScipConstraintHandlerDescription & description() const
Definition scip_callback.h:120
virtual bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, const Constraint &constraint)
Definition scip_callback.h:139
virtual std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, const Constraint &constraint)
Definition scip_callback.h:132
virtual std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, const Constraint &constraint)=0
virtual bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, const Constraint &constraint)
Definition scip_callback.h:146
Definition scip_callback.h:203
std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, void *constraint_data) override
Definition scip_callback.h:216
ScipCallbackRunnerImpl(ScipConstraintHandler< ConstraintData > *handler)
Definition scip_callback.h:205
std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, void *constraint_data) override
Definition scip_callback.h:209
bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint_data) override
Definition scip_callback.h:223
bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint_data) override
Definition scip_callback.h:229
Definition scip_callback.h:186
virtual std::vector< CallbackRangeConstraint > SeparateFractionalSolution(const ScipConstraintHandlerContext &context, void *constraint)=0
virtual std::vector< CallbackRangeConstraint > SeparateIntegerSolution(const ScipConstraintHandlerContext &context, void *constraint)=0
virtual bool IntegerSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint)=0
virtual bool FractionalSolutionFeasible(const ScipConstraintHandlerContext &context, void *constraint)=0
virtual ~ScipCallbackRunner()
Definition scip_callback.h:188
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)
void AddCallbackConstraint(SCIP *scip, ScipConstraintHandler< ConstraintData > *handler, const std::string &constraint_name, const ConstraintData *constraint_data, const ScipCallbackConstraintOptions &options)
Definition scip_callback.h:261
Select next search node to expand Select next item_i to add this new search node to the search Generate a new search node where item_i is not in the knapsack Check validity of this new partial solution(using propagators) - If valid
void RegisterConstraintHandler(ScipConstraintHandler< Constraint > *handler, SCIP *scip)
Definition scip_callback.h:106
bool is_cut
Definition scip_callback.h:108
std::string name
Definition scip_callback.h:109
LinearRange range
Definition scip_callback.h:107
bool local
Definition scip_callback.h:110
Definition scip_callback.h:161
bool removable
Definition scip_callback.h:170
bool initial
Definition scip_callback.h:162
bool propagate
Definition scip_callback.h:166
bool dynamic
Definition scip_callback.h:169
bool stickingatnodes
Definition scip_callback.h:171
bool check
Definition scip_callback.h:165
bool modifiable
Definition scip_callback.h:168
bool enforce
Definition scip_callback.h:164
bool local
Definition scip_callback.h:167
bool separate
Definition scip_callback.h:163
Definition scip_callback.h:42
int feasibility_check_priority
Definition scip_callback.h:63
bool needs_constraints
Definition scip_callback.h:69
std::string name
Definition scip_callback.h:44
int eager_frequency
Definition scip_callback.h:66
std::string description
Definition scip_callback.h:47
int enforcement_priority
Definition scip_callback.h:55
int separation_frequency
Definition scip_callback.h:76
int separation_priority
Definition scip_callback.h:73