Scippy

SCIP

Solving Constraint Integer Programs

conflict.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 conflict.h
17  * @brief internal methods for conflict analysis
18  * @author Tobias Achterberg
19  */
20 
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
22 
23 #ifndef __SCIP_CONFLICT_H__
24 #define __SCIP_CONFLICT_H__
25 
26 
27 #include "scip/def.h"
28 #include "blockmemshell/memory.h"
29 #include "scip/type_retcode.h"
30 #include "scip/type_set.h"
31 #include "scip/type_stat.h"
32 #include "scip/type_lp.h"
33 #include "scip/type_var.h"
34 #include "scip/type_prob.h"
35 #include "scip/type_tree.h"
36 #include "scip/type_conflict.h"
37 #include "scip/pub_conflict.h"
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 /*
44  * Conflict Handler
45  */
46 
47 /** copies the given conflict handler to a new scip */
48 extern
50  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
51  SCIP_SET* set /**< SCIP_SET of SCIP to copy to */
52  );
53 
54 /** creates a conflict handler */
55 extern
57  SCIP_CONFLICTHDLR** conflicthdlr, /**< pointer to conflict handler data structure */
58  SCIP_SET* set, /**< global SCIP settings */
59  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
60  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
61  const char* name, /**< name of conflict handler */
62  const char* desc, /**< description of conflict handler */
63  int priority, /**< priority of the conflict handler */
64  SCIP_DECL_CONFLICTCOPY((*conflictcopy)), /**< copy method of conflict handler or NULL if you don't want to copy your plugin into sub-SCIPs */
65  SCIP_DECL_CONFLICTFREE((*conflictfree)), /**< destructor of conflict handler */
66  SCIP_DECL_CONFLICTINIT((*conflictinit)), /**< initialize conflict handler */
67  SCIP_DECL_CONFLICTEXIT((*conflictexit)), /**< deinitialize conflict handler */
68  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)),/**< solving process initialization method of conflict handler */
69  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)),/**< solving process deinitialization method of conflict handler */
70  SCIP_DECL_CONFLICTEXEC((*conflictexec)), /**< conflict processing method of conflict handler */
71  SCIP_CONFLICTHDLRDATA* conflicthdlrdata /**< conflict handler data */
72  );
73 
74 /** calls destructor and frees memory of conflict handler */
75 extern
77  SCIP_CONFLICTHDLR** conflicthdlr, /**< pointer to conflict handler data structure */
78  SCIP_SET* set /**< global SCIP settings */
79  );
80 
81 /** calls init method of conflict handler */
82 extern
84  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
85  SCIP_SET* set /**< global SCIP settings */
86  );
87 
88 /** calls exit method of conflict handler */
89 extern
91  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
92  SCIP_SET* set /**< global SCIP settings */
93  );
94 
95 /** informs conflict handler that the branch and bound process is being started */
96 extern
98  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
99  SCIP_SET* set /**< global SCIP settings */
100  );
101 
102 /** informs conflict handler that the branch and bound process data is being freed */
103 extern
105  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
106  SCIP_SET* set /**< global SCIP settings */
107  );
108 
109 /** calls execution method of conflict handler */
110 extern
112  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
113  SCIP_SET* set, /**< global SCIP settings */
114  SCIP_NODE* node, /**< node to add conflict constraint to */
115  SCIP_NODE* validnode, /**< node at which the constraint is valid */
116  SCIP_BDCHGINFO** bdchginfos, /**< bound change resembling the conflict set */
117  SCIP_Real* relaxedbds, /**< array with relaxed bounds which are efficient to create a valid conflict */
118  int nbdchginfos, /**< number of bound changes in the conflict set */
119  SCIP_Bool resolved, /**< was the conflict set already used to create a constraint? */
120  SCIP_RESULT* result /**< pointer to store the result of the callback method */
121  );
122 
123 /** sets priority of conflict handler */
124 extern
126  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
127  SCIP_SET* set, /**< global SCIP settings */
128  int priority /**< new priority of the conflict handler */
129  );
130 
131 /** set copy method of conflict handler */
132 extern
134  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
135  SCIP_DECL_CONFLICTCOPY((*conflictcopy)) /**< copy method of the conflict handler */
136  );
137 
138 /** set destructor of conflict handler */
139 extern
141  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
142  SCIP_DECL_CONFLICTFREE((*conflictfree)) /**< destructor of conflict handler */
143  );
144 
145 /** set initialization method of conflict handler */
146 extern
148  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
149  SCIP_DECL_CONFLICTINIT((*conflictinit)) /**< initialization method conflict handler */
150  );
151 
152 /** set deinitialization method of conflict handler */
153 extern
155  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
156  SCIP_DECL_CONFLICTEXIT((*conflictexit)) /**< deinitialization method conflict handler */
157  );
158 
159 /** set solving process initialization method of conflict handler */
160 extern
162  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
163  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol))/**< solving process initialization method of conflict handler */
164  );
165 
166 /** set solving process deinitialization method of conflict handler */
167 extern
169  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
170  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol))/**< solving process deinitialization method of conflict handler */
171  );
172 
173 /** enables or disables all clocks of \p conflicthdlr, depending on the value of the flag */
174 extern
176  SCIP_CONFLICTHDLR* conflicthdlr, /**< the conflict handler for which all clocks should be enabled or disabled */
177  SCIP_Bool enable /**< should the clocks of the conflict handler be enabled? */
178  );
179 
180 /*
181  * Conflict Analysis
182  */
183 
184 /** return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the
185  * conflict analysis since it will not be applied
186  */
187 extern
189  SCIP_SET* set /**< global SCIP settings */
190  );
191 
192 /** creates conflict analysis data for propagation conflicts */
193 extern
195  SCIP_CONFLICT** conflict, /**< pointer to conflict analysis data */
196  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
197  SCIP_SET* set /**< global SCIP settings */
198  );
199 
200 /** frees conflict analysis data for propagation conflicts */
201 extern
203  SCIP_CONFLICT** conflict, /**< pointer to conflict analysis data */
204  BMS_BLKMEM* blkmem /**< block memory of transformed problem */
205  );
206 
207 /** initializes the propagation conflict analysis by clearing the conflict candidate queue */
208 extern
210  SCIP_CONFLICT* conflict, /**< conflict analysis data */
211  SCIP_SET* set, /**< global SCIP settings */
212  SCIP_STAT* stat, /**< problem statistics */
213  SCIP_PROB* prob /**< problem data */
214  );
215 
216 /** adds variable's bound to conflict candidate queue */
217 extern
219  SCIP_CONFLICT* conflict, /**< conflict analysis data */
220  BMS_BLKMEM* blkmem, /**< block memory */
221  SCIP_SET* set, /**< global SCIP settings */
222  SCIP_STAT* stat, /**< dynamic problem statistics */
223  SCIP_VAR* var, /**< problem variable */
224  SCIP_BOUNDTYPE boundtype, /**< type of bound that was changed: lower or upper bound */
225  SCIP_BDCHGIDX* bdchgidx /**< bound change index (time stamp of bound change), or NULL for current time */
226  );
227 
228 /** adds variable's bound to conflict candidate queue with the additional information of a relaxed bound */
229 extern
231  SCIP_CONFLICT* conflict, /**< conflict analysis data */
232  BMS_BLKMEM* blkmem, /**< block memory */
233  SCIP_SET* set, /**< global SCIP settings */
234  SCIP_STAT* stat, /**< dynamic problem statistics */
235  SCIP_VAR* var, /**< problem variable */
236  SCIP_BOUNDTYPE boundtype, /**< type of bound that was changed: lower or upper bound */
237  SCIP_BDCHGIDX* bdchgidx, /**< bound change index (time stamp of bound change), or NULL for current time */
238  SCIP_Real relaxedbd /**< the relaxed bound */
239  );
240 
241 /** checks if the given variable is already part of the current conflict set or queued for resolving with the same or
242  * even stronger bound
243  */
244 extern
246  SCIP_CONFLICT* conflict, /**< conflict analysis data */
247  SCIP_VAR* var, /**< problem variable */
248  SCIP_SET* set, /**< global SCIP settings */
249  SCIP_BOUNDTYPE boundtype, /**< type of bound for which the score should be increased */
250  SCIP_BDCHGIDX* bdchgidx, /**< bound change index (time stamp of bound change), or NULL for current time */
251  SCIP_Bool* used /**< pointer to store if the variable is already used */
252  );
253 
254 /** returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower
255  * bound
256  */
257 extern
259  SCIP_CONFLICT* conflict, /**< conflict analysis data */
260  SCIP_VAR* var /**< problem variable */
261  );
262 
263 /** returns the conflict upper bound if the variable is present in the current conflict set; otherwise the global upper
264  * bound
265  */
266 extern
268  SCIP_CONFLICT* conflict, /**< conflict analysis data */
269  SCIP_VAR* var /**< problem variable */
270  );
271 
272 /** analyzes conflicting bound changes that were added with calls to SCIPconflictAddBound() and
273  * SCIPconflictAddRelaxedBound(), and on success, calls the conflict handlers to create a conflict constraint out of
274  * the resulting conflict set; updates statistics for propagation conflict analysis
275  */
276 extern
278  SCIP_CONFLICT* conflict, /**< conflict analysis data */
279  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
280  SCIP_SET* set, /**< global SCIP settings */
281  SCIP_STAT* stat, /**< problem statistics */
282  SCIP_PROB* prob, /**< problem data */
283  SCIP_TREE* tree, /**< branch and bound tree */
284  int validdepth, /**< minimal depth level at which the initial conflict set is valid */
285  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
286  );
287 
288 /** adds the collected conflict constraints to the corresponding nodes; the best set->conf_maxconss conflict constraints
289  * are added to the node of their validdepth; additionally (if not yet added, and if repropagation is activated), the
290  * conflict constraint that triggers the earliest repropagation is added to the node of its validdepth
291  */
292 extern
294  SCIP_CONFLICT* conflict, /**< conflict analysis data */
295  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
296  SCIP_SET* set, /**< global SCIP settings */
297  SCIP_STAT* stat, /**< dynamic problem statistics */
298  SCIP_PROB* transprob, /**< transformed problem */
299  SCIP_PROB* origprob, /**< original problem */
300  SCIP_TREE* tree, /**< branch and bound tree */
301  SCIP_LP* lp, /**< current LP data */
302  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
303  SCIP_EVENTQUEUE* eventqueue /**< event queue */
304 
305  );
306 
307 /** returns the current number of conflict sets in the conflict set storage */
308 extern
310  SCIP_CONFLICT* conflict /**< conflict analysis data */
311  );
312 
313 /** returns the total number of conflict constraints that were added to the problem */
314 extern
316  SCIP_CONFLICT* conflict /**< conflict analysis data */
317  );
318 
319 /** returns the total number of literals in conflict constraints that were added to the problem */
320 extern
322  SCIP_CONFLICT* conflict /**< conflict analysis data */
323  );
324 
325 /** returns the total number of global bound changes applied by the conflict analysis */
326 extern
328  SCIP_CONFLICT* conflict /**< conflict analysis data */
329  );
330 
331 /** returns the total number of conflict constraints that were added globally to the problem */
332 extern
334  SCIP_CONFLICT* conflict /**< conflict analysis data */
335  );
336 
337 /** returns the total number of literals in conflict constraints that were added globally to the problem */
338 extern
340  SCIP_CONFLICT* conflict /**< conflict analysis data */
341  );
342 
343 /** returns the total number of local bound changes applied by the conflict analysis */
344 extern
346  SCIP_CONFLICT* conflict /**< conflict analysis data */
347  );
348 
349 /** returns the total number of conflict constraints that were added locally to the problem */
350 extern
352  SCIP_CONFLICT* conflict /**< conflict analysis data */
353  );
354 
355 /** returns the total number of literals in conflict constraints that were added locally to the problem */
356 extern
358  SCIP_CONFLICT* conflict /**< conflict analysis data */
359  );
360 
361 /** gets time in seconds used for preprocessing global conflict constraint before appliance */
362 extern
364  SCIP_CONFLICT* conflict /**< conflict analysis data */
365  );
366 
367 /** gets time in seconds used for analyzing propagation conflicts */
368 extern
370  SCIP_CONFLICT* conflict /**< conflict analysis data */
371  );
372 
373 /** gets number of calls to propagation conflict analysis */
374 extern
376  SCIP_CONFLICT* conflict /**< conflict analysis data */
377  );
378 
379 /** gets number of calls to propagation conflict analysis that yield at least one conflict constraint */
380 extern
382  SCIP_CONFLICT* conflict /**< conflict analysis data */
383  );
384 
385 /** gets number of conflict constraints detected in propagation conflict analysis */
386 extern
388  SCIP_CONFLICT* conflict /**< conflict analysis data */
389  );
390 
391 /** gets total number of literals in conflict constraints created in propagation conflict analysis */
392 extern
394  SCIP_CONFLICT* conflict /**< conflict analysis data */
395  );
396 
397 /** gets number of reconvergence constraints detected in propagation conflict analysis */
398 extern
400  SCIP_CONFLICT* conflict /**< conflict analysis data */
401  );
402 
403 /** gets total number of literals in reconvergence constraints created in propagation conflict analysis */
404 extern
406  SCIP_CONFLICT* conflict /**< conflict analysis data */
407  );
408 
409 
410 
411 
412 /*
413  * Infeasible LP Conflict Analysis
414  */
415 
416 /** analyzes an infeasible or bound exceeding LP to find out the bound changes on variables that were responsible for the
417  * infeasibility or for exceeding the primal bound;
418  * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
419  * a conflict constraint out of the resulting conflict set;
420  * updates statistics for infeasible or bound exceeding LP conflict analysis
421  */
422 extern
424  SCIP_CONFLICT* conflict, /**< conflict analysis data */
425  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
426  SCIP_SET* set, /**< global SCIP settings */
427  SCIP_STAT* stat, /**< problem statistics */
428  SCIP_PROB* transprob, /**< transformed problem */
429  SCIP_PROB* origprob, /**< original problem */
430  SCIP_TREE* tree, /**< branch and bound tree */
431  SCIP_LP* lp, /**< LP data */
432  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
433  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
434  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
435  );
436 
437 /** gets time in seconds used for analyzing infeasible LP conflicts */
438 extern
440  SCIP_CONFLICT* conflict /**< conflict analysis data */
441  );
442 
443 /** gets number of calls to infeasible LP conflict analysis */
444 extern
446  SCIP_CONFLICT* conflict /**< conflict analysis data */
447  );
448 
449 /** gets number of calls to infeasible LP conflict analysis that yield at least one conflict constraint */
450 extern
452  SCIP_CONFLICT* conflict /**< conflict analysis data */
453  );
454 
455 /** gets number of conflict constraints detected in infeasible LP conflict analysis */
456 extern
458  SCIP_CONFLICT* conflict /**< conflict analysis data */
459  );
460 
461 /** gets total number of literals in conflict constraints created in infeasible LP conflict analysis */
462 extern
464  SCIP_CONFLICT* conflict /**< conflict analysis data */
465  );
466 
467 /** gets number of reconvergence constraints detected in infeasible LP conflict analysis */
468 extern
470  SCIP_CONFLICT* conflict /**< conflict analysis data */
471  );
472 
473 /** gets total number of literals in reconvergence constraints created in infeasible LP conflict analysis */
474 extern
476  SCIP_CONFLICT* conflict /**< conflict analysis data */
477  );
478 
479 /** gets number of LP iterations in infeasible LP conflict analysis */
480 extern
482  SCIP_CONFLICT* conflict /**< conflict analysis data */
483  );
484 
485 /** gets time in seconds used for analyzing bound exceeding LP conflicts */
486 extern
488  SCIP_CONFLICT* conflict /**< conflict analysis data */
489  );
490 
491 /** gets number of calls to bound exceeding LP conflict analysis */
492 extern
494  SCIP_CONFLICT* conflict /**< conflict analysis data */
495  );
496 
497 /** gets number of calls to bound exceeding LP conflict analysis that yield at least one conflict constraint */
498 extern
500  SCIP_CONFLICT* conflict /**< conflict analysis data */
501  );
502 
503 /** gets number of conflict constraints detected in bound exceeding LP conflict analysis */
504 extern
506  SCIP_CONFLICT* conflict /**< conflict analysis data */
507  );
508 
509 /** gets total number of literals in conflict constraints created in bound exceeding LP conflict analysis */
510 extern
512  SCIP_CONFLICT* conflict /**< conflict analysis data */
513  );
514 
515 /** gets number of reconvergence constraints detected in bound exceeding LP conflict analysis */
516 extern
518  SCIP_CONFLICT* conflict /**< conflict analysis data */
519  );
520 
521 /** gets total number of literals in reconvergence constraints created in bound exceeding LP conflict analysis */
522 extern
524  SCIP_CONFLICT* conflict /**< conflict analysis data */
525  );
526 
527 /** gets number of LP iterations in bound exceeding LP conflict analysis */
528 extern
530  SCIP_CONFLICT* conflict /**< conflict analysis data */
531  );
532 
533 
534 
535 
536 /*
537  * infeasible strong branching conflict analysis
538  */
539 
540 /** analyses infeasible strong branching sub problems for conflicts */
541 extern
543  SCIP_CONFLICT* conflict, /**< conflict analysis data */
544  BMS_BLKMEM* blkmem, /**< block memory buffers */
545  SCIP_SET* set, /**< global SCIP settings */
546  SCIP_STAT* stat, /**< dynamic problem statistics */
547  SCIP_PROB* transprob, /**< transformed problem */
548  SCIP_PROB* origprob, /**< original problem */
549  SCIP_TREE* tree, /**< branch and bound tree */
550  SCIP_LP* lp, /**< LP data */
551  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
552  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
553  SCIP_COL* col, /**< LP column with at least one infeasible strong branching subproblem */
554  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
555  * infeasible downwards branch, or NULL */
556  SCIP_Bool* upconflict /**< pointer to store whether a conflict constraint was created for an
557  * infeasible upwards branch, or NULL */
558  );
559 
560 /** gets time in seconds used for analyzing infeasible strong branching conflicts */
561 extern
563  SCIP_CONFLICT* conflict /**< conflict analysis data */
564  );
565 
566 /** gets number of calls to infeasible strong branching conflict analysis */
567 extern
569  SCIP_CONFLICT* conflict /**< conflict analysis data */
570  );
571 
572 /** gets number of calls to infeasible strong branching conflict analysis that yield at least one conflict constraint */
573 extern
575  SCIP_CONFLICT* conflict /**< conflict analysis data */
576  );
577 
578 /** gets number of conflict constraints detected in infeasible strong branching conflict analysis */
579 extern
581  SCIP_CONFLICT* conflict /**< conflict analysis data */
582  );
583 
584 /** gets total number of literals in conflict constraints created in infeasible strong branching conflict analysis */
585 extern
587  SCIP_CONFLICT* conflict /**< conflict analysis data */
588  );
589 
590 /** gets number of reconvergence constraints detected in infeasible strong branching conflict analysis */
591 extern
593  SCIP_CONFLICT* conflict /**< conflict analysis data */
594  );
595 
596 /** gets total number of literals in reconvergence constraints created in infeasible strong branching conflict analysis */
597 extern
599  SCIP_CONFLICT* conflict /**< conflict analysis data */
600  );
601 
602 /** gets number of LP iterations in infeasible strong branching conflict analysis */
603 extern
605  SCIP_CONFLICT* conflict /**< conflict analysis data */
606  );
607 
608 
609 
610 
611 /*
612  * pseudo solution conflict analysis
613  */
614 
615 /** analyzes a pseudo solution with objective value exceeding the current cutoff to find out the bound changes on
616  * variables that were responsible for the objective value degradation;
617  * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
618  * a conflict constraint out of the resulting conflict set;
619  * updates statistics for pseudo solution conflict analysis
620  */
621 extern
623  SCIP_CONFLICT* conflict, /**< conflict analysis data */
624  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
625  SCIP_SET* set, /**< global SCIP settings */
626  SCIP_STAT* stat, /**< problem statistics */
627  SCIP_PROB* transprob, /**< transformed problem */
628  SCIP_PROB* origprob, /**< original problem */
629  SCIP_TREE* tree, /**< branch and bound tree */
630  SCIP_LP* lp, /**< LP data */
631  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
632  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
633  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
634  );
635 
636 /** gets time in seconds used for analyzing pseudo solution conflicts */
637 extern
639  SCIP_CONFLICT* conflict /**< conflict analysis data */
640  );
641 
642 /** gets number of calls to pseudo solution conflict analysis */
643 extern
645  SCIP_CONFLICT* conflict /**< conflict analysis data */
646  );
647 
648 /** gets number of calls to pseudo solution conflict analysis that yield at least one conflict constraint */
649 extern
651  SCIP_CONFLICT* conflict /**< conflict analysis data */
652  );
653 
654 /** gets number of conflict constraints detected in pseudo solution conflict analysis */
655 extern
657  SCIP_CONFLICT* conflict /**< conflict analysis data */
658  );
659 
660 /** gets total number of literals in conflict constraints created in pseudo solution conflict analysis */
661 extern
663  SCIP_CONFLICT* conflict /**< conflict analysis data */
664  );
665 
666 /** gets number of reconvergence constraints detected in pseudo solution conflict analysis */
667 extern
669  SCIP_CONFLICT* conflict /**< conflict analysis data */
670  );
671 
672 /** gets total number of literals in reconvergence constraints created in pseudo solution conflict analysis */
673 extern
675  SCIP_CONFLICT* conflict /**< conflict analysis data */
676  );
677 
678 /** enables or disables all clocks of \p conflict, depending on the value of the flag */
679 extern
681  SCIP_CONFLICT* conflict, /**< the conflict analysis data for which all clocks should be enabled or disabled */
682  SCIP_Bool enable /**< should the clocks of the conflict analysis data be enabled? */
683  );
684 
685 #ifdef __cplusplus
686 }
687 #endif
688 
689 #endif
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:51
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition: type_lp.h:50
SCIP_Longint SCIPconflictGetNBoundexceedingLPCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:6361
SCIP_Longint SCIPconflictGetNPseudoConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6929
SCIP_Longint SCIPconflictGetNPropReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:4356
void SCIPconflicthdlrSetCopy(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTCOPY((*conflictcopy)))
Definition: conflict.c:640
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6381
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:6421
SCIP_Real SCIPconflictGetGlobalApplTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:4286
SCIP_Longint SCIPconflictGetNLocalChgBds(SCIP_CONFLICT *conflict)
Definition: conflict.c:2436
SCIP_RETCODE SCIPconflictAddRelaxedBound(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd)
Definition: conflict.c:3057
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6331
int SCIPconflictGetNConflicts(SCIP_CONFLICT *conflict)
Definition: conflict.c:2376
SCIP_RETCODE SCIPconflicthdlrExitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:551
SCIP_Real SCIPconflictGetPseudoTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6899
SCIP_Longint SCIPconflictGetNPropReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:4346
SCIP_RETCODE SCIPconflictAnalyzeLP(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Bool *success)
Definition: conflict.c:6137
SCIP_Longint SCIPconflictGetNPropCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:4306
SCIP_Longint SCIPconflictGetNPseudoSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:6919
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
type definitions for global SCIP settings
SCIP_Longint SCIPconflictGetNAppliedLocalConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:2446
SCIP_RETCODE SCIPconflicthdlrFree(SCIP_CONFLICTHDLR **conflicthdlr, SCIP_SET *set)
Definition: conflict.c:432
SCIP_Longint SCIPconflictGetNStrongbranchConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6707
void SCIPconflicthdlrSetFree(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTFREE((*conflictfree)))
Definition: conflict.c:651
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6411
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6391
SCIP_RETCODE SCIPconflictFree(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem)
Definition: conflict.c:2604
SCIP_Longint SCIPconflictGetNPropSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:4316
type definitions for return codes for SCIP methods
SCIP_Real SCIPconflictGetPropTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:4296
#define SCIP_DECL_CONFLICTEXIT(x)
Definition: type_conflict.h:76
type definitions for problem statistics
void SCIPconflicthdlrSetInit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINIT((*conflictinit)))
Definition: conflict.c:662
SCIP_RETCODE SCIPconflicthdlrCopyInclude(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:360
void SCIPconflicthdlrSetExit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXIT((*conflictexit)))
Definition: conflict.c:673
type definitions for LP management
SCIP_Longint SCIPconflictGetNAppliedLocalLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:2456
SCIP_RETCODE SCIPconflicthdlrExit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:496
#define SCIP_DECL_CONFLICTINITSOL(x)
Definition: type_conflict.h:87
SCIP_Longint SCIPconflictGetNPseudoReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6959
#define SCIP_DECL_CONFLICTEXEC(x)
SCIP_Longint SCIPconflictGetNPseudoCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:6909
SCIP_Longint SCIPconflictGetNAppliedGlobalConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:2416
SCIP_Longint SCIPconflictGetNStrongbranchIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:6737
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6401
struct SCIP_ConflicthdlrData SCIP_CONFLICTHDLRDATA
Definition: type_conflict.h:40
type definitions for problem variables
#define SCIP_DECL_CONFLICTCOPY(x)
Definition: type_conflict.h:52
SCIP_RETCODE SCIPconflictInit(SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob)
Definition: conflict.c:2649
SCIP_RETCODE SCIPconflicthdlrExec(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set, SCIP_NODE *node, SCIP_NODE *validnode, SCIP_BDCHGINFO **bdchginfos, SCIP_Real *relaxedbds, int nbdchginfos, SCIP_Bool resolved, SCIP_RESULT *result)
Definition: conflict.c:575
SCIP_Longint SCIPconflictGetNPseudoConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6939
void SCIPconflicthdlrEnableOrDisableClocks(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_Bool enable)
Definition: conflict.c:760
type definitions for conflict analysis
SCIP_RETCODE SCIPconflictAnalyzeStrongbranch(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_COL *col, SCIP_Bool *downconflict, SCIP_Bool *upconflict)
Definition: conflict.c:6438
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6727
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6301
#define SCIP_Bool
Definition: def.h:49
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6949
SCIP_Real SCIPconflictGetVarLb(SCIP_CONFLICT *conflict, SCIP_VAR *var)
Definition: conflict.c:3281
SCIP_Real SCIPconflictGetBoundexceedingLPTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6351
SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:6371
type definitions for branch and bound tree
SCIP_Real SCIPconflictGetStrongbranchTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6667
type definitions for storing and manipulating the main problem
SCIP_RETCODE SCIPconflictIsVarUsed(SCIP_CONFLICT *conflict, SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool *used)
Definition: conflict.c:3221
SCIP_RETCODE SCIPconflictAddBound(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx)
Definition: conflict.c:2996
SCIP_Longint SCIPconflictGetNAppliedLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:2396
SCIP_Real SCIPconflictGetInfeasibleLPTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6271
void SCIPconflicthdlrSetInitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)))
Definition: conflict.c:684
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:6341
public methods for conflict analysis handlers
void SCIPconflicthdlrSetExitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)))
Definition: conflict.c:695
#define SCIP_Real
Definition: def.h:123
SCIP_RETCODE SCIPconflictAnalyzePseudo(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Bool *success)
Definition: conflict.c:6759
SCIP_Longint SCIPconflictGetNAppliedConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:2386
SCIP_Longint SCIPconflictGetNStrongbranchConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6697
#define SCIP_DECL_CONFLICTINIT(x)
Definition: type_conflict.h:68
SCIP_RETCODE SCIPconflicthdlrInit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:459
SCIP_Longint SCIPconflictGetNInfeasibleLPSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:6291
#define SCIP_Longint
Definition: def.h:107
SCIP_Longint SCIPconflictGetNAppliedGlobalLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:2426
SCIP_Longint SCIPconflictGetNStrongbranchSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:6687
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6717
SCIP_RETCODE SCIPconflictCreate(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: conflict.c:2527
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6321
SCIP_Longint SCIPconflictGetNStrongbranchCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:6677
SCIP_Longint SCIPconflictGetNPropConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:4326
SCIP_Real SCIPconflictGetVarUb(SCIP_CONFLICT *conflict, SCIP_VAR *var)
Definition: conflict.c:3298
common defines and data types used in all packages of SCIP
void SCIPconflicthdlrSetPriority(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set, int priority)
Definition: conflict.c:736
SCIP_Longint SCIPconflictGetNInfeasibleLPCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:6281
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:371
SCIP_RETCODE SCIPconflictAnalyze(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, int validdepth, SCIP_Bool *success)
Definition: conflict.c:4227
#define SCIP_DECL_CONFLICTFREE(x)
Definition: type_conflict.h:60
SCIP_Bool SCIPconflictApplicable(SCIP_SET *set)
Definition: conflict.c:2511
SCIP_Longint SCIPconflictGetNPropConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:4336
void SCIPconflictEnableOrDisableClocks(SCIP_CONFLICT *conflict, SCIP_Bool enable)
Definition: conflict.c:6969
SCIP_Longint SCIPconflictGetNGlobalChgBds(SCIP_CONFLICT *conflict)
Definition: conflict.c:2406
SCIP_RETCODE SCIPconflicthdlrInitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:527
SCIP_RETCODE SCIPconflictFlushConss(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue)
Definition: conflict.c:2200
SCIP_RETCODE SCIPconflicthdlrCreate(SCIP_CONFLICTHDLR **conflicthdlr, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, SCIP_DECL_CONFLICTCOPY((*conflictcopy)), SCIP_DECL_CONFLICTFREE((*conflictfree)), SCIP_DECL_CONFLICTINIT((*conflictinit)), SCIP_DECL_CONFLICTEXIT((*conflictexit)), SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)), SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)), SCIP_DECL_CONFLICTEXEC((*conflictexec)), SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
Definition: conflict.c:379
#define SCIP_DECL_CONFLICTEXITSOL(x)
Definition: type_conflict.h:98
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6311
memory allocation routines