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-2014 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 email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file cons.h
17  * @brief internal methods for constraints and constraint handlers
18  * @author Tobias Achterberg
19  */
20 
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
22 
23 #ifndef __SCIP_CONS_H__
24 #define __SCIP_CONS_H__
25 
26 
27 #include "scip/def.h"
28 #include "blockmemshell/memory.h"
29 #include "scip/type_retcode.h"
30 #include "scip/type_result.h"
31 #include "scip/type_set.h"
32 #include "scip/type_stat.h"
33 #include "scip/type_mem.h"
34 #include "scip/type_misc.h"
35 #include "scip/type_timing.h"
36 #include "scip/type_lp.h"
37 #include "scip/type_var.h"
38 #include "scip/type_prob.h"
39 #include "scip/type_sol.h"
40 #include "scip/type_tree.h"
41 #include "scip/type_sepastore.h"
42 #include "scip/type_cons.h"
43 #include "scip/pub_cons.h"
44 
45 #ifndef NDEBUG
46 #include "scip/struct_cons.h"
47 #endif
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 /*
54  * Constraint handler methods
55  */
56 
57 /** copies the given constraint handler to a new scip */
58 extern
60  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
61  SCIP_SET* set, /**< SCIP_SET of SCIP to copy to */
62  SCIP_Bool* valid /**< was the copying process valid? */
63  );
64 
65 /** creates a constraint handler */
66 extern
68  SCIP_CONSHDLR** conshdlr, /**< pointer to constraint handler data structure */
69  SCIP_SET* set, /**< global SCIP settings */
70  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
71  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
72  const char* name, /**< name of constraint handler */
73  const char* desc, /**< description of constraint handler */
74  int sepapriority, /**< priority of the constraint handler for separation */
75  int enfopriority, /**< priority of the constraint handler for constraint enforcing */
76  int checkpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
77  int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
78  int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
79  int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
80  * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
81  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
82  SCIP_Bool delaysepa, /**< should separation method be delayed, if other separators found cuts? */
83  SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
84  SCIP_Bool delaypresol, /**< should presolving method be delayed, if other presolvers found reductions? */
85  SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
86  SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagation method of constraint handlers should be executed */
87  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
88  SCIP_DECL_CONSFREE ((*consfree)), /**< destructor of constraint handler */
89  SCIP_DECL_CONSINIT ((*consinit)), /**< initialize constraint handler */
90  SCIP_DECL_CONSEXIT ((*consexit)), /**< deinitialize constraint handler */
91  SCIP_DECL_CONSINITPRE ((*consinitpre)), /**< presolving initialization method of constraint handler */
92  SCIP_DECL_CONSEXITPRE ((*consexitpre)), /**< presolving deinitialization method of constraint handler */
93  SCIP_DECL_CONSINITSOL ((*consinitsol)), /**< solving process initialization method of constraint handler */
94  SCIP_DECL_CONSEXITSOL ((*consexitsol)), /**< solving process deinitialization method of constraint handler */
95  SCIP_DECL_CONSDELETE ((*consdelete)), /**< free specific constraint data */
96  SCIP_DECL_CONSTRANS ((*constrans)), /**< transform constraint data into data belonging to the transformed problem */
97  SCIP_DECL_CONSINITLP ((*consinitlp)), /**< initialize LP with relaxations of "initial" constraints */
98  SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
99  SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
100  SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
101  SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
102  SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
103  SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
104  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method */
105  SCIP_DECL_CONSRESPROP ((*consresprop)), /**< propagation conflict resolving method */
106  SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
107  SCIP_DECL_CONSACTIVE ((*consactive)), /**< activation notification method */
108  SCIP_DECL_CONSDEACTIVE((*consdeactive)), /**< deactivation notification method */
109  SCIP_DECL_CONSENABLE ((*consenable)), /**< enabling notification method */
110  SCIP_DECL_CONSDISABLE ((*consdisable)), /**< disabling notification method */
111  SCIP_DECL_CONSDELVARS ((*consdelvars)), /**< variable deletion method */
112  SCIP_DECL_CONSPRINT ((*consprint)), /**< constraint display method */
113  SCIP_DECL_CONSCOPY ((*conscopy)), /**< constraint copying method */
114  SCIP_DECL_CONSPARSE ((*consparse)), /**< constraint parsing method */
115  SCIP_DECL_CONSGETVARS ((*consgetvars)), /**< constraint get variables method */
116  SCIP_DECL_CONSGETNVARS((*consgetnvars)), /**< constraint get number of variable method */
117  SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
118  );
119 
120 /** calls destructor and frees memory of constraint handler */
121 extern
123  SCIP_CONSHDLR** conshdlr, /**< pointer to constraint handler data structure */
124  SCIP_SET* set /**< global SCIP settings */
125  );
126 
127 /** calls init method of constraint handler */
128 extern
130  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
131  BMS_BLKMEM* blkmem, /**< block memory */
132  SCIP_SET* set, /**< global SCIP settings */
133  SCIP_STAT* stat /**< dynamic problem statistics */
134  );
135 
136 /** calls exit method of constraint handler */
137 extern
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 */
146 extern
148  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
149  BMS_BLKMEM* blkmem, /**< block memory */
150  SCIP_SET* set, /**< global SCIP settings */
151  SCIP_STAT* stat /**< dynamic problem statistics */
152  );
153 
154 /** informs constraint handler that the presolving is finished */
155 extern
157  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
158  BMS_BLKMEM* blkmem, /**< block memory */
159  SCIP_SET* set, /**< global SCIP settings */
160  SCIP_STAT* stat /**< dynamic problem statistics */
161  );
162 
163 /** informs constraint handler that the branch and bound process is being started */
164 extern
166  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
167  BMS_BLKMEM* blkmem, /**< block memory */
168  SCIP_SET* set, /**< global SCIP settings */
169  SCIP_STAT* stat /**< dynamic problem statistics */
170  );
171 
172 /** informs constraint handler that the branch and bound process data is being freed */
173 extern
175  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
176  BMS_BLKMEM* blkmem, /**< block memory */
177  SCIP_SET* set, /**< global SCIP settings */
178  SCIP_STAT* stat, /**< dynamic problem statistics */
179  SCIP_Bool restart /**< was this exit solve call triggered by a restart? */
180  );
181 
182 /** calls LP initialization method of constraint handler to separate all initial active constraints */
183 extern
185  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
186  BMS_BLKMEM* blkmem, /**< block memory */
187  SCIP_SET* set, /**< global SCIP settings */
188  SCIP_STAT* stat, /**< dynamic problem statistics */
189  SCIP_TREE* tree, /**< branch and bound tree */
190  SCIP_Bool initkeptconss /**< Also initialize constraints which are valid at a more global node,
191  * but were not activated there? Should be FALSE for repeated calls at
192  * one node or if the current focusnode is a child of the former one */
193  );
194 
195 /** calls separator method of constraint handler to separate LP solution */
196 extern
198  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
199  BMS_BLKMEM* blkmem, /**< block memory */
200  SCIP_SET* set, /**< global SCIP settings */
201  SCIP_STAT* stat, /**< dynamic problem statistics */
202  SCIP_SEPASTORE* sepastore, /**< separation storage */
203  int depth, /**< depth of current node */
204  SCIP_Bool execdelayed, /**< execute separation method even if it is marked to be delayed */
205  SCIP_RESULT* result /**< pointer to store the result of the callback method */
206  );
207 
208 /** calls separator method of constraint handler to separate given primal solution */
209 extern
211  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
212  BMS_BLKMEM* blkmem, /**< block memory */
213  SCIP_SET* set, /**< global SCIP settings */
214  SCIP_STAT* stat, /**< dynamic problem statistics */
215  SCIP_SEPASTORE* sepastore, /**< separation storage */
216  SCIP_SOL* sol, /**< primal solution that should be separated */
217  int depth, /**< depth of current node */
218  SCIP_Bool execdelayed, /**< execute separation method even if it is marked to be delayed */
219  SCIP_RESULT* result /**< pointer to store the result of the callback method */
220  );
221 
222 /** calls enforcing method of constraint handler for LP solution for all constraints added after last
223  * conshdlrReset() call
224  */
225 extern
227  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
228  BMS_BLKMEM* blkmem, /**< block memory */
229  SCIP_SET* set, /**< global SCIP settings */
230  SCIP_STAT* stat, /**< dynamic problem statistics */
231  SCIP_TREE* tree, /**< branch and bound tree */
232  SCIP_SEPASTORE* sepastore, /**< separation storage */
233  SCIP_Bool solinfeasible, /**< was the solution already found out to be infeasible? */
234  SCIP_RESULT* result /**< pointer to store the result of the callback method */
235  );
236 
237 /** calls enforcing method of constraint handler for pseudo solution for all constraints added after last
238  * conshdlrReset() call
239  */
240 extern
242  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
243  BMS_BLKMEM* blkmem, /**< block memory */
244  SCIP_SET* set, /**< global SCIP settings */
245  SCIP_STAT* stat, /**< dynamic problem statistics */
246  SCIP_TREE* tree, /**< branch and bound tree */
247  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
248  SCIP_Bool solinfeasible, /**< was the solution already found out to be infeasible? */
249  SCIP_Bool objinfeasible, /**< is the solution infeasible anyway due to violating lower objective bound? */
250  SCIP_Bool forced, /**< should enforcement of pseudo solution be forced? */
251  SCIP_RESULT* result /**< pointer to store the result of the callback method */
252  );
253 
254 /** calls feasibility check method of constraint handler */
255 extern
257  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
258  BMS_BLKMEM* blkmem, /**< block memory */
259  SCIP_SET* set, /**< global SCIP settings */
260  SCIP_STAT* stat, /**< dynamic problem statistics */
261  SCIP_SOL* sol, /**< primal CIP solution */
262  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
263  SCIP_Bool checklprows, /**< have current LP rows to be checked? */
264  SCIP_Bool printreason, /**< should the reason for the violation be printed? */
265  SCIP_RESULT* result /**< pointer to store the result of the callback method */
266  );
267 
268 /** calls propagation method of constraint handler */
269 extern
271  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
272  BMS_BLKMEM* blkmem, /**< block memory */
273  SCIP_SET* set, /**< global SCIP settings */
274  SCIP_STAT* stat, /**< dynamic problem statistics */
275  int depth, /**< depth of current node; -1 if preprocessing domain propagation */
276  SCIP_Bool fullpropagation, /**< should all constraints be propagated (or only new ones)? */
277  SCIP_Bool execdelayed, /**< execute propagation method even if it is marked to be delayed */
278  SCIP_Bool instrongbranching, /**< are we currently doing strong branching? */
279  SCIP_PROPTIMING proptiming, /**< current point in the node solving process */
280  SCIP_RESULT* result /**< pointer to store the result of the callback method */
281  );
282 
283 /** calls presolving method of constraint handler */
284 extern
286  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
287  BMS_BLKMEM* blkmem, /**< block memory */
288  SCIP_SET* set, /**< global SCIP settings */
289  SCIP_STAT* stat, /**< dynamic problem statistics */
290  SCIP_Bool execdelayed, /**< execute presolving method even if it is marked to be delayed */
291  int nrounds, /**< number of presolving rounds already done */
292  int* nfixedvars, /**< pointer to total number of variables fixed of all presolvers */
293  int* naggrvars, /**< pointer to total number of variables aggregated of all presolvers */
294  int* nchgvartypes, /**< pointer to total number of variable type changes of all presolvers */
295  int* nchgbds, /**< pointer to total number of variable bounds tightened of all presolvers */
296  int* naddholes, /**< pointer to total number of domain holes added of all presolvers */
297  int* ndelconss, /**< pointer to total number of deleted constraints of all presolvers */
298  int* naddconss, /**< pointer to total number of added constraints of all presolvers */
299  int* nupgdconss, /**< pointer to total number of upgraded constraints of all presolvers */
300  int* nchgcoefs, /**< pointer to total number of changed coefficients of all presolvers */
301  int* nchgsides, /**< pointer to total number of changed left/right hand sides of all presolvers */
302  SCIP_RESULT* result /**< pointer to store the result of the callback method */
303  );
304 
305 /** enables or disables all clocks of \p conshdlr, depending on the value of the flag */
306 extern
308  SCIP_CONSHDLR* conshdlr, /**< the constraint handler for which all clocks should be enabled or disabled */
309  SCIP_Bool enable /**< should the clocks of the constraint handler be enabled? */
310  );
311 
312 /** calls variable deletion method of constraint handler */
313 extern
315  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
316  BMS_BLKMEM* blkmem, /**< block memory */
317  SCIP_SET* set, /**< global SCIP settings */
318  SCIP_STAT* stat /**< dynamic problem statistics */
319  );
320 
321 
322 /** locks rounding of variables involved in the given constraint constraint handler that doesn't need constraints */
324  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
325  SCIP_SET* set /**< global SCIP settings */
326  );
327 
328 /** unlocks rounding of variables involved in the given constraint constraint handler that doesn't need constraints */
329 extern
331  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
332  SCIP_SET* set /**< global SCIP settings */
333  );
334 
335 /**
336  * callback setter methods of constraint handlers
337  */
338 
339 /** sets copy method of both the constraint handler and each associated constraint */
340 extern
342  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
343  SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
344  SCIP_DECL_CONSCOPY ((*conscopy)) /**< constraint copying method */
345  );
346 
347 /** sets destructor method of constraint handler */
348 extern
350  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
351  SCIP_DECL_CONSFREE ((*consfree)) /**< destructor of constraint handler */
352  );
353 
354 /** sets initialization method of constraint handler */
355 extern
357  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
358  SCIP_DECL_CONSINIT ((*consinit)) /**< initialize constraint handler */
359  );
360 
361 /** sets deinitialization method of constraint handler */
362 extern
364  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
365  SCIP_DECL_CONSEXIT ((*consexit)) /**< deinitialize constraint handler */
366  );
367 
368 /** sets solving process initialization method of constraint handler */
369 extern
371  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
372  SCIP_DECL_CONSINITSOL((*consinitsol)) /**< solving process initialization method of constraint handler */
373  );
374 
375 /** sets solving process deinitialization method of constraint handler */
376 extern
378  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
379  SCIP_DECL_CONSEXITSOL ((*consexitsol)) /**< solving process deinitialization method of constraint handler */
380  );
381 
382 /** sets preprocessing initialization method of constraint handler */
383 extern
385  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
386  SCIP_DECL_CONSINITPRE((*consinitpre)) /**< preprocessing initialization method of constraint handler */
387  );
388 
389 /** sets preprocessing deinitialization method of constraint handler */
390 extern
392  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
393  SCIP_DECL_CONSEXITPRE((*consexitpre)) /**< preprocessing deinitialization method of constraint handler */
394  );
395 
396 /** sets presolving method of constraint handler */
397 extern
399  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
400  SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method of constraint handler */
401  int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
402  SCIP_Bool delaypresol /**< should presolving method be delayed, if other presolvers found reductions? */
403  );
404 
405 /** sets method of constraint handler to free specific constraint data */
406 extern
408  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
409  SCIP_DECL_CONSDELETE ((*consdelete)) /**< free specific constraint data */
410  );
411 
412 /** sets method of constraint handler to transform constraint data into data belonging to the transformed problem */
413 extern
415  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
416  SCIP_DECL_CONSTRANS ((*constrans)) /**< transform constraint data into data belonging to the transformed problem */
417  );
418 
419 /** sets method of constraint handler to initialize LP with relaxations of "initial" constraints */
420 extern
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 */
427 extern
429  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
430  SCIP_DECL_CONSRESPROP ((*consresprop)) /**< propagation conflict resolving method */
431  );
432 
433 /** sets activation notification method of constraint handler */
434 extern
436  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
437  SCIP_DECL_CONSACTIVE ((*consactive)) /**< activation notification method */
438  );
439 
440 /** sets deactivation notification method of constraint handler */
441 extern
443  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
444  SCIP_DECL_CONSDEACTIVE((*consdeactive)) /**< deactivation notification method */
445  );
446 
447 /** sets enabling notification method of constraint handler */
448 extern
450  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
451  SCIP_DECL_CONSENABLE ((*consenable)) /**< enabling notification method */
452  );
453 
454 /** sets disabling notification method of constraint handler */
455 extern
457  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
458  SCIP_DECL_CONSDISABLE ((*consdisable)) /**< disabling notification method */
459  );
460 
461 /** sets variable deletion method of constraint handler */
462 extern
464  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
465  SCIP_DECL_CONSDELVARS ((*consdelvars)) /**< variable deletion method */
466  );
467 
468 /** sets constraint display method of constraint handler */
469 extern
471  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
472  SCIP_DECL_CONSPRINT ((*consprint)) /**< constraint display method */
473  );
474 
475 /** sets constraint parsing method of constraint handler */
476 extern
478  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
479  SCIP_DECL_CONSPARSE ((*consparse)) /**< constraint parsing method */
480  );
481 
482 /** sets constraint variable getter method of constraint handler */
483 extern
485  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
486  SCIP_DECL_CONSGETVARS ((*consgetvars)) /**< constraint variable getter method */
487  );
488 
489 /** sets constraint variable number getter method of constraint handler */
490 extern
492  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
493  SCIP_DECL_CONSGETNVARS((*consgetnvars)) /**< constraint variable number getter method */
494  );
495 
496 /*
497  * Constraint set change methods
498  */
499 
500 /** frees constraint set change data and releases all included constraints */
501 extern
503  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change */
504  BMS_BLKMEM* blkmem, /**< block memory */
505  SCIP_SET* set /**< global SCIP settings */
506  );
507 
508 /** adds constraint addition to constraint set changes, and captures constraint; activates constraint if the
509  * constraint set change data is currently active
510  */
511 extern
513  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change data structure */
514  BMS_BLKMEM* blkmem, /**< block memory */
515  SCIP_SET* set, /**< global SCIP settings */
516  SCIP_STAT* stat, /**< dynamic problem statistics */
517  SCIP_CONS* cons, /**< added constraint */
518  int depth, /**< depth of constraint set change's node */
519  SCIP_Bool focusnode, /**< does the constraint set change belong to the focus node? */
520  SCIP_Bool active /**< is the constraint set change currently active? */
521  );
522 
523 /** adds constraint disabling to constraint set changes, and captures constraint */
524 extern
526  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change data structure */
527  BMS_BLKMEM* blkmem, /**< block memory */
528  SCIP_SET* set, /**< global SCIP settings */
529  SCIP_CONS* cons /**< disabled constraint */
530  );
531 
532 /** applies constraint set change */
533 extern
535  SCIP_CONSSETCHG* conssetchg, /**< constraint set change to apply */
536  BMS_BLKMEM* blkmem, /**< block memory */
537  SCIP_SET* set, /**< global SCIP settings */
538  SCIP_STAT* stat, /**< dynamic problem statistics */
539  int depth, /**< depth of constraint set change's node */
540  SCIP_Bool focusnode /**< does the constraint set change belong to the focus node? */
541  );
542 
543 /** undoes constraint set change */
544 extern
546  SCIP_CONSSETCHG* conssetchg, /**< constraint set change to undo */
547  BMS_BLKMEM* blkmem, /**< block memory */
548  SCIP_SET* set, /**< global SCIP settings */
549  SCIP_STAT* stat /**< dynamic problem statistics */
550  );
551 
552 /** applies constraint set change to the global problem and deletes the constraint set change data */
553 extern
555  SCIP_CONSSETCHG** conssetchg, /**< pointer to constraint set change data */
556  BMS_BLKMEM* blkmem, /**< block memory */
557  SCIP_SET* set, /**< global SCIP settings */
558  SCIP_STAT* stat, /**< dynamic problem statistics */
559  SCIP_PROB* prob /**< problem data */
560  );
561 
562 /** increase count of applied cuts */
563 extern
565  SCIP_CONSHDLR* conshdlr /**< constraint handler */
566  );
567 
568 /** increase count of found cuts */
569 extern
571  SCIP_CONSHDLR* conshdlr /**< constraint handler */
572  );
573 
574 
575 
576 /*
577  * Constraint methods
578  */
579 
580 /** creates and captures a constraint, and inserts it into the conss array of its constraint handler
581  *
582  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution
583  * may be declared feasible even if it violates this particular constraint.
584  * This constellation should only be used, if no LP or pseudo solution can violate the constraint -- e.g. if a
585  * local constraint is redundant due to the variable's local bounds.
586  */
587 extern
589  SCIP_CONS** cons, /**< pointer to constraint */
590  BMS_BLKMEM* blkmem, /**< block memory */
591  SCIP_SET* set, /**< global SCIP settings */
592  const char* name, /**< name of constraint */
593  SCIP_CONSHDLR* conshdlr, /**< constraint handler for this constraint */
594  SCIP_CONSDATA* consdata, /**< data for this specific constraint */
595  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
596  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
597  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
598  * Usually set to TRUE. */
599  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
600  * TRUE for model constraints, FALSE for additional, redundant constraints. */
601  SCIP_Bool check, /**< should the constraint be checked for feasibility?
602  * TRUE for model constraints, FALSE for additional, redundant constraints. */
603  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
604  * Usually set to TRUE. */
605  SCIP_Bool local, /**< is constraint only valid locally?
606  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
607  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
608  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
609  * adds coefficients to this constraint. */
610  SCIP_Bool dynamic, /**< is constraint subject to aging?
611  * Usually set to FALSE. Set to TRUE for own cuts which
612  * are separated as constraints. */
613  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
614  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
615  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
616  * if it may be moved to a more global node?
617  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
618  SCIP_Bool original, /**< is constraint belonging to the original problem? */
619  SCIP_Bool deleteconsdata /**< has the constraint data to be deleted if constraint is freed? */
620  );
621 
622 /** copies source constraint of source SCIP into the target constraint for the target SCIP, using the variable map for
623  * mapping the variables of the source SCIP to the variables of the target SCIP; if the copying process was successful
624  * a constraint is creates and captures;
625  *
626  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution
627  * may be declared feasible even if it violates this particular constraint.
628  * This constellation should only be used, if no LP or pseudo solution can violate the constraint -- e.g. if a
629  * local constraint is redundant due to the variable's local bounds.
630  */
631 extern
633  SCIP_CONS** cons, /**< pointer to store the created target constraint */
634  SCIP_SET* set, /**< global SCIP settings of the target SCIP */
635  const char* name, /**< name of constraint, or NULL if the name of the source constraint should be used */
636  SCIP* sourcescip, /**< source SCIP data structure */
637  SCIP_CONSHDLR* sourceconshdlr, /**< source constraint handler for this constraint */
638  SCIP_CONS* sourcecons, /**< source constraint of the source SCIP */
639  SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to corresponding
640  * variables of the target SCIP */
641  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
642  * target constraints, must not be NULL! */
643  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? */
644  SCIP_Bool separate, /**< should the constraint be separated during LP processing? */
645  SCIP_Bool enforce, /**< should the constraint be enforced during node processing? */
646  SCIP_Bool check, /**< should the constraint be checked for feasibility? */
647  SCIP_Bool propagate, /**< should the constraint be propagated during node processing? */
648  SCIP_Bool local, /**< is constraint only valid locally? */
649  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)? */
650  SCIP_Bool dynamic, /**< is constraint subject to aging? */
651  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup? */
652  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
653  * if it may be moved to a more global node? */
654  SCIP_Bool global, /**< create a global or a local copy? */
655  SCIP_Bool* success /**< pointer to store whether the copying was successful or not */
656  );
657 
658 /** parses constraint information (in cip format) out of a string; if the parsing process was successful a constraint is
659  * created, captured, and inserted into the conss array of its constraint handler.
660  *
661  * @warning If a constraint is marked to be checked for feasibility but not to be enforced, an LP or pseudo solution
662  * may be declared feasible even if it violates this particular constraint.
663  * This constellation should only be used, if no LP or pseudo solution can violate the constraint -- e.g. if a
664  * local constraint is redundant due to the variable's local bounds.
665  */
666 extern
668  SCIP_CONS** cons, /**< pointer to constraint */
669  SCIP_SET* set, /**< global SCIP settings */
670  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler of target SCIP */
671  const char* str, /**< name of constraint */
672  SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
673  * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
674  SCIP_Bool separate, /**< should the constraint be separated during LP processing?
675  * Usually set to TRUE. */
676  SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
677  * TRUE for model constraints, FALSE for additional, redundant constraints. */
678  SCIP_Bool check, /**< should the constraint be checked for feasibility?
679  * TRUE for model constraints, FALSE for additional, redundant constraints. */
680  SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
681  * Usually set to TRUE. */
682  SCIP_Bool local, /**< is constraint only valid locally?
683  * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
684  SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
685  * Usually set to FALSE. In column generation applications, set to TRUE if pricing
686  * adds coefficients to this constraint. */
687  SCIP_Bool dynamic, /**< is constraint subject to aging?
688  * Usually set to FALSE. Set to TRUE for own cuts which
689  * are separated as constraints. */
690  SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
691  * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
692  SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
693  * if it may be moved to a more global node?
694  * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
695  SCIP_Bool* success /**< pointer store if the paring process was successful */
696  );
697 
698 /** change name of given constraint */
699 extern
701  SCIP_CONS* cons, /**< problem constraint */
702  BMS_BLKMEM* blkmem, /**< block memory buffer */
703  const char* name /**< new name of constraint */
704  );
705 
706 /** frees a constraint and removes it from the conss array of its constraint handler */
707 extern
709  SCIP_CONS** cons, /**< constraint to free */
710  BMS_BLKMEM* blkmem, /**< block memory buffer */
711  SCIP_SET* set /**< global SCIP settings */
712  );
713 
714 /** increases usage counter of constraint */
715 extern
716 void SCIPconsCapture(
717  SCIP_CONS* cons /**< constraint */
718  );
719 
720 /** decreases usage counter of constraint, and frees memory if necessary */
721 extern
723  SCIP_CONS** cons, /**< pointer to constraint */
724  BMS_BLKMEM* blkmem, /**< block memory */
725  SCIP_SET* set /**< global SCIP settings */
726  );
727 
728 
729 /** outputs constraint information to file stream */
730 extern
732  SCIP_CONS* cons, /**< constraint to print */
733  SCIP_SET* set, /**< global SCIP settings */
734  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
735  FILE* file /**< output file (or NULL for standard output) */
736  );
737 
738 /** checks single constraint for feasibility of the given solution */
739 extern
741  SCIP_CONS* cons, /**< constraint to check */
742  SCIP_SET* set, /**< global SCIP settings */
743  SCIP_SOL* sol, /**< primal CIP solution */
744  SCIP_Bool checkintegrality, /**< has integrality to be checked? */
745  SCIP_Bool checklprows, /**< have current LP rows to be checked? */
746  SCIP_Bool printreason, /**< should the reason for the violation be printed? */
747  SCIP_RESULT* result /**< pointer to store the result of the callback method */
748  );
749 
750 /** enforces single constraint for a given pseudo solution */
751 extern
753  SCIP_CONS* cons, /**< constraint to enforce */
754  SCIP_SET* set, /**< global SCIP settings */
755  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
756  SCIP_Bool objinfeasible, /**< is the solution infeasible anyway due to violating lower objective bound? */
757  SCIP_RESULT* result /**< pointer to store the result of the callback method */
758  );
759 
760 /** enforces single constraint for a given LP solution */
761 extern
763  SCIP_CONS* cons, /**< constraint to enforce */
764  SCIP_SET* set, /**< global SCIP settings */
765  SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
766  SCIP_RESULT* result /**< pointer to store the result of the callback method */
767  );
768 
769 /** calls LP initialization method for single constraint */
770 extern
772  SCIP_CONS* cons, /**< constraint to initialize */
773  SCIP_SET* set /**< global SCIP settings */
774  );
775 
776 /** calls separation method of single constraint for LP solution */
777 extern
779  SCIP_CONS* cons, /**< constraint to separate */
780  SCIP_SET* set, /**< global SCIP settings */
781  SCIP_RESULT* result /**< pointer to store the result of the separation call */
782  );
783 
784 /** calls separation method of single constraint for given primal solution */
785 extern
787  SCIP_CONS* cons, /**< constraint to separate */
788  SCIP_SET* set, /**< global SCIP settings */
789  SCIP_SOL* sol, /**< primal solution that should be separated */
790  SCIP_RESULT* result /**< pointer to store the result of the separation call */
791  );
792 
793 /** calls domain propagation method of single constraint */
794 extern
796  SCIP_CONS* cons, /**< constraint to propagate */
797  SCIP_SET* set, /**< global SCIP settings */
798  SCIP_PROPTIMING proptiming, /**< current point in the node solving loop */
799  SCIP_RESULT* result /**< pointer to store the result of the callback method */
800  );
801 
802 /** resolves propagation conflict of single constraint */
803 extern
805  SCIP_CONS* cons, /**< constraint to resolve conflict for */
806  SCIP_SET* set, /**< global SCIP settings */
807  SCIP_VAR* infervar, /**< the conflict variable whose bound change has to be resolved */
808  int inferinfo, /**< the user information passed to the corresponding SCIPinferVarLbCons() or SCIPinferVarUbCons() call */
809  SCIP_BOUNDTYPE boundtype, /**< the type of the changed bound (lower or upper bound) */
810  SCIP_BDCHGIDX* bdchgidx, /**< the index of the bound change, representing the point of time where the change took place */
811  SCIP_Real relaxedbd, /**< the relaxed bound which is sufficient to be explained */
812  SCIP_RESULT* result /**< pointer to store the result of the callback method */
813  );
814 
815 /** presolves single constraint */
816 extern
818  SCIP_CONS* cons, /**< constraint to presolve */
819  SCIP_SET* set, /**< global SCIP settings */
820  int nrounds, /**< number of presolving rounds already done */
821  int nnewfixedvars, /**< number of variables fixed since the last call to the presolving method */
822  int nnewaggrvars, /**< number of variables aggregated since the last call to the presolving method */
823  int nnewchgvartypes, /**< number of variable type changes since the last call to the presolving method */
824  int nnewchgbds, /**< number of variable bounds tightened since the last call to the presolving method */
825  int nnewholes, /**< number of domain holes added since the last call to the presolving method */
826  int nnewdelconss, /**< number of deleted constraints since the last call to the presolving method */
827  int nnewaddconss, /**< number of added constraints since the last call to the presolving method */
828  int nnewupgdconss, /**< number of upgraded constraints since the last call to the presolving method */
829  int nnewchgcoefs, /**< number of changed coefficients since the last call to the presolving method */
830  int nnewchgsides, /**< number of changed left or right hand sides since the last call to the presolving method */
831  int* nfixedvars, /**< pointer to count total number of variables fixed of all presolvers */
832  int* naggrvars, /**< pointer to count total number of variables aggregated of all presolvers */
833  int* nchgvartypes, /**< pointer to count total number of variable type changes of all presolvers */
834  int* nchgbds, /**< pointer to count total number of variable bounds tightened of all presolvers */
835  int* naddholes, /**< pointer to count total number of domain holes added of all presolvers */
836  int* ndelconss, /**< pointer to count total number of deleted constraints of all presolvers */
837  int* naddconss, /**< pointer to count total number of added constraints of all presolvers */
838  int* nupgdconss, /**< pointer to count total number of upgraded constraints of all presolvers */
839  int* nchgcoefs, /**< pointer to count total number of changed coefficients of all presolvers */
840  int* nchgsides, /**< pointer to count total number of changed left/right hand sides of all presolvers */
841  SCIP_RESULT* result /**< pointer to store the result of the callback method */
842  );
843 
844 /** calls constraint activation notification method of single constraint */
845 extern
847  SCIP_CONS* cons, /**< constraint to notify */
848  SCIP_SET* set /**< global SCIP settings */
849  );
850 
851 /** calls constraint deactivation notification method of single constraint */
852 extern
854  SCIP_CONS* cons, /**< constraint to notify */
855  SCIP_SET* set /**< global SCIP settings */
856  );
857 
858 /** method to collect the variables of a constraint
859  *
860  * If the number of variables is greater than the available slots in the variable array, nothing happens except that
861  * the success point is set to FALSE. With the method SCIPgetConsNVars() it is possible to get the number of variables
862  * a constraint has in its scope.
863  *
864  * @note The success pointer indicates if all variables were copied into the vars arrray.
865  *
866  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
867  * set to FALSE.
868  */
869 extern
871  SCIP_CONS* cons, /**< constraint to print */
872  SCIP_SET* set, /**< global SCIP settings */
873  SCIP_VAR** vars, /**< array to store the involved variable of the constraint */
874  int varssize, /**< available slots in vars array which is needed to check if the array is large enough */
875  SCIP_Bool* success /**< pointer to store whether the variables are successfully copied */
876  );
877 
878 /** methed to collect the number of variables of a constraint
879  *
880  * @note The success pointer indicates if the contraint handler was able to return the number of variables
881  *
882  * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
883  * set to FALSE
884  */
885 extern
887  SCIP_CONS* cons, /**< constraint to print */
888  SCIP_SET* set, /**< global SCIP settings */
889  int* nvars, /**< pointer to store the number of variables */
890  SCIP_Bool* success /**< pointer to store whether the constraint successfully returned the number of variables */
891  );
892 
893 /** globally removes constraint from all subproblems; removes constraint from the constraint set change data of the
894  * node, where it was created, or from the problem, if it was a problem constraint
895  */
896 extern
898  SCIP_CONS* cons, /**< constraint to delete */
899  BMS_BLKMEM* blkmem, /**< block memory */
900  SCIP_SET* set, /**< global SCIP settings */
901  SCIP_STAT* stat, /**< dynamic problem statistics */
902  SCIP_PROB* prob /**< problem data */
903  );
904 
905 /** gets and captures transformed constraint of a given constraint; if the constraint is not yet transformed,
906  * a new transformed constraint for this constraint is created
907  */
908 extern
910  SCIP_CONS* origcons, /**< original constraint */
911  BMS_BLKMEM* blkmem, /**< block memory buffer */
912  SCIP_SET* set, /**< global SCIP settings */
913  SCIP_CONS** transcons /**< pointer to store the transformed constraint */
914  );
915 
916 /** sets the initial flag of the given constraint */
917 extern
919  SCIP_CONS* cons, /**< constraint */
920  SCIP_SET* set, /**< global SCIP settings */
921  SCIP_STAT* stat, /**< dynamic problem statistics */
922  SCIP_Bool initial /**< new value */
923  );
924 
925 /** sets the separate flag of the given constraint */
926 extern
928  SCIP_CONS* cons, /**< constraint */
929  SCIP_SET* set, /**< global SCIP settings */
930  SCIP_Bool separate /**< new value */
931  );
932 
933 /** sets the enforce flag of the given constraint */
934 extern
936  SCIP_CONS* cons, /**< constraint */
937  SCIP_SET* set, /**< global SCIP settings */
938  SCIP_Bool enforce /**< new value */
939  );
940 
941 /** sets the check flag of the given constraint */
942 extern
944  SCIP_CONS* cons, /**< constraint */
945  SCIP_SET* set, /**< global SCIP settings */
946  SCIP_Bool check /**< new value */
947  );
948 
949 /** sets the propagate flag of the given constraint */
950 extern
952  SCIP_CONS* cons, /**< constraint */
953  SCIP_SET* set, /**< global SCIP settings */
954  SCIP_Bool propagate /**< new value */
955  );
956 
957 /** sets the local flag of the given constraint */
958 extern
959 void SCIPconsSetLocal(
960  SCIP_CONS* cons, /**< constraint */
961  SCIP_Bool local /**< new value */
962  );
963 
964 /** sets the modifiable flag of the given constraint */
965 extern
967  SCIP_CONS* cons, /**< constraint */
968  SCIP_Bool modifiable /**< new value */
969  );
970 
971 /** sets the dynamic flag of the given constraint */
972 extern
973 void SCIPconsSetDynamic(
974  SCIP_CONS* cons, /**< constraint */
975  SCIP_Bool dynamic /**< new value */
976  );
977 
978 /** sets the removable flag of the given constraint */
979 extern
981  SCIP_CONS* cons, /**< constraint */
982  SCIP_Bool removable /**< new value */
983  );
984 
985 /** sets the stickingatnode flag of the given constraint */
986 extern
988  SCIP_CONS* cons, /**< constraint */
989  SCIP_Bool stickingatnode /**< new value */
990  );
991 
992 /** gives the constraint a new name; ATTENTION: to old pointer is over written that might
993  * result in a memory leakage */
994 extern
996  SCIP_CONS* cons, /**< constraint */
997  const char* name /**< new name of constraint */
998  );
999 
1000 /** gets associated transformed constraint of an original constraint, or NULL if no associated transformed constraint
1001  * exists
1002  */
1003 extern
1005  SCIP_CONS* cons /**< constraint */
1006  );
1007 
1008 /** activates constraint or marks constraint to be activated in next update */
1009 extern
1011  SCIP_CONS* cons, /**< constraint */
1012  SCIP_SET* set, /**< global SCIP settings */
1013  SCIP_STAT* stat, /**< dynamic problem statistics */
1014  int depth, /**< depth in the tree where the constraint activation takes place, or -1 for global problem */
1015  SCIP_Bool focusnode /**< does the constraint activation take place at the focus node? */
1016  );
1017 
1018 /** deactivates constraint or marks constraint to be deactivated in next update */
1019 extern
1021  SCIP_CONS* cons, /**< constraint */
1022  SCIP_SET* set, /**< global SCIP settings */
1023  SCIP_STAT* stat /**< dynamic problem statistics */
1024  );
1025 
1026 /** enables constraint's separation, enforcing, and propagation capabilities or marks them to be enabled in next update */
1027 extern
1029  SCIP_CONS* cons, /**< constraint */
1030  SCIP_SET* set, /**< global SCIP settings */
1031  SCIP_STAT* stat /**< dynamic problem statistics */
1032  );
1033 
1034 /** disables constraint's separation, enforcing, and propagation capabilities or marks them to be disabled in next update */
1035 extern
1037  SCIP_CONS* cons, /**< constraint */
1038  SCIP_SET* set, /**< global SCIP settings */
1039  SCIP_STAT* stat /**< dynamic problem statistics */
1040  );
1041 
1042 /** enables constraint's separation capabilities or marks them to be enabled in next update */
1043 extern
1045  SCIP_CONS* cons, /**< constraint */
1046  SCIP_SET* set /**< global SCIP settings */
1047  );
1048 
1049 /** disables constraint's separation capabilities or marks them to be disabled in next update */
1050 extern
1052  SCIP_CONS* cons, /**< constraint */
1053  SCIP_SET* set /**< global SCIP settings */
1054  );
1055 
1056 /** enables constraint's propagation capabilities or marks them to be enabled in next update */
1057 extern
1059  SCIP_CONS* cons, /**< constraint */
1060  SCIP_SET* set /**< global SCIP settings */
1061  );
1062 
1063 /** disables constraint's propagation capabilities or marks them to be disabled in next update */
1064 extern
1066  SCIP_CONS* cons, /**< constraint */
1067  SCIP_SET* set /**< global SCIP settings */
1068  );
1069 
1070 /** marks the constraint to be propagated (update might be delayed) */
1071 extern
1073  SCIP_CONS* cons, /**< constraint */
1074  SCIP_SET* set /**< global SCIP settings */
1075  );
1076 
1077 /** unmarks the constraint to be propagated (update might be delayed) */
1078 extern
1080  SCIP_CONS* cons, /**< constraint */
1081  SCIP_SET* set /**< global SCIP settings */
1082  );
1083 
1084 /** adds given value to age of constraint, but age can never become negative;
1085  * should be called
1086  * - in constraint separation, if no cut was found for this constraint,
1087  * - in constraint enforcing, if constraint was feasible, and
1088  * - in constraint propagation, if no domain reduction was deduced;
1089  * if it's age exceeds the constraint age limit, makes constraint obsolete or marks constraint to be made obsolete
1090  * in next update
1091  */
1092 extern
1094  SCIP_CONS* cons, /**< constraint */
1095  BMS_BLKMEM* blkmem, /**< block memory */
1096  SCIP_SET* set, /**< global SCIP settings */
1097  SCIP_STAT* stat, /**< dynamic problem statistics */
1098  SCIP_PROB* prob, /**< problem data */
1099  SCIP_Real deltaage /**< value to add to the constraint's age */
1100  );
1101 
1102 /** increases age of constraint by 1.0;
1103  * should be called
1104  * - in constraint separation, if no cut was found for this constraint,
1105  * - in constraint enforcing, if constraint was feasible, and
1106  * - in constraint propagation, if no domain reduction was deduced;
1107  * if it's age exceeds the constraint age limit, makes constraint obsolete or marks constraint to be made obsolete
1108  * in next update
1109  */
1110 extern
1112  SCIP_CONS* cons, /**< constraint */
1113  BMS_BLKMEM* blkmem, /**< block memory */
1114  SCIP_SET* set, /**< global SCIP settings */
1115  SCIP_STAT* stat, /**< dynamic problem statistics */
1116  SCIP_PROB* prob /**< problem data */
1117  );
1118 
1119 /** resets age of constraint to zero;
1120  * should be called
1121  * - in constraint separation, if a cut was found for this constraint,
1122  * - in constraint enforcing, if the constraint was violated, and
1123  * - in constraint propagation, if a domain reduction was deduced;
1124  * if it was obsolete, makes constraint useful again or marks constraint to be made useful again in next update
1125  */
1126 extern
1128  SCIP_CONS* cons, /**< constraint */
1129  SCIP_SET* set /**< global SCIP settings */
1130  );
1131 
1132 /** adds an active constraint to the propagation queue(if not already marked for propagation) of corresponding
1133  * constraint handler and marks the constraint to be propagated in the next propagation round
1134  *
1135  * @note if constraint is added to the queue it will be captured
1136  */
1138  SCIP_CONS* cons /**< constraint */
1139  );
1140 
1141 /** returns first constraint from propagation queue(if not empty) of given constraint handler */
1143  SCIP_CONSHDLR* conshdlr /**< constraint handler */
1144  );
1145 
1146 /** removes constraint from propagation queue(if not empty) of given constraint handler and unmarks constraint to be
1147  * propagated in the next propagation round
1148  *
1149  * @note if constraint is removed from the queue it will be released
1150  */
1152  SCIP_CONSHDLR* conshdlr, /**< constraint handler */
1153  BMS_BLKMEM* blkmem, /**< block memory */
1154  SCIP_SET* set /**< global SCIP settings */
1155  );
1156 
1157 /** resolves the given conflicting bound, that was deduced by the given constraint, by putting all "reason" bounds
1158  * leading to the deduction into the conflict queue with calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(),
1159  * SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar();
1160  *
1161  * @note it is sufficient to explain the relaxed bound change
1162  */
1163 extern
1165  SCIP_CONS* cons, /**< constraint that deduced the assignment */
1166  SCIP_SET* set, /**< global SCIP settings */
1167  SCIP_VAR* infervar, /**< variable whose bound was deduced by the constraint */
1168  int inferinfo, /**< user inference information attached to the bound change */
1169  SCIP_BOUNDTYPE inferboundtype, /**< bound that was deduced (lower or upper bound) */
1170  SCIP_BDCHGIDX* bdchgidx, /**< bound change index, representing the point of time where change took place */
1171  SCIP_Real relaxedbd, /**< the relaxed bound */
1172  SCIP_RESULT* result /**< pointer to store the result of the callback method */
1173  );
1174 
1175 /** adds given values to lock status of the constraint and updates the rounding locks of the involved variables */
1176 extern
1178  SCIP_CONS* cons, /**< constraint */
1179  SCIP_SET* set, /**< global SCIP settings */
1180  int nlockspos, /**< increase in number of rounding locks for constraint */
1181  int nlocksneg /**< increase in number of rounding locks for constraint's negation */
1182  );
1183 
1184 
1185 /*
1186  * Hash functions
1187  */
1188 
1189 /** gets the key (i.e. the name) of the given constraint */
1190 extern
1191 SCIP_DECL_HASHGETKEY(SCIPhashGetKeyCons);
1192 
1193 /*
1194  * method for arrays of contraint handlers
1195  */
1196 
1197 /** stores all constraints marked for propagation away when probing is started */
1198 extern
1200  SCIP_SET* set, /**< global SCIP settings */
1201  SCIP_CONSHDLR** conshdlrs, /**< all constraint handlers */
1202  int nconshdlrs /**< number of contraint handlers */
1203  );
1204 
1205 /** reset all constraints marked for propagation when probing was finished */
1206 extern
1208  SCIP_SET* set, /**< global SCIP settings */
1209  BMS_BLKMEM* blkmem, /**< block memory */
1210  SCIP_CONSHDLR** conshdlrs, /**< all constraint handlers */
1211  int nconshdlrs /**< number of contraint handlers */
1212  );
1213 
1214 #ifdef __cplusplus
1215 }
1216 #endif
1217 
1218 #endif
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:51
void SCIPconshdlrSetInitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
Definition: cons.c:4024
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition: type_lp.h:50
void SCIPconshdlrSetInitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
Definition: cons.c:4002
SCIP_RETCODE SCIPconsEnable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:6395
SCIP_RETCODE SCIPconshdlrInitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2587
SCIP_RETCODE SCIPconsFree(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: cons.c:5729
void SCIPconshdlrSetResprop(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
Definition: cons.c:4094
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:2924
SCIP_RETCODE SCIPconshdlrLockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
Definition: cons.c:3843
#define SCIP_DECL_CONSLOCK(x)
Definition: type_cons.h:582
void SCIPconsSetLocal(SCIP_CONS *cons, SCIP_Bool local)
Definition: cons.c:6236
void SCIPconsSetNamePointer(SCIP_CONS *cons, const char *name)
Definition: cons.c:6294
SCIP_RETCODE SCIPconsAddAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real deltaage)
Definition: cons.c:6648
#define SCIP_DECL_CONSDELETE(x)
Definition: type_cons.h:186
SCIP_RETCODE SCIPconssetchgAddDisabledCons(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS *cons)
Definition: cons.c:5030
#define SCIP_DECL_CONSINITPRE(x)
Definition: type_cons.h:113
SCIP_RETCODE SCIPconsEnableSeparation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6462
#define SCIP_DECL_CONSPRESOL(x)
Definition: type_cons.h:470
SCIP_RETCODE SCIPconshdlrPopProp(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: cons.c:6803
#define SCIP_DECL_CONSCHECK(x)
Definition: type_cons.h:390
#define SCIP_DECL_CONSTRANS(x)
Definition: type_cons.h:196
SCIP_RETCODE SCIPconshdlrFree(SCIP_CONSHDLR **conshdlr, SCIP_SET *set)
Definition: cons.c:2239
SCIP_RETCODE SCIPconshdlrsStorePropagationStatus(SCIP_SET *set, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
Definition: cons.c:7412
SCIP_CONS * SCIPconsGetTransformed(SCIP_CONS *cons)
Definition: cons.c:6308
SCIP_RETCODE SCIPconsSetEnforced(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool enforce)
Definition: cons.c:6118
SCIP_RETCODE SCIPconsDeactive(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7343
SCIP_RETCODE SCIPconsEnfolp(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_RESULT *result)
Definition: cons.c:7014
#define SCIP_DECL_CONSRESPROP(x)
Definition: type_cons.h:521
SCIP_RETCODE SCIPconssetchgFree(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: cons.c:4910
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:6318
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:3233
SCIP_RETCODE SCIPconshdlrCopyInclude(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_Bool *valid)
Definition: cons.c:1959
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
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 *success)
Definition: cons.c:5546
#define SCIP_DECL_CONSGETNVARS(x)
Definition: type_cons.h:789
SCIP_RETCODE SCIPconssetchgApply(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool focusnode)
Definition: cons.c:5134
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:6829
type definitions for global SCIP settings
SCIP_RETCODE SCIPconsSepasol(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_RESULT *result)
Definition: cons.c:7122
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:7205
#define SCIP_DECL_CONSEXITSOL(x)
Definition: type_cons.h:173
SCIP_RETCODE SCIPconsAddLocks(SCIP_CONS *cons, SCIP_SET *set, int nlockspos, int nlocksneg)
Definition: cons.c:6889
SCIP_RETCODE SCIPconsUnmarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6610
void SCIPconshdlrSetDeactive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
Definition: cons.c:4116
void SCIPconshdlrSetExitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
Definition: cons.c:4013
type definitions for return codes for SCIP methods
SCIP_RETCODE SCIPconsEnablePropagation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6520
SCIP_RETCODE SCIPconsPushProp(SCIP_CONS *cons)
Definition: cons.c:6766
SCIP_RETCODE SCIPconsIncAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob)
Definition: cons.c:6706
SCIP_RETCODE SCIPconsTransform(SCIP_CONS *origcons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS **transcons)
Definition: cons.c:5999
SCIP_RETCODE SCIPconshdlrExit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2394
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:5602
#define SCIP_DECL_CONSINITLP(x)
Definition: type_cons.h:209
type definitions for problem statistics
SCIP_RETCODE SCIPconsInitlp(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7057
void SCIPconshdlrSetExit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXIT((*consexit)))
Definition: cons.c:3991
type definitions for LP management
SCIP_RETCODE SCIPconsDisable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:6428
#define SCIP_DECL_CONSINITSOL(x)
Definition: type_cons.h:158
void SCIPconshdlrSetActive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
Definition: cons.c:4105
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)
Definition: cons.c:2664
#define SCIP_DECL_CONSPRINT(x)
Definition: type_cons.h:673
#define SCIP_DECL_CONSDELVARS(x)
Definition: type_cons.h:659
SCIP_RETCODE SCIPconshdlrsResetPropagationStatus(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_CONSHDLR **conshdlrs, int nconshdlrs)
Definition: cons.c:7453
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:3494
#define SCIP_DECL_CONSPARSE(x)
Definition: type_cons.h:749
SCIP_RETCODE SCIPconsSetPropagated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool propagate)
Definition: cons.c:6201
SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: cons.c:5796
void SCIPconshdlrSetDelete(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
Definition: cons.c:4061
#define SCIP_DECL_CONSDEACTIVE(x)
Definition: type_cons.h:612
void SCIPconshdlrSetCopy(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
Definition: cons.c:3954
void SCIPconshdlrSetParse(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
Definition: cons.c:4171
SCIP_RETCODE SCIPconshdlrInit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2284
SCIP_DECL_HASHGETKEY(SCIPhashGetKeyCons)
Definition: cons.c:7373
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:2767
#define SCIP_DECL_CONSDISABLE(x)
Definition: type_cons.h:642
type definitions for problem variables
#define SCIP_DECL_CONSENABLE(x)
Definition: type_cons.h:627
type definitions for storing separated cuts
#define SCIP_DECL_CONSENFOLP(x)
Definition: type_cons.h:312
struct SCIP_ConsData SCIP_CONSDATA
Definition: type_cons.h:49
SCIP_RETCODE SCIPconsResetAge(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6726
#define SCIP_DECL_CONSSEPALP(x)
Definition: type_cons.h:238
#define SCIP_DECL_CONSGETVARS(x)
Definition: type_cons.h:771
#define SCIP_DECL_CONSEXIT(x)
Definition: type_cons.h:93
void SCIPconshdlrSetTrans(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
Definition: cons.c:4072
SCIP_RETCODE SCIPconsSetInitial(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool initial)
Definition: cons.c:6049
#define SCIP_Bool
Definition: def.h:49
SCIP_RETCODE SCIPconshdlrExitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2541
SCIP_RETCODE SCIPconsDisableSeparation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6492
SCIP_RETCODE SCIPconsActive(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:7319
SCIP_RETCODE SCIPconssetchgMakeGlobal(SCIP_CONSSETCHG **conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob)
Definition: cons.c:5307
SCIP_RETCODE SCIPconsDeactivate(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:6360
void SCIPconsCapture(SCIP_CONS *cons)
Definition: cons.c:5784
void SCIPconshdlrEnableOrDisableClocks(SCIP_CONSHDLR *conshdlr, SCIP_Bool enable)
Definition: cons.c:4293
#define SCIP_DECL_CONSEXITPRE(x)
Definition: type_cons.h:137
SCIP_RETCODE SCIPconshdlrPresolve(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool execdelayed, 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:3661
SCIP_RETCODE SCIPconssetchgUndo(SCIP_CONSSETCHG *conssetchg, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:5221
void SCIPconshdlrSetPresol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_Bool delaypresol)
Definition: cons.c:4046
SCIP_RETCODE SCIPconshdlrInitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2442
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:4984
void SCIPconshdlrSetDelvars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELVARS((*consdelvars)))
Definition: cons.c:4149
SCIP_RETCODE SCIPconsPrint(SCIP_CONS *cons, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: cons.c:5836
void SCIPconshdlrSetExitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITPRE((*consexitpre)))
Definition: cons.c:4035
type definitions for branch and bound tree
SCIP_RETCODE SCIPconsDisablePropagation(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6550
SCIP_RETCODE SCIPconshdlrUnlockVars(SCIP_CONSHDLR *conshdlr, SCIP_SET *set)
Definition: cons.c:3858
#define SCIP_DECL_CONSENFOPS(x)
Definition: type_cons.h:355
type definitions for storing primal CIP solutions
type definitions for storing and manipulating the main problem
void SCIPconshdlrSetEnable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
Definition: cons.c:4127
void SCIPconshdlrSetGetVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
Definition: cons.c:4182
SCIP_RETCODE SCIPconsProp(SCIP_CONS *cons, SCIP_SET *set, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
Definition: cons.c:7165
SCIP_RETCODE SCIPconshdlrDelVars(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:3812
SCIP_RETCODE SCIPconsSepalp(SCIP_CONS *cons, SCIP_SET *set, SCIP_RESULT *result)
Definition: cons.c:7081
void SCIPconsSetModifiable(SCIP_CONS *cons, SCIP_Bool modifiable)
Definition: cons.c:6249
type definitions for block memory pools and memory buffers
SCIP_RETCODE SCIPconsMarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
Definition: cons.c:6580
SCIP_RETCODE SCIPconsPresol(SCIP_CONS *cons, SCIP_SET *set, int nrounds, 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:7247
unsigned int SCIP_PROPTIMING
Definition: type_timing.h:48
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:3053
SCIP_RETCODE SCIPconsGetNVars(SCIP_CONS *cons, SCIP_SET *set, int *nvars, SCIP_Bool *success)
Definition: cons.c:5911
SCIP_RETCODE SCIPconsChgName(SCIP_CONS *cons, BMS_BLKMEM *blkmem, const char *name)
Definition: cons.c:5709
SCIP_RETCODE SCIPconsSetChecked(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool check)
Definition: cons.c:6153
#define SCIP_DECL_CONSFREE(x)
Definition: type_cons.h:73
SCIP_RETCODE SCIPconsEnfops(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_RESULT *result)
Definition: cons.c:6970
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:6933
void SCIPconshdlrSetPrint(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
Definition: cons.c:4160
void SCIPconshdlrIncNCutsFound(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:4502
#define SCIP_DECL_CONSINIT(x)
Definition: type_cons.h:83
#define SCIP_Real
Definition: def.h:123
SCIP_CONS * SCIPconshdlrFrontProp(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:6788
result codes for SCIP callback methods
void SCIPconshdlrSetInitlp(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
Definition: cons.c:4083
void SCIPconsSetRemovable(SCIP_CONS *cons, SCIP_Bool removable)
Definition: cons.c:6271
#define SCIP_DECL_CONSSEPASOL(x)
Definition: type_cons.h:270
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:5402
SCIP_RETCODE SCIPconsDelete(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob)
Definition: cons.c:5943
#define SCIP_DECL_CONSPROP(x)
Definition: type_cons.h:416
#define SCIP_DECL_CONSACTIVE(x)
Definition: type_cons.h:597
void SCIPconshdlrSetInit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINIT((*consinit)))
Definition: cons.c:3980
void SCIPconsSetDynamic(SCIP_CONS *cons, SCIP_Bool dynamic)
Definition: cons.c:6260
void SCIPconsSetStickingAtNode(SCIP_CONS *cons, SCIP_Bool stickingatnode)
Definition: cons.c:6282
void SCIPconshdlrIncNAppliedCuts(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:4492
#define SCIP_DECL_CONSHDLRCOPY(x)
Definition: type_cons.h:65
struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
Definition: type_cons.h:48
SCIP_RETCODE SCIPconsGetVars(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
Definition: cons.c:5875
SCIP_RETCODE SCIPconsSetSeparated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool separate)
Definition: cons.c:6083
#define SCIP_DECL_CONSCOPY(x)
Definition: type_cons.h:714
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:371
SCIP_RETCODE SCIPconshdlrExitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool restart)
Definition: cons.c:2627
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 delaypresol, SCIP_Bool needscons, SCIP_PROPTIMING timingmask, 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_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_CONSHDLRDATA *conshdlrdata)
Definition: cons.c:1980
void SCIPconshdlrSetDisable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDISABLE((*consdisable)))
Definition: cons.c:4138
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_RESULT *result)
Definition: cons.c:3429
type definitions for constraints and constraint handlers
void SCIPconshdlrSetGetNVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
Definition: cons.c:4193
void SCIPconshdlrSetFree(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
Definition: cons.c:3969
memory allocation routines