Scippy

SCIP

Solving Constraint Integer Programs

cons.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file cons.h
17  * @ingroup INTERNALAPI
18  * @brief internal methods for constraints and constraint handlers
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_CONS_H__
25 #define __SCIP_CONS_H__
26 
27 
28 #include "scip/def.h"
29 #include "blockmemshell/memory.h"
30 #include "scip/type_retcode.h"
31 #include "scip/type_result.h"
32 #include "scip/type_set.h"
33 #include "scip/type_stat.h"
34 #include "scip/type_mem.h"
35 #include "scip/type_misc.h"
36 #include "scip/type_timing.h"
37 #include "scip/type_lp.h"
38 #include "scip/type_var.h"
39 #include "scip/type_prob.h"
40 #include "scip/type_sol.h"
41 #include "scip/type_tree.h"
42 #include "scip/type_sepastore.h"
43 #include "scip/type_cons.h"
44 #include "scip/type_branch.h"
45 #include "scip/type_reopt.h"
46 #include "scip/pub_cons.h"
47 
48 #ifndef NDEBUG
49 #include "scip/struct_cons.h"
50 #endif
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
56 /*
57  * Constraint handler methods
58  */
59 
60 /** copies the given constraint handler to a new scip */
62  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
63  SCIP_SET* set, /**< SCIP_SET of SCIP to copy to */
64  SCIP_Bool* valid /**< was the copying process valid? */
65  );
66 
67 /** creates a constraint handler */
69  SCIP_CONSHDLR** conshdlr, /**< pointer to constraint handler data structure */
70  SCIP_SET* set, /**< global SCIP settings */
71  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
72  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
73  const char* name, /**< name of constraint handler */
74  const char* desc, /**< description of constraint handler */
75  int sepapriority, /**< priority of the constraint handler for separation */
76  int enfopriority, /**< priority of the constraint handler for constraint enforcing */
77  int checkpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
78  int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
79  int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
80  int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
81  * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
82  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
83  SCIP_Bool delaysepa, /**< should separation method be delayed, if other separators found cuts? */
84  SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
85  SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
86  SCIP_PROPTIMING proptiming, /**< positions in the node solving loop where propagation method of constraint handlers should be executed */
87  SCIP_PRESOLTIMING presoltiming, /**< timing mask of the constraint handler's presolving method */
88  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
89  SCIP_DECL_CONSFREE ((*consfree)), /**< destructor of constraint handler */
90  SCIP_DECL_CONSINIT ((*consinit)), /**< initialize constraint handler */
91  SCIP_DECL_CONSEXIT ((*consexit)), /**< deinitialize constraint handler */
92  SCIP_DECL_CONSINITPRE ((*consinitpre)), /**< presolving initialization method of constraint handler */
93  SCIP_DECL_CONSEXITPRE ((*consexitpre)), /**< presolving deinitialization method of constraint handler */
94  SCIP_DECL_CONSINITSOL ((*consinitsol)), /**< solving process initialization method of constraint handler */
95  SCIP_DECL_CONSEXITSOL ((*consexitsol)), /**< solving process deinitialization method of constraint handler */
96  SCIP_DECL_CONSDELETE ((*consdelete)), /**< free specific constraint data */
97  SCIP_DECL_CONSTRANS ((*constrans)), /**< transform constraint data into data belonging to the transformed problem */
98  SCIP_DECL_CONSINITLP ((*consinitlp)), /**< initialize LP with relaxations of "initial" constraints */
99  SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
100  SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
101  SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
102  SCIP_DECL_CONSENFORELAX ((*consenforelax)), /**< enforcing constraints for relaxation solutions */
103  SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
104  SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
105  SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
106  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method */
107  SCIP_DECL_CONSRESPROP ((*consresprop)), /**< propagation conflict resolving method */
108  SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
109  SCIP_DECL_CONSACTIVE ((*consactive)), /**< activation notification method */
110  SCIP_DECL_CONSDEACTIVE((*consdeactive)), /**< deactivation notification method */
111  SCIP_DECL_CONSENABLE ((*consenable)), /**< enabling notification method */
112  SCIP_DECL_CONSDISABLE ((*consdisable)), /**< disabling notification method */
113  SCIP_DECL_CONSDELVARS ((*consdelvars)), /**< variable deletion method */
114  SCIP_DECL_CONSPRINT ((*consprint)), /**< constraint display method */
115  SCIP_DECL_CONSCOPY ((*conscopy)), /**< constraint copying method */
116  SCIP_DECL_CONSPARSE ((*consparse)), /**< constraint parsing method */
117  SCIP_DECL_CONSGETVARS ((*consgetvars)), /**< constraint get variables method */
118  SCIP_DECL_CONSGETNVARS((*consgetnvars)), /**< constraint get number of variable method */
119  SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), /**< constraint handler diving solution enforcement method */
120  SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
121  );
122 
123 /** calls destructor and frees memory of constraint handler */
125  SCIP_CONSHDLR** conshdlr, /**< pointer to constraint handler data structure */
126  SCIP_SET* set /**< global SCIP settings */
127  );
128 
129 /** calls init method of constraint handler */
131  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
132  BMS_BLKMEM* blkmem, /**< block memory */
133  SCIP_SET* set, /**< global SCIP settings */
134  SCIP_STAT* stat /**< dynamic problem statistics */
135  );
136 
137 /** calls exit method of constraint handler */
139  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
140  BMS_BLKMEM* blkmem, /**< block memory */
141  SCIP_SET* set, /**< global SCIP settings */
142  SCIP_STAT* stat /**< dynamic problem statistics */
143  );
144 
145 /** informs constraint handler that the presolving process is being started */
147  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
148  BMS_BLKMEM* blkmem, /**< block memory */
149  SCIP_SET* set, /**< global SCIP settings */
150  SCIP_STAT* stat /**< dynamic problem statistics */
151  );
152 
153 /** informs constraint handler that the presolving is finished */
155  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
156  BMS_BLKMEM* blkmem, /**< block memory */
157  SCIP_SET* set, /**< global SCIP settings */
158  SCIP_STAT* stat /**< dynamic problem statistics */
159  );
160 
161 /** informs constraint handler that the branch and bound process is being started */
163  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
164  BMS_BLKMEM* blkmem, /**< block memory */
165  SCIP_SET* set, /**< global SCIP settings */
166  SCIP_STAT* stat /**< dynamic problem statistics */
167  );
168 
169 /** informs constraint handler that the branch and bound process data is being freed */
171  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
172  BMS_BLKMEM* blkmem, /**< block memory */
173  SCIP_SET* set, /**< global SCIP settings */
174  SCIP_STAT* stat, /**< dynamic problem statistics */
175  SCIP_Bool restart /**< was this exit solve call triggered by a restart? */
176  );
177 
178 /** calls LP initialization method of constraint handler to separate all initial active constraints */
180  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
181  BMS_BLKMEM* blkmem, /**< block memory */
182  SCIP_SET* set, /**< global SCIP settings */
183  SCIP_STAT* stat, /**< dynamic problem statistics */
184  SCIP_TREE* tree, /**< branch and bound tree */
185  SCIP_Bool initkeptconss, /**< Also initialize constraints which are valid at a more global node,
186  * but were not activated there? Should be FALSE for repeated calls at
187  * one node or if the current focusnode is a child of the former one */
188  SCIP_Bool* cutoff /**< pointer to store whether infeasibility was detected while building the LP */
189  );
190 
191 /** calls separator method of constraint handler to separate LP solution */
193  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
194  BMS_BLKMEM* blkmem, /**< block memory */
195  SCIP_SET* set, /**< global SCIP settings */
196  SCIP_STAT* stat, /**< dynamic problem statistics */
197  SCIP_SEPASTORE* sepastore, /**< separation storage */
198  int depth, /**< depth of current node */
199  SCIP_Bool execdelayed, /**< execute separation method even if it is marked to be delayed */
200  SCIP_RESULT* result /**< pointer to store the result of the callback method */
201  );
202 
203 /** calls separator method of constraint handler to separate given primal solution */
205  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
206  BMS_BLKMEM* blkmem, /**< block memory */
207  SCIP_SET* set, /**< global SCIP settings */
208  SCIP_STAT* stat, /**< dynamic problem statistics */
209  SCIP_SEPASTORE* sepastore, /**< separation storage */
210  SCIP_SOL* sol, /**< primal solution that should be separated */
211  int depth, /**< depth of current node */
212  SCIP_Bool execdelayed, /**< execute separation method even if it is marked to be delayed */
213  SCIP_RESULT* result /**< pointer to store the result of the callback method */
214  );
215 
216 /** calls enforcing method of constraint handler for a relaxation solution for all constraints added after last
217  * conshdlrResetEnfo() call
218  */
220  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
221  BMS_BLKMEM* blkmem, /**< block memory */
222  SCIP_SET* set, /**< global SCIP settings */
223  SCIP_STAT* stat, /**< dynamic problem statistics */
224  SCIP_TREE* tree, /**< branch and bound tree */
225  SCIP_SEPASTORE* sepastore, /**< separation storage */
226  SCIP_SOL* relaxsol, /**< solution to be enforced */
227  SCIP_Bool solinfeasible, /**< was the solution already found out to be infeasible? */
228  SCIP_RESULT* result /**< pointer to store the result of the callback method */
229  );
230 
231 /** calls enforcing method of constraint handler for LP solution for all constraints added after last
232  * conshdlrReset() call
233  */
235  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
236  BMS_BLKMEM* blkmem, /**< block memory */
237  SCIP_SET* set, /**< global SCIP settings */
238  SCIP_STAT* stat, /**< dynamic problem statistics */
239  SCIP_TREE* tree, /**< branch and bound tree */
240  SCIP_SEPASTORE* sepastore, /**< separation storage */
241  SCIP_Bool solinfeasible, /**< was the solution already found out to be infeasible? */
242  SCIP_RESULT* result /**< pointer to store the result of the callback method */
243  );
244 
245 /** calls diving solution enforcement callback of constraint handler, if it exists */
247  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
248  SCIP_SET* set, /**< global SCIP settings */
249  SCIP_DIVESET* diveset, /**< diving settings to control scoring */
250  SCIP_SOL* sol, /**< current solution of diving mode */
251  SCIP_Bool* success, /**< pointer to store whether constraint handler successfully found a variable */
252  SCIP_Bool* infeasible /**< pointer to store whether the current node was detected to be infeasible */
253  );
254 
255 /** calls enforcing method of constraint handler for pseudo solution for all constraints added after last
256  * conshdlrReset() call
257  */
259  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
260  BMS_BLKMEM* blkmem, /**< block memory */
261  SCIP_SET* set, /**< global SCIP settings */
262  SCIP_STAT* stat, /**< dynamic problem statistics */
263  SCIP_TREE* tree, /**< branch and bound tree */
264  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
265  SCIP_Bool solinfeasible, /**< was the solution already found out to be infeasible? */
266  SCIP_Bool objinfeasible, /**< is the solution infeasible anyway due to violating lower objective bound? */
267  SCIP_Bool forced, /**< should enforcement of pseudo solution be forced? */
268  SCIP_RESULT* result /**< pointer to store the result of the callback method */
269  );
270 
271 /** calls feasibility check method of constraint handler */
273  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
274  BMS_BLKMEM* blkmem, /**< block memory */
275  SCIP_SET* set, /**< global SCIP settings */
276  SCIP_STAT* stat, /**< dynamic problem statistics */
277  SCIP_SOL* sol, /**< primal CIP solution */
278  SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
279  SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
280  SCIP_Bool printreason, /**< Should the reason for the violation be printed? */
281  SCIP_Bool completely, /**< Should all violations be checked? */
282  SCIP_RESULT* result /**< pointer to store the result of the callback method */
283  );
284 
285 /** calls propagation method of constraint handler */
287  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
288  BMS_BLKMEM* blkmem, /**< block memory */
289  SCIP_SET* set, /**< global SCIP settings */
290  SCIP_STAT* stat, /**< dynamic problem statistics */
291  int depth, /**< depth of current node; -1 if preprocessing domain propagation */
292  SCIP_Bool fullpropagation, /**< should all constraints be propagated (or only new ones)? */
293  SCIP_Bool execdelayed, /**< execute propagation method even if it is marked to be delayed */
294  SCIP_Bool instrongbranching, /**< are we currently doing strong branching? */
295  SCIP_PROPTIMING proptiming, /**< current point in the node solving process */
296  SCIP_RESULT* result /**< pointer to store the result of the callback method */
297  );
298 
299 /** calls presolving method of constraint handler */
301  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
302  BMS_BLKMEM* blkmem, /**< block memory */
303  SCIP_SET* set, /**< global SCIP settings */
304  SCIP_STAT* stat, /**< dynamic problem statistics */
305  SCIP_PRESOLTIMING timing, /**< current presolving timing */
306  int nrounds, /**< number of presolving rounds already done */
307  int* nfixedvars, /**< pointer to total number of variables fixed of all presolvers */
308  int* naggrvars, /**< pointer to total number of variables aggregated of all presolvers */
309  int* nchgvartypes, /**< pointer to total number of variable type changes of all presolvers */
310  int* nchgbds, /**< pointer to total number of variable bounds tightened of all presolvers */
311  int* naddholes, /**< pointer to total number of domain holes added of all presolvers */
312  int* ndelconss, /**< pointer to total number of deleted constraints of all presolvers */
313  int* naddconss, /**< pointer to total number of added constraints of all presolvers */
314  int* nupgdconss, /**< pointer to total number of upgraded constraints of all presolvers */
315  int* nchgcoefs, /**< pointer to total number of changed coefficients of all presolvers */
316  int* nchgsides, /**< pointer to total number of changed left/right hand sides of all presolvers */
317  SCIP_RESULT* result /**< pointer to store the result of the callback method */
318  );
319 
320 /** enables or disables all clocks of \p conshdlr, depending on the value of the flag */
322  SCIP_CONSHDLR* conshdlr, /**< the constraint handler for which all clocks should be enabled or disabled */
323  SCIP_Bool enable /**< should the clocks of the constraint handler be enabled? */
324  );
325 
326 /** calls variable deletion method of constraint handler */
328  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
329  BMS_BLKMEM* blkmem, /**< block memory */
330  SCIP_SET* set, /**< global SCIP settings */
331  SCIP_STAT* stat /**< dynamic problem statistics */
332  );
333 
334 
335 /** locks rounding of variables involved in the given constraint constraint handler that doesn't need constraints */
337  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
338  SCIP_SET* set /**< global SCIP settings */
339  );
340 
341 /** unlocks rounding of variables involved in the given constraint constraint handler that doesn't need constraints */
343  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
344  SCIP_SET* set /**< global SCIP settings */
345  );
346 
347 /**
348  * callback setter methods of constraint handlers
349  */
350 
351 /** sets copy method of both the constraint handler and each associated constraint */
353  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
354  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
355  SCIP_DECL_CONSCOPY ((*conscopy)) /**< constraint copying method */
356  );
357 
358 /** sets destructor method of constraint handler */
360  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
361  SCIP_DECL_CONSFREE ((*consfree)) /**< destructor of constraint handler */
362  );
363 
364 /** sets initialization method of constraint handler */
366  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
367  SCIP_DECL_CONSINIT ((*consinit)) /**< initialize constraint handler */
368  );
369 
370 /** sets deinitialization method of constraint handler */
372  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
373  SCIP_DECL_CONSEXIT ((*consexit)) /**< deinitialize constraint handler */
374  );
375 
376 /** sets solving process initialization method of constraint handler */
378  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
379  SCIP_DECL_CONSINITSOL((*consinitsol)) /**< solving process initialization method of constraint handler */
380  );
381 
382 /** sets solving process deinitialization method of constraint handler */
384  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
385  SCIP_DECL_CONSEXITSOL ((*consexitsol)) /**< solving process deinitialization method of constraint handler */
386  );
387 
388 /** sets preprocessing initialization method of constraint handler */
390  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
391  SCIP_DECL_CONSINITPRE((*consinitpre)) /**< preprocessing initialization method of constraint handler */
392  );
393 
394 /** sets preprocessing deinitialization method of constraint handler */
396  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
397  SCIP_DECL_CONSEXITPRE((*consexitpre)) /**< preprocessing deinitialization method of constraint handler */
398  );
399 
400 /** sets presolving method of constraint handler */
402  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
403  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method of constraint handler */
404  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
405  SCIP_PRESOLTIMING presoltiming /**< timing mask of the constraint handler's presolving method */
406  );
407 
408 /** sets method of constraint handler to free specific constraint data */
410  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
411  SCIP_DECL_CONSDELETE ((*consdelete)) /**< free specific constraint data */
412  );
413 
414 /** sets method of constraint handler to transform constraint data into data belonging to the transformed problem */
416  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
417  SCIP_DECL_CONSTRANS ((*constrans)) /**< transform constraint data into data belonging to the transformed problem */
418  );
419 
420 /** sets method of constraint handler to initialize LP with relaxations of "initial" constraints */
422  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
423  SCIP_DECL_CONSINITLP ((*consinitlp)) /**< initialize LP with relaxations of "initial" constraints */
424  );
425 
426 /** sets propagation conflict resolving method of constraint handler */
428  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
429  SCIP_DECL_CONSRESPROP ((*consresprop)) /**< propagation conflict resolving method */
430  );
431 
432 /** sets activation notification method of constraint handler */
434  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
435  SCIP_DECL_CONSACTIVE ((*consactive)) /**< activation notification method */
436  );
437 
438 /** sets deactivation notification method of constraint handler */
440  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
441  SCIP_DECL_CONSDEACTIVE((*consdeactive)) /**< deactivation notification method */
442  );
443 
444 /** sets enabling notification method of constraint handler */
446  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
447  SCIP_DECL_CONSENABLE ((*consenable)) /**< enabling notification method */
448  );
449 
450 /** sets disabling notification method of constraint handler */
452  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
453  SCIP_DECL_CONSDISABLE ((*consdisable)) /**< disabling notification method */
454  );
455 
456 /** sets variable deletion method of constraint handler */
458  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
459  SCIP_DECL_CONSDELVARS ((*consdelvars)) /**< variable deletion method */
460  );
461 
462 /** sets constraint display method of constraint handler */
464  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
465  SCIP_DECL_CONSPRINT ((*consprint)) /**< constraint display method */
466  );
467 
468 /** sets constraint parsing method of constraint handler */
470  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
471  SCIP_DECL_CONSPARSE ((*consparse)) /**< constraint parsing method */
472  );
473 
474 /** sets constraint variable getter method of constraint handler */
476  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
477  SCIP_DECL_CONSGETVARS ((*consgetvars)) /**< constraint variable getter method */
478  );
479 
480 /** sets constraint variable number getter method of constraint handler */
482  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
483  SCIP_DECL_CONSGETNVARS((*consgetnvars)) /**< constraint variable number getter method */
484  );
485 
486 /** sets diving enforcement method of constraint handler */
488  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
489  SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)) /**< constraint handler diving solution enforcement method */
490  );
491 
492 /*
493  * Constraint set change methods
494  */
495 
496 /** frees constraint set change data and releases all included constraints */
498  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change */
499  BMS_BLKMEM* blkmem, /**< block memory */
500  SCIP_SET* set /**< global SCIP settings */
501  );
502 
503 /** adds constraint addition to constraint set changes, and captures constraint; activates constraint if the
504  * constraint set change data is currently active
505  */
507  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change data structure */
508  BMS_BLKMEM* blkmem, /**< block memory */
509  SCIP_SET* set, /**< global SCIP settings */
510  SCIP_STAT* stat, /**< dynamic problem statistics */
511  SCIP_CONS* cons, /**< added constraint */
512  int depth, /**< depth of constraint set change's node */
513  SCIP_Bool focusnode, /**< does the constraint set change belong to the focus node? */
514  SCIP_Bool active /**< is the constraint set change currently active? */
515  );
516 
517 /** adds constraint disabling to constraint set changes, and captures constraint */
519  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change data structure */
520  BMS_BLKMEM* blkmem, /**< block memory */
521  SCIP_SET* set, /**< global SCIP settings */
522  SCIP_CONS* cons /**< disabled constraint */
523  );
524 
525 /** applies constraint set change */
527  SCIP_CONSSETCHG* conssetchg, /**< constraint set change to apply */
528  BMS_BLKMEM* blkmem, /**< block memory */
529  SCIP_SET* set, /**< global SCIP settings */
530  SCIP_STAT* stat, /**< dynamic problem statistics */
531  int depth, /**< depth of constraint set change's node */
532  SCIP_Bool focusnode /**< does the constraint set change belong to the focus node? */
533  );
534 
535 /** undoes constraint set change */
537  SCIP_CONSSETCHG* conssetchg, /**< constraint set change to undo */
538  BMS_BLKMEM* blkmem, /**< block memory */
539  SCIP_SET* set, /**< global SCIP settings */
540  SCIP_STAT* stat /**< dynamic problem statistics */
541  );
542 
543 /** applies constraint set change to the global problem and deletes the constraint set change data */
545  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change data */
546  BMS_BLKMEM* blkmem, /**< block memory */
547  SCIP_SET* set, /**< global SCIP settings */
548  SCIP_STAT* stat, /**< dynamic problem statistics */
549  SCIP_PROB* prob, /**< problem data */
550  SCIP_REOPT* reopt /**< reoptimization data */
551  );
552 
553 /** increase count of applied cuts */
555  SCIP_CONSHDLR* conshdlr /**< constraint handler */
556  );
557 
558 /** increase count of found cuts */
560  SCIP_CONSHDLR* conshdlr /**< constraint handler */
561  );
562 
563 
564 
565 /*
566  * Constraint methods
567  */
568 
569 /** creates and captures a constraint, and inserts it into the conss array of its constraint handler
570  *
571  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution
572  * may be declared feasible even if it violates this particular constraint.
573  * This constellation should only be used, if no LP or pseudo solution can violate the constraint -- e.g. if a
574  * local constraint is redundant due to the variable's local bounds.
575  */
577  SCIP_CONS** cons, /**< pointer to constraint */
578  BMS_BLKMEM* blkmem, /**< block memory */
579  SCIP_SET* set, /**< global SCIP settings */
580  const char* name, /**< name of constraint */
581  SCIP_CONSHDLR* conshdlr, /**< constraint handler for this constraint */
582  SCIP_CONSDATA* consdata, /**< data for this specific constraint */
583  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
584  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
585  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
586  * Usually set to TRUE. */
587  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
588  * TRUE for model constraints, FALSE for additional, redundant constraints. */
589  SCIP_Bool check, /**< should the constraint be checked for feasibility?
590  * TRUE for model constraints, FALSE for additional, redundant constraints. */
591  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
592  * Usually set to TRUE. */
593  SCIP_Bool local, /**< is constraint only valid locally?
594  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
595  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
596  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
597  * adds coefficients to this constraint. */
598  SCIP_Bool dynamic, /**< is constraint subject to aging?
599  * Usually set to FALSE. Set to TRUE for own cuts which
600  * are separated as constraints. */
601  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
602  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
603  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
604  * if it may be moved to a more global node?
605  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
606  SCIP_Bool original, /**< is constraint belonging to the original problem? */
607  SCIP_Bool deleteconsdata /**< has the constraint data to be deleted if constraint is freed? */
608  );
609 
610 /** copies source constraint of source SCIP into the target constraint for the target SCIP, using the variable map for
611  * mapping the variables of the source SCIP to the variables of the target SCIP; if the copying process was successful
612  * a constraint is created and captured;
613  *
614  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, an LP or pseudo solution
615  * may be declared feasible even if it violates this particular constraint.
616  * This constellation should only be used, if no LP or pseudo solution can violate the constraint -- e.g. if a
617  * local constraint is redundant due to the variable's local bounds.
618  */
620  SCIP_CONS** cons, /**< pointer to store the created target constraint */
621  SCIP_SET* set, /**< global SCIP settings of the target SCIP */
622  const char* name, /**< name of constraint, or NULL if the name of the source constraint should be used */
623  SCIP* sourcescip, /**< source SCIP data structure */
624  SCIP_CONSHDLR* sourceconshdlr, /**< source constraint handler for this constraint */
625  SCIP_CONS* sourcecons, /**< source constraint of the source SCIP */
626  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to corresponding
627  * variables of the target SCIP */
628  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
629  * target constraints, must not be NULL! */
630  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? */
631  SCIP_Bool separate, /**< should the constraint be separated during LP processing? */
632  SCIP_Bool enforce, /**< should the constraint be enforced during node processing? */
633  SCIP_Bool check, /**< should the constraint be checked for feasibility? */
634  SCIP_Bool propagate, /**< should the constraint be propagated during node processing? */
635  SCIP_Bool local, /**< is constraint only valid locally? */
636  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)? */
637  SCIP_Bool dynamic, /**< is constraint subject to aging? */
638  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup? */
639  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
640  * if it may be moved to a more global node? */
641  SCIP_Bool global, /**< create a global or a local copy? */
642  SCIP_Bool* valid /**< pointer to store whether the copying was valid or not */
643  );
644 
645 /** parses constraint information (in cip format) out of a string; if the parsing process was successful a constraint is
646  * created, captured, and inserted into the conss array of its constraint handler.
647  *
648  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, an LP or pseudo solution
649  * may be declared feasible even if it violates this particular constraint.
650  * This constellation should only be used, if no LP or pseudo solution can violate the constraint -- e.g. if a
651  * local constraint is redundant due to the variable's local bounds.
652  */
654  SCIP_CONS** cons, /**< pointer to constraint */
655  SCIP_SET* set, /**< global SCIP settings */
656  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler of target SCIP */
657  const char* str, /**< name of constraint */
658  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
659  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
660  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
661  * Usually set to TRUE. */
662  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
663  * TRUE for model constraints, FALSE for additional, redundant constraints. */
664  SCIP_Bool check, /**< should the constraint be checked for feasibility?
665  * TRUE for model constraints, FALSE for additional, redundant constraints. */
666  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
667  * Usually set to TRUE. */
668  SCIP_Bool local, /**< is constraint only valid locally?
669  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
670  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
671  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
672  * adds coefficients to this constraint. */
673  SCIP_Bool dynamic, /**< is constraint subject to aging?
674  * Usually set to FALSE. Set to TRUE for own cuts which
675  * are separated as constraints. */
676  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
677  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
678  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
679  * if it may be moved to a more global node?
680  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
681  SCIP_Bool* success /**< pointer store if the paring process was successful */
682  );
683 
684 /** change name of given constraint */
686  SCIP_CONS* cons, /**< problem constraint */
687  BMS_BLKMEM* blkmem, /**< block memory buffer */
688  const char* name /**< new name of constraint */
689  );
690 
691 /** frees a constraint and removes it from the conss array of its constraint handler */
693  SCIP_CONS** cons, /**< constraint to free */
694  BMS_BLKMEM* blkmem, /**< block memory buffer */
695  SCIP_SET* set /**< global SCIP settings */
696  );
697 
698 /** increases usage counter of constraint */
699 void SCIPconsCapture(
700  SCIP_CONS* cons /**< constraint */
701  );
702 
703 /** decreases usage counter of constraint, and frees memory if necessary */
705  SCIP_CONS** cons, /**< pointer to constraint */
706  BMS_BLKMEM* blkmem, /**< block memory */
707  SCIP_SET* set /**< global SCIP settings */
708  );
709 
710 
711 /** outputs constraint information to file stream */
713  SCIP_CONS* cons, /**< constraint to print */
714  SCIP_SET* set, /**< global SCIP settings */
715  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
716  FILE* file /**< output file (or NULL for standard output) */
717  );
718 
719 /** checks single constraint for feasibility of the given solution */
721  SCIP_CONS* cons, /**< constraint to check */
722  SCIP_SET* set, /**< global SCIP settings */
723  SCIP_SOL* sol, /**< primal CIP solution */
724  SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
725  SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
726  SCIP_Bool printreason, /**< Should the reason for the violation be printed? */
727  SCIP_RESULT* result /**< pointer to store the result of the callback method */
728  );
729 
730 /** enforces single constraint for a given pseudo solution */
732  SCIP_CONS* cons, /**< constraint to enforce */
733  SCIP_SET* set, /**< global SCIP settings */
734  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
735  SCIP_Bool objinfeasible, /**< is the solution infeasible anyway due to violating lower objective bound? */
736  SCIP_RESULT* result /**< pointer to store the result of the callback method */
737  );
738 
739 /** enforces single constraint for a given LP solution */
741  SCIP_CONS* cons, /**< constraint to enforce */
742  SCIP_SET* set, /**< global SCIP settings */
743  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
744  SCIP_RESULT* result /**< pointer to store the result of the callback method */
745  );
746 
747 /** enforces single constraint for a given relaxation solution */
749  SCIP_CONS* cons, /**< constraint to enforce */
750  SCIP_SET* set, /**< global SCIP settings */
751  SCIP_SOL* sol, /**< solution to be enforced */
752  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
753  SCIP_RESULT* result /**< pointer to store the result of the callback method */
754  );
755 
756 /** calls LP initialization method for single constraint */
758  SCIP_CONS* cons, /**< constraint to initialize */
759  SCIP_SET* set, /**< global SCIP settings */
760  SCIP_Bool* infeasible /**< pointer to store whether infeasibility was detected while building the LP */
761  );
762 
763 /** calls separation method of single constraint for LP solution */
765  SCIP_CONS* cons, /**< constraint to separate */
766  SCIP_SET* set, /**< global SCIP settings */
767  SCIP_RESULT* result /**< pointer to store the result of the separation call */
768  );
769 
770 /** calls separation method of single constraint for given primal solution */
772  SCIP_CONS* cons, /**< constraint to separate */
773  SCIP_SET* set, /**< global SCIP settings */
774  SCIP_SOL* sol, /**< primal solution that should be separated */
775  SCIP_RESULT* result /**< pointer to store the result of the separation call */
776  );
777 
778 /** calls domain propagation method of single constraint */
780  SCIP_CONS* cons, /**< constraint to propagate */
781  SCIP_SET* set, /**< global SCIP settings */
782  SCIP_PROPTIMING proptiming, /**< current point in the node solving loop */
783  SCIP_RESULT* result /**< pointer to store the result of the callback method */
784  );
785 
786 /** resolves propagation conflict of single constraint */
788  SCIP_CONS* cons, /**< constraint to resolve conflict for */
789  SCIP_SET* set, /**< global SCIP settings */
790  SCIP_VAR* infervar, /**< the conflict variable whose bound change has to be resolved */
791  int inferinfo, /**< the user information passed to the corresponding SCIPinferVarLbCons() or SCIPinferVarUbCons() call */
792  SCIP_BOUNDTYPE boundtype, /**< the type of the changed bound (lower or upper bound) */
793  SCIP_BDCHGIDX* bdchgidx, /**< the index of the bound change, representing the point of time where the change took place */
794  SCIP_Real relaxedbd, /**< the relaxed bound which is sufficient to be explained */
795  SCIP_RESULT* result /**< pointer to store the result of the callback method */
796  );
797 
798 /** presolves single constraint */
800  SCIP_CONS* cons, /**< constraint to presolve */
801  SCIP_SET* set, /**< global SCIP settings */
802  int nrounds, /**< number of presolving rounds already done */
803  SCIP_PRESOLTIMING timing, /**< current presolving timing */
804  int nnewfixedvars, /**< number of variables fixed since the last call to the presolving method */
805  int nnewaggrvars, /**< number of variables aggregated since the last call to the presolving method */
806  int nnewchgvartypes, /**< number of variable type changes since the last call to the presolving method */
807  int nnewchgbds, /**< number of variable bounds tightened since the last call to the presolving method */
808  int nnewholes, /**< number of domain holes added since the last call to the presolving method */
809  int nnewdelconss, /**< number of deleted constraints since the last call to the presolving method */
810  int nnewaddconss, /**< number of added constraints since the last call to the presolving method */
811  int nnewupgdconss, /**< number of upgraded constraints since the last call to the presolving method */
812  int nnewchgcoefs, /**< number of changed coefficients since the last call to the presolving method */
813  int nnewchgsides, /**< number of changed left or right hand sides since the last call to the presolving method */
814  int* nfixedvars, /**< pointer to count total number of variables fixed of all presolvers */
815  int* naggrvars, /**< pointer to count total number of variables aggregated of all presolvers */
816  int* nchgvartypes, /**< pointer to count total number of variable type changes of all presolvers */
817  int* nchgbds, /**< pointer to count total number of variable bounds tightened of all presolvers */
818  int* naddholes, /**< pointer to count total number of domain holes added of all presolvers */
819  int* ndelconss, /**< pointer to count total number of deleted constraints of all presolvers */
820  int* naddconss, /**< pointer to count total number of added constraints of all presolvers */
821  int* nupgdconss, /**< pointer to count total number of upgraded constraints of all presolvers */
822  int* nchgcoefs, /**< pointer to count total number of changed coefficients of all presolvers */
823  int* nchgsides, /**< pointer to count total number of changed left/right hand sides of all presolvers */
824  SCIP_RESULT* result /**< pointer to store the result of the callback method */
825  );
826 
827 /** calls constraint activation notification method of single constraint */
829  SCIP_CONS* cons, /**< constraint to notify */
830  SCIP_SET* set /**< global SCIP settings */
831  );
832 
833 /** calls constraint deactivation notification method of single constraint */
835  SCIP_CONS* cons, /**< constraint to notify */
836  SCIP_SET* set /**< global SCIP settings */
837  );
838 
839 /** method to collect the variables of a constraint
840  *
841  * If the number of variables is greater than the available slots in the variable array, nothing happens except that
842  * the success point is set to FALSE. With the method SCIPgetConsNVars() it is possible to get the number of variables
843  * a constraint has in its scope.
844  *
845  * @note The success pointer indicates if all variables were copied into the vars arrray.
846  *
847  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
848  * set to FALSE.
849  */
851  SCIP_CONS* cons, /**< constraint to print */
852  SCIP_SET* set, /**< global SCIP settings */
853  SCIP_VAR** vars, /**< array to store the involved variable of the constraint */
854  int varssize, /**< available slots in vars array which is needed to check if the array is large enough */
855  SCIP_Bool* success /**< pointer to store whether the variables are successfully copied */
856  );
857 
858 /** method to collect the number of variables of a constraint
859  *
860  * @note The success pointer indicates if the contraint handler was able to return the number of variables
861  *
862  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
863  * set to FALSE
864  */
866  SCIP_CONS* cons, /**< constraint to print */
867  SCIP_SET* set, /**< global SCIP settings */
868  int* nvars, /**< pointer to store the number of variables */
869  SCIP_Bool* success /**< pointer to store whether the constraint successfully returned the number of variables */
870  );
871 
872 /** globally removes constraint from all subproblems; removes constraint from the constraint set change data of the
873  * node, where it was created, or from the problem, if it was a problem constraint
874  */
876  SCIP_CONS* cons, /**< constraint to delete */
877  BMS_BLKMEM* blkmem, /**< block memory */
878  SCIP_SET* set, /**< global SCIP settings */
879  SCIP_STAT* stat, /**< dynamic problem statistics */
880  SCIP_PROB* prob, /**< problem data */
881  SCIP_REOPT* reopt /**< reoptimization data */
882  );
883 
884 /** gets and captures transformed constraint of a given constraint; if the constraint is not yet transformed,
885  * a new transformed constraint for this constraint is created
886  */
888  SCIP_CONS* origcons, /**< original constraint */
889  BMS_BLKMEM* blkmem, /**< block memory buffer */
890  SCIP_SET* set, /**< global SCIP settings */
891  SCIP_CONS** transcons /**< pointer to store the transformed constraint */
892  );
893 
894 /** sets the initial flag of the given constraint */
896  SCIP_CONS* cons, /**< constraint */
897  SCIP_SET* set, /**< global SCIP settings */
898  SCIP_STAT* stat, /**< dynamic problem statistics */
899  SCIP_Bool initial /**< new value */
900  );
901 
902 /** sets the separate flag of the given constraint */
904  SCIP_CONS* cons, /**< constraint */
905  SCIP_SET* set, /**< global SCIP settings */
906  SCIP_Bool separate /**< new value */
907  );
908 
909 /** sets the enforce flag of the given constraint */
911  SCIP_CONS* cons, /**< constraint */
912  SCIP_SET* set, /**< global SCIP settings */
913  SCIP_Bool enforce /**< new value */
914  );
915 
916 /** sets the check flag of the given constraint */
918  SCIP_CONS* cons, /**< constraint */
919  SCIP_SET* set, /**< global SCIP settings */
920  SCIP_Bool check /**< new value */
921  );
922 
923 /** sets the propagate flag of the given constraint */
925  SCIP_CONS* cons, /**< constraint */
926  SCIP_SET* set, /**< global SCIP settings */
927  SCIP_Bool propagate /**< new value */
928  );
929 
930 /** sets the local flag of the given constraint */
931 void SCIPconsSetLocal(
932  SCIP_CONS* cons, /**< constraint */
933  SCIP_Bool local /**< new value */
934  );
935 
936 /** sets the modifiable flag of the given constraint */
938  SCIP_CONS* cons, /**< constraint */
939  SCIP_Bool modifiable /**< new value */
940  );
941 
942 /** sets the dynamic flag of the given constraint */
943 void SCIPconsSetDynamic(
944  SCIP_CONS* cons, /**< constraint */
945  SCIP_Bool dynamic /**< new value */
946  );
947 
948 /** sets the removable flag of the given constraint */
950  SCIP_CONS* cons, /**< constraint */
951  SCIP_Bool removable /**< new value */
952  );
953 
954 /** sets the stickingatnode flag of the given constraint */
956  SCIP_CONS* cons, /**< constraint */
957  SCIP_Bool stickingatnode /**< new value */
958  );
959 
960 /** gives the constraint a new name; ATTENTION: to old pointer is over written that might
961  * result in a memory leakage */
963  SCIP_CONS* cons, /**< constraint */
964  const char* name /**< new name of constraint */
965  );
966 
967 /** gets associated transformed constraint of an original constraint, or NULL if no associated transformed constraint
968  * exists
969  */
971  SCIP_CONS* cons /**< constraint */
972  );
973 
974 /** activates constraint or marks constraint to be activated in next update */
976  SCIP_CONS* cons, /**< constraint */
977  SCIP_SET* set, /**< global SCIP settings */
978  SCIP_STAT* stat, /**< dynamic problem statistics */
979  int depth, /**< depth in the tree where the constraint activation takes place, or -1 for global problem */
980  SCIP_Bool focusnode /**< does the constraint activation take place at the focus node? */
981  );
982 
983 /** deactivates constraint or marks constraint to be deactivated in next update */
985  SCIP_CONS* cons, /**< constraint */
986  SCIP_SET* set, /**< global SCIP settings */
987  SCIP_STAT* stat /**< dynamic problem statistics */
988  );
989 
990 /** enables constraint's separation, enforcing, and propagation capabilities or marks them to be enabled in next update */
992  SCIP_CONS* cons, /**< constraint */
993  SCIP_SET* set, /**< global SCIP settings */
994  SCIP_STAT* stat /**< dynamic problem statistics */
995  );
996 
997 /** disables constraint's separation, enforcing, and propagation capabilities or marks them to be disabled in next update */
999  SCIP_CONS* cons, /**< constraint */
1000  SCIP_SET* set, /**< global SCIP settings */
1001  SCIP_STAT* stat /**< dynamic problem statistics */
1002  );
1003 
1004 /** enables constraint's separation capabilities or marks them to be enabled in next update */
1006  SCIP_CONS* cons, /**< constraint */
1007  SCIP_SET* set /**< global SCIP settings */
1008  );
1009 
1010 /** disables constraint's separation capabilities or marks them to be disabled in next update */
1012  SCIP_CONS* cons, /**< constraint */
1013  SCIP_SET* set /**< global SCIP settings */
1014  );
1015 
1016 /** enables constraint's propagation capabilities or marks them to be enabled in next update */
1018  SCIP_CONS* cons, /**< constraint */
1019  SCIP_SET* set /**< global SCIP settings */
1020  );
1021 
1022 /** disables constraint's propagation capabilities or marks them to be disabled in next update */
1024  SCIP_CONS* cons, /**< constraint */
1025  SCIP_SET* set /**< global SCIP settings */
1026  );
1027 
1028 /** marks the constraint to be a conflict */
1030  SCIP_CONS* cons /**< constraint */
1031  );
1032 
1033 /** marks the constraint to be propagated (update might be delayed) */
1034 SCIP_EXPORT
1036  SCIP_CONS* cons, /**< constraint */
1037  SCIP_SET* set /**< global SCIP settings */
1038  );
1039 
1040 /** unmarks the constraint to be propagated (update might be delayed) */
1042  SCIP_CONS* cons, /**< constraint */
1043  SCIP_SET* set /**< global SCIP settings */
1044  );
1045 
1046 /** adds given value to age of constraint, but age can never become negative;
1047  * should be called
1048  * - in constraint separation, if no cut was found for this constraint,
1049  * - in constraint enforcing, if constraint was feasible, and
1050  * - in constraint propagation, if no domain reduction was deduced;
1051  * if it's age exceeds the constraint age limit, makes constraint obsolete or marks constraint to be made obsolete
1052  * in next update
1053  */
1055  SCIP_CONS* cons, /**< constraint */
1056  BMS_BLKMEM* blkmem, /**< block memory */
1057  SCIP_SET* set, /**< global SCIP settings */
1058  SCIP_STAT* stat, /**< dynamic problem statistics */
1059  SCIP_PROB* prob, /**< problem data */
1060  SCIP_Real deltaage, /**< value to add to the constraint's age */
1061  SCIP_REOPT* reopt /**< reoptimization data */
1062  );
1063 
1064 /** increases age of constraint by 1.0;
1065  * should be called
1066  * - in constraint separation, if no cut was found for this constraint,
1067  * - in constraint enforcing, if constraint was feasible, and
1068  * - in constraint propagation, if no domain reduction was deduced;
1069  * if it's age exceeds the constraint age limit, makes constraint obsolete or marks constraint to be made obsolete
1070  * in next update
1071  */
1073  SCIP_CONS* cons, /**< constraint */
1074  BMS_BLKMEM* blkmem, /**< block memory */
1075  SCIP_SET* set, /**< global SCIP settings */
1076  SCIP_STAT* stat, /**< dynamic problem statistics */
1077  SCIP_PROB* prob, /**< problem data */
1078  SCIP_REOPT* reopt /**< reoptimization data */
1079  );
1080 
1081 /** resets age of constraint to zero;
1082  * should be called
1083  * - in constraint separation, if a cut was found for this constraint,
1084  * - in constraint enforcing, if the constraint was violated, and
1085  * - in constraint propagation, if a domain reduction was deduced;
1086  * if it was obsolete, makes constraint useful again or marks constraint to be made useful again in next update
1087  */
1089  SCIP_CONS* cons, /**< constraint */
1090  SCIP_SET* set /**< global SCIP settings */
1091  );
1092 
1093 /** resolves the given conflicting bound, that was deduced by the given constraint, by putting all "reason" bounds
1094  * leading to the deduction into the conflict queue with calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(),
1095  * SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar();
1096  *
1097  * @note it is sufficient to explain the relaxed bound change
1098  */
1100  SCIP_CONS* cons, /**< constraint that deduced the assignment */
1101  SCIP_SET* set, /**< global SCIP settings */
1102  SCIP_VAR* infervar, /**< variable whose bound was deduced by the constraint */
1103  int inferinfo, /**< user inference information attached to the bound change */
1104  SCIP_BOUNDTYPE inferboundtype, /**< bound that was deduced (lower or upper bound) */
1105  SCIP_BDCHGIDX* bdchgidx, /**< bound change index, representing the point of time where change took place */
1106  SCIP_Real relaxedbd, /**< the relaxed bound */
1107  SCIP_RESULT* result /**< pointer to store the result of the callback method */
1108  );
1109 
1110 /** adds given values to lock status of the constraint and updates the locks of the given locktype of the involved variables */
1112  SCIP_CONS* cons, /**< constraint */
1113  SCIP_SET* set, /**< global SCIP settings */
1114  SCIP_LOCKTYPE locktype, /**< type of variable locks */
1115  int nlockspos, /**< increase in number of rounding locks for constraint */
1116  int nlocksneg /**< increase in number of rounding locks for constraint's negation */
1117  );
1118 
1119 /*
1120  * Hash functions
1121  */
1122 
1123 /** gets the key (i.e. the name) of the given constraint */
1124 SCIP_DECL_HASHGETKEY(SCIPhashGetKeyCons);
1125 
1126 /*
1127  * method for arrays of contraint handlers
1128  */
1129 
1130 /** stores all constraints marked for propagation away when probing is started */
1132  SCIP_SET* set, /**< global SCIP settings */
1133  SCIP_CONSHDLR** conshdlrs, /**< all constraint handlers */
1134  int nconshdlrs /**< number of contraint handlers */
1135  );
1136 
1137 /** reset all constraints marked for propagation when probing was finished */
1139  SCIP_SET* set, /**< global SCIP settings */
1140  BMS_BLKMEM* blkmem, /**< block memory */
1141  SCIP_CONSHDLR** conshdlrs, /**< all constraint handlers */
1142  int nconshdlrs /**< number of contraint handlers */
1143  );
1144 
1145 #ifdef __cplusplus
1146 }
1147 #endif
1148 
1149 #endif
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:52
void SCIPconshdlrSetInitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
Definition: cons.c:4337
SCIP_RETCODE SCIPconsEnforelax(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
Definition: cons.c:7419
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition: type_lp.h:50
void SCIPconshdlrSetInitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
Definition: cons.c:4315
SCIP_RETCODE SCIPconsEnable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:6806
SCIP_RETCODE SCIPconshdlrInitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2671
SCIP_RETCODE SCIPconsFree(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: cons.c:6136
void SCIPconshdlrSetResprop(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
Definition: cons.c:4421
type definitions for miscellaneous datastructures
timing definitions for SCIP
SCIP_RETCODE SCIPconshdlrSeparateSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, SCIP_SOL *sol, int depth, SCIP_Bool execdelayed, SCIP_RESULT *result)
Definition: cons.c:3012
SCIP_RETCODE SCIPconshdlrLockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
Definition: cons.c:4145
SCIP_RETCODE SCIPconsAddLocks(SCIP_CONS *cons, SCIP_SET *set, SCIP_LOCKTYPE locktype, int nlockspos, int nlocksneg)
Definition: cons.c:7249
void SCIPconsSetLocal(SCIP_CONS *cons, SCIP_Bool local)
Definition: cons.c:6647
void SCIPconsSetNamePointer(SCIP_CONS *cons, const char *name)
Definition: cons.c:6705
SCIP_DECL_CONSSEPALP(ConshdlrSubtour::scip_sepalp)
SCIP_RETCODE SCIPconssetchgAddDisabledCons(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS *cons)
Definition: cons.c:5424
#define SCIP_DECL_CONSINITPRE(x)
Definition: type_cons.h:146
SCIP_RETCODE SCIPconsEnableSeparation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6873
#define SCIP_DECL_CONSGETDIVEBDCHGS(x)
Definition: type_cons.h:909
#define SCIP_DECL_CONSPRESOL(x)
Definition: type_cons.h:550
SCIP_RETCODE SCIPconshdlrFree(SCIP_CONSHDLR **conshdlr, SCIP_SET *set)
Definition: cons.c:2344
SCIP_RETCODE SCIPconshdlrCheck(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_Bool completely, SCIP_RESULT *result)
Definition: cons.c:3738
SCIP_RETCODE SCIPconshdlrsStorePropagationStatus(SCIP_SET *set, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
Definition: cons.c:7822
SCIP_RETCODE SCIPconsIncAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
Definition: cons.c:7127
SCIP_DECL_CONSENFOPS(ConshdlrSubtour::scip_enfops)
SCIP_CONS * SCIPconsGetTransformed(SCIP_CONS *cons)
Definition: cons.c:6719
SCIP_RETCODE SCIPconsSetEnforced(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool enforce)
Definition: cons.c:6529
SCIP_RETCODE SCIPconsDeactive(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7753
SCIP_RETCODE SCIPconsEnfolp(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_RESULT *result)
Definition: cons.c:7377
#define SCIP_DECL_CONSRESPROP(x)
Definition: type_cons.h:601
SCIP_RETCODE SCIPconssetchgFree(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: cons.c:5304
datastructures for constraints and constraint handlers
SCIP_RETCODE SCIPconsActivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
Definition: cons.c:6729
SCIP_RETCODE SCIPconshdlrEnforcePseudoSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_BRANCHCAND *branchcand, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_Bool forced, SCIP_RESULT *result)
Definition: cons.c:3534
SCIP_RETCODE SCIPconshdlrCopyInclude(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_Bool *valid)
Definition: cons.c:1969
void SCIPconshdlrSetGetDiveBdChgs(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)))
Definition: cons.c:4531
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
#define SCIP_DECL_CONSGETNVARS(x)
Definition: type_cons.h:874
SCIP_RETCODE SCIPconssetchgApply(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
Definition: cons.c:5542
SCIP_RETCODE SCIPconsResolvePropagation(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE inferboundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)
Definition: cons.c:7189
type definitions for global SCIP settings
SCIP_RETCODE SCIPconsSepasol(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_RESULT *result)
Definition: cons.c:7530
SCIP_RETCODE SCIPconsResprop(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)
Definition: cons.c:7613
#define SCIP_DECL_CONSEXITSOL(x)
Definition: type_cons.h:206
static GRAPHNODE ** active
SCIP_RETCODE SCIPconsUnmarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7031
void SCIPconshdlrSetDeactive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
Definition: cons.c:4443
void SCIPconshdlrSetExitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
Definition: cons.c:4326
type definitions for return codes for SCIP methods
SCIP_RETCODE SCIPconsEnablePropagation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6931
SCIP_DECL_CONSSEPASOL(ConshdlrSubtour::scip_sepasol)
SCIP_DECL_CONSDELETE(ConshdlrSubtour::scip_delete)
SCIP_RETCODE SCIPconsDelete(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
Definition: cons.c:6350
SCIP_RETCODE SCIPconsTransform(SCIP_CONS *origcons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS **transcons)
Definition: cons.c:6410
type definitions for collecting reoptimization information
SCIP_RETCODE SCIPconshdlrExit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2502
SCIP_RETCODE SCIPconshdlrCreate(SCIP_CONSHDLR **conshdlr, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int sepapriority, int enfopriority, int checkpriority, int sepafreq, int propfreq, int eagerfreq, int maxprerounds, SCIP_Bool delaysepa, SCIP_Bool delayprop, SCIP_Bool needscons, SCIP_PROPTIMING proptiming, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSFREE((*consfree)), SCIP_DECL_CONSINIT((*consinit)), SCIP_DECL_CONSEXIT((*consexit)), SCIP_DECL_CONSINITPRE((*consinitpre)), SCIP_DECL_CONSEXITPRE((*consexitpre)), SCIP_DECL_CONSINITSOL((*consinitsol)), SCIP_DECL_CONSEXITSOL((*consexitsol)), SCIP_DECL_CONSDELETE((*consdelete)), SCIP_DECL_CONSTRANS((*constrans)), SCIP_DECL_CONSINITLP((*consinitlp)), SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFORELAX((*consenforelax)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSPROP((*consprop)), SCIP_DECL_CONSPRESOL((*conspresol)), SCIP_DECL_CONSRESPROP((*consresprop)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_DECL_CONSACTIVE((*consactive)), SCIP_DECL_CONSDEACTIVE((*consdeactive)), SCIP_DECL_CONSENABLE((*consenable)), SCIP_DECL_CONSDISABLE((*consdisable)), SCIP_DECL_CONSDELVARS((*consdelvars)), SCIP_DECL_CONSPRINT((*consprint)), SCIP_DECL_CONSCOPY((*conscopy)), SCIP_DECL_CONSPARSE((*consparse)), SCIP_DECL_CONSGETVARS((*consgetvars)), SCIP_DECL_CONSGETNVARS((*consgetnvars)), SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), SCIP_CONSHDLRDATA *conshdlrdata)
Definition: cons.c:2269
SCIP_RETCODE SCIPconsParse(SCIP_CONS **cons, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *str, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool *success)
Definition: cons.c:6009
#define SCIP_DECL_CONSINITLP(x)
Definition: type_cons.h:249
type definitions for branching rules
type definitions for problem statistics
SCIP_DECL_CONSENFOLP(ConshdlrSubtour::scip_enfolp)
void SCIPconshdlrSetExit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXIT((*consexit)))
Definition: cons.c:4304
type definitions for LP management
SCIP_DECL_CONSCHECK(ConshdlrSubtour::scip_check)
SCIP_RETCODE SCIPconsDisable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:6839
#define SCIP_DECL_CONSINITSOL(x)
Definition: type_cons.h:191
SCIP_RETCODE SCIPconshdlrPresolve(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRESOLTIMING timing, int nrounds, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
Definition: cons.c:3971
void SCIPconshdlrSetActive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
Definition: cons.c:4432
public methods for managing constraints
SCIP_RETCODE SCIPconshdlrInitLP(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Bool initkeptconss, SCIP_Bool *cutoff)
Definition: cons.c:2748
enum SCIP_LockType SCIP_LOCKTYPE
Definition: type_var.h:87
SCIP_RETCODE SCIPconshdlrsResetPropagationStatus(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
Definition: cons.c:7862
SCIP_RETCODE SCIPconshdlrPropagate(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool fullpropagation, SCIP_Bool execdelayed, SCIP_Bool instrongbranching, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
Definition: cons.c:3800
#define SCIP_DECL_CONSPARSE(x)
Definition: type_cons.h:834
SCIP_RETCODE SCIPconsSetPropagated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool propagate)
Definition: cons.c:6612
SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: cons.c:6203
void SCIPconshdlrSetDelete(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
Definition: cons.c:4388
#define SCIP_DECL_CONSDEACTIVE(x)
Definition: type_cons.h:695
SCIP_RETCODE SCIPconsAddAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real deltaage, SCIP_REOPT *reopt)
Definition: cons.c:7068
void SCIPconshdlrSetCopy(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
Definition: cons.c:4267
void SCIPconshdlrSetParse(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
Definition: cons.c:4498
SCIP_DECL_CONSTRANS(ConshdlrSubtour::scip_trans)
SCIP_RETCODE SCIPconshdlrInit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2389
SCIP_DECL_HASHGETKEY(SCIPhashGetKeyCons)
Definition: cons.c:7783
SCIP_RETCODE SCIPconshdlrSeparateLP(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_SEPASTORE *sepastore, int depth, SCIP_Bool execdelayed, SCIP_RESULT *result)
Definition: cons.c:2855
#define SCIP_DECL_CONSDISABLE(x)
Definition: type_cons.h:725
SCIP_DECL_CONSDELVARS(ConshdlrSubtour::scip_delvars)
unsigned int SCIP_PRESOLTIMING
Definition: type_timing.h:52
type definitions for problem variables
#define SCIP_DECL_CONSENABLE(x)
Definition: type_cons.h:710
SCIP_RETCODE SCIPconshdlrSetPresol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
Definition: cons.c:4359
type definitions for storing separated cuts
struct SCIP_ConsData SCIP_CONSDATA
Definition: type_cons.h:56
SCIP_RETCODE SCIPconsPresol(SCIP_CONS *cons, SCIP_SET *set, int nrounds, SCIP_PRESOLTIMING timing, int nnewfixedvars, int nnewaggrvars, int nnewchgvartypes, int nnewchgbds, int nnewholes, int nnewdelconss, int nnewaddconss, int nnewupgdconss, int nnewchgcoefs, int nnewchgsides, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
Definition: cons.c:7655
SCIP_RETCODE SCIPconsResetAge(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7148
#define SCIP_DECL_CONSGETVARS(x)
Definition: type_cons.h:856
#define SCIP_DECL_CONSEXIT(x)
Definition: type_cons.h:126
void SCIPconshdlrSetTrans(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
Definition: cons.c:4399
SCIP_RETCODE SCIPconsSetInitial(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool initial)
Definition: cons.c:6460
#define SCIP_Bool
Definition: def.h:84
SCIP_RETCODE SCIPconshdlrExitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2631
SCIP_DECL_CONSPROP(ConshdlrSubtour::scip_prop)
SCIP_RETCODE SCIPconsDisableSeparation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6903
SCIP_RETCODE SCIPconsActive(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7729
SCIP_RETCODE SCIPconsDeactivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:6771
void SCIPconsCapture(SCIP_CONS *cons)
Definition: cons.c:6191
void SCIPconshdlrEnableOrDisableClocks(SCIP_CONSHDLR *conshdlr, SCIP_Bool enable)
Definition: cons.c:4654
#define SCIP_DECL_CONSEXITPRE(x)
Definition: type_cons.h:170
SCIP_RETCODE SCIPconssetchgMakeGlobal(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
Definition: cons.c:5715
SCIP_RETCODE SCIPconssetchgUndo(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:5629
SCIP_RETCODE SCIPconshdlrInitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2545
SCIP_RETCODE SCIPconssetchgAddAddedCons(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons, int depth, SCIP_Bool focusnode, SCIP_Bool active)
Definition: cons.c:5378
void SCIPconshdlrSetDelvars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELVARS((*consdelvars)))
Definition: cons.c:4476
SCIP_RETCODE SCIPconsPrint(SCIP_CONS *cons, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: cons.c:6243
void SCIPconshdlrSetExitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITPRE((*consexitpre)))
Definition: cons.c:4348
type definitions for branch and bound tree
SCIP_RETCODE SCIPconsDisablePropagation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6961
SCIP_RETCODE SCIPconshdlrGetDiveBoundChanges(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_DIVESET *diveset, SCIP_SOL *sol, SCIP_Bool *success, SCIP_Bool *infeasible)
Definition: cons.c:3507
SCIP_RETCODE SCIPconshdlrUnlockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
Definition: cons.c:4160
type definitions for storing primal CIP solutions
type definitions for storing and manipulating the main problem
SCIP_RETCODE SCIPconsCopy(SCIP_CONS **cons, SCIP_SET *set, const char *name, SCIP *sourcescip, SCIP_CONSHDLR *sourceconshdlr, SCIP_CONS *sourcecons, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool global, SCIP_Bool *valid)
Definition: cons.c:5953
void SCIPconshdlrSetEnable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
Definition: cons.c:4454
void SCIPconshdlrSetGetVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
Definition: cons.c:4509
SCIP_RETCODE SCIPconsProp(SCIP_CONS *cons, SCIP_SET *set, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
Definition: cons.c:7573
SCIP_RETCODE SCIPconsInitlp(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool *infeasible)
Definition: cons.c:7463
SCIP_RETCODE SCIPconshdlrDelVars(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:4114
SCIP_RETCODE SCIPconsSepalp(SCIP_CONS *cons, SCIP_SET *set, SCIP_RESULT *result)
Definition: cons.c:7489
void SCIPconsSetModifiable(SCIP_CONS *cons, SCIP_Bool modifiable)
Definition: cons.c:6660
type definitions for block memory pools and memory buffers
SCIP_RETCODE SCIPconsMarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7001
SCIP_RETCODE SCIPconshdlrEnforceRelaxSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_SOL *relaxsol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
Definition: cons.c:3141
unsigned int SCIP_PROPTIMING
Definition: type_timing.h:66
SCIP_RETCODE SCIPconshdlrEnforceLPSol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_Bool solinfeasible, SCIP_RESULT *result)
Definition: cons.c:3329
SCIP_RETCODE SCIPconsGetNVars(SCIP_CONS *cons, SCIP_SET *set, int *nvars, SCIP_Bool *success)
Definition: cons.c:6318
SCIP_RETCODE SCIPconsChgName(SCIP_CONS *cons, BMS_BLKMEM *blkmem, const char *name)
Definition: cons.c:6116
SCIP_RETCODE SCIPconsSetChecked(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool check)
Definition: cons.c:6564
#define SCIP_DECL_CONSFREE(x)
Definition: type_cons.h:106
SCIP_RETCODE SCIPconsEnfops(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_RESULT *result)
Definition: cons.c:7333
SCIP_RETCODE SCIPconsCheck(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result)
Definition: cons.c:7295
void SCIPconshdlrSetPrint(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
Definition: cons.c:4487
void SCIPconshdlrIncNCutsFound(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:4884
#define SCIP_DECL_CONSINIT(x)
Definition: type_cons.h:116
SCIP_DECL_CONSLOCK(ConshdlrSubtour::scip_lock)
#define SCIP_DECL_CONSENFORELAX(x)
Definition: type_cons.h:378
#define SCIP_Real
Definition: def.h:177
SCIP_DECL_CONSPRINT(ConshdlrSubtour::scip_print)
result codes for SCIP callback methods
void SCIPconshdlrSetInitlp(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
Definition: cons.c:4410
void SCIPconsSetRemovable(SCIP_CONS *cons, SCIP_Bool removable)
Definition: cons.c:6682
SCIP_RETCODE SCIPconsCreate(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set, const char *name, SCIP_CONSHDLR *conshdlr, SCIP_CONSDATA *consdata, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool original, SCIP_Bool deleteconsdata)
Definition: cons.c:5811
#define SCIP_DECL_CONSACTIVE(x)
Definition: type_cons.h:680
void SCIPconshdlrSetInit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINIT((*consinit)))
Definition: cons.c:4293
void SCIPconsSetDynamic(SCIP_CONS *cons, SCIP_Bool dynamic)
Definition: cons.c:6671
void SCIPconsSetStickingAtNode(SCIP_CONS *cons, SCIP_Bool stickingatnode)
Definition: cons.c:6693
void SCIPconshdlrIncNAppliedCuts(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:4874
#define SCIP_DECL_CONSHDLRCOPY(x)
Definition: type_cons.h:98
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
Definition: type_cons.h:55
SCIP_DECL_CONSCOPY(ConshdlrSubtour::scip_copy)
void SCIPconsMarkConflict(SCIP_CONS *cons)
Definition: cons.c:6991
SCIP_RETCODE SCIPconsGetVars(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
Definition: cons.c:6282
SCIP_RETCODE SCIPconsSetSeparated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool separate)
Definition: cons.c:6494
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:430
SCIP_RETCODE SCIPconshdlrExitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool restart)
Definition: cons.c:2711
void SCIPconshdlrSetDisable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDISABLE((*consdisable)))
Definition: cons.c:4465
type definitions for constraints and constraint handlers
void SCIPconshdlrSetGetNVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
Definition: cons.c:4520
void SCIPconshdlrSetFree(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
Definition: cons.c:4282
memory allocation routines