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-2021 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file conflict.h
17  * @ingroup INTERNALAPI
18  * @brief internal methods for conflict analysis
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_CONFLICT_H__
25 #define __SCIP_CONFLICT_H__
26 
27 
28 #include "blockmemshell/memory.h"
29 #include "scip/def.h"
30 #include "scip/type_branch.h"
31 #include "scip/type_conflict.h"
33 #include "scip/type_event.h"
34 #include "scip/type_implics.h"
35 #include "scip/type_lp.h"
36 #include "scip/type_message.h"
37 #include "scip/type_prob.h"
38 #include "scip/type_reopt.h"
39 #include "scip/type_result.h"
40 #include "scip/type_retcode.h"
41 #include "scip/type_scip.h"
42 #include "scip/type_set.h"
43 #include "scip/type_stat.h"
44 #include "scip/type_tree.h"
45 #include "scip/type_var.h"
46 
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50 
51 /*
52  * Conflict Handler
53  */
54 
55 /** copies the given conflict handler to a new scip */
57  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
58  SCIP_SET* set /**< SCIP_SET of SCIP to copy to */
59  );
60 
61 /** creates a conflict handler */
63  SCIP_CONFLICTHDLR** conflicthdlr, /**< pointer to conflict handler data structure */
64  SCIP_SET* set, /**< global SCIP settings */
65  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
66  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
67  const char* name, /**< name of conflict handler */
68  const char* desc, /**< description of conflict handler */
69  int priority, /**< priority of the conflict handler */
70  SCIP_DECL_CONFLICTCOPY((*conflictcopy)), /**< copy method of conflict handler or NULL if you don't want to copy your plugin into sub-SCIPs */
71  SCIP_DECL_CONFLICTFREE((*conflictfree)), /**< destructor of conflict handler */
72  SCIP_DECL_CONFLICTINIT((*conflictinit)), /**< initialize conflict handler */
73  SCIP_DECL_CONFLICTEXIT((*conflictexit)), /**< deinitialize conflict handler */
74  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)),/**< solving process initialization method of conflict handler */
75  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)),/**< solving process deinitialization method of conflict handler */
76  SCIP_DECL_CONFLICTEXEC((*conflictexec)), /**< conflict processing method of conflict handler */
77  SCIP_CONFLICTHDLRDATA* conflicthdlrdata /**< conflict handler data */
78  );
79 
80 /** calls destructor and frees memory of conflict handler */
82  SCIP_CONFLICTHDLR** conflicthdlr, /**< pointer to conflict handler data structure */
83  SCIP_SET* set /**< global SCIP settings */
84  );
85 
86 /** calls init method of conflict handler */
88  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
89  SCIP_SET* set /**< global SCIP settings */
90  );
91 
92 /** calls exit method of conflict handler */
94  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
95  SCIP_SET* set /**< global SCIP settings */
96  );
97 
98 /** informs conflict handler that the branch and bound process is being started */
100  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
101  SCIP_SET* set /**< global SCIP settings */
102  );
103 
104 /** informs conflict handler that the branch and bound process data is being freed */
106  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
107  SCIP_SET* set /**< global SCIP settings */
108  );
109 
110 /** calls execution method of conflict handler */
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_CONFTYPE conftype, /**< type of the conflict */
120  SCIP_Bool usescutoffbound, /**< depends the conflict on the cutoff bound? */
121  SCIP_Bool resolved, /**< was the conflict set already used to create a constraint? */
122  SCIP_RESULT* result /**< pointer to store the result of the callback method */
123  );
124 
125 /** sets priority of conflict handler */
127  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
128  SCIP_SET* set, /**< global SCIP settings */
129  int priority /**< new priority of the conflict handler */
130  );
131 
132 /** set copy method of conflict handler */
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 */
140  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
141  SCIP_DECL_CONFLICTFREE((*conflictfree)) /**< destructor of conflict handler */
142  );
143 
144 /** set initialization method of conflict handler */
146  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
147  SCIP_DECL_CONFLICTINIT((*conflictinit)) /**< initialization method conflict handler */
148  );
149 
150 /** set deinitialization method of conflict handler */
152  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
153  SCIP_DECL_CONFLICTEXIT((*conflictexit)) /**< deinitialization method conflict handler */
154  );
155 
156 /** set solving process initialization method of conflict handler */
158  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
159  SCIP_DECL_CONFLICTINITSOL((*conflictinitsol))/**< solving process initialization method of conflict handler */
160  );
161 
162 /** set solving process deinitialization method of conflict handler */
164  SCIP_CONFLICTHDLR* conflicthdlr, /**< conflict handler */
165  SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol))/**< solving process deinitialization method of conflict handler */
166  );
167 
168 /** enables or disables all clocks of \p conflicthdlr, depending on the value of the flag */
170  SCIP_CONFLICTHDLR* conflicthdlr, /**< the conflict handler for which all clocks should be enabled or disabled */
171  SCIP_Bool enable /**< should the clocks of the conflict handler be enabled? */
172  );
173 
174 /*
175  * Conflict Analysis
176  */
177 
178 /** return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the
179  * conflict analysis since it will not be applied
180  */
182  SCIP_SET* set /**< global SCIP settings */
183  );
184 
185 /** creates conflict analysis data for propagation conflicts */
187  SCIP_CONFLICT** conflict, /**< pointer to conflict analysis data */
188  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
189  SCIP_SET* set /**< global SCIP settings */
190  );
191 
192 /** frees conflict analysis data for propagation conflicts */
194  SCIP_CONFLICT** conflict, /**< pointer to conflict analysis data */
195  BMS_BLKMEM* blkmem /**< block memory of transformed problem */
196  );
197 
198 /** initializes the propagation conflict analysis by clearing the conflict candidate queue */
200  SCIP_CONFLICT* conflict, /**< conflict analysis data */
201  SCIP_SET* set, /**< global SCIP settings */
202  SCIP_STAT* stat, /**< problem statistics */
203  SCIP_PROB* prob, /**< problem data */
204  SCIP_CONFTYPE conftype, /**< type of the conflict */
205  SCIP_Bool usescutoffbound /**< depends the conflict on a cutoff bound? */
206  );
207 
208 /** adds variable's bound to conflict candidate queue */
210  SCIP_CONFLICT* conflict, /**< conflict analysis data */
211  BMS_BLKMEM* blkmem, /**< block memory */
212  SCIP_SET* set, /**< global SCIP settings */
213  SCIP_STAT* stat, /**< dynamic problem statistics */
214  SCIP_VAR* var, /**< problem variable */
215  SCIP_BOUNDTYPE boundtype, /**< type of bound that was changed: lower or upper bound */
216  SCIP_BDCHGIDX* bdchgidx /**< bound change index (time stamp of bound change), or NULL for current time */
217  );
218 
219 /** adds variable's bound to conflict candidate queue with the additional information of a relaxed bound */
221  SCIP_CONFLICT* conflict, /**< conflict analysis data */
222  BMS_BLKMEM* blkmem, /**< block memory */
223  SCIP_SET* set, /**< global SCIP settings */
224  SCIP_STAT* stat, /**< dynamic problem statistics */
225  SCIP_VAR* var, /**< problem variable */
226  SCIP_BOUNDTYPE boundtype, /**< type of bound that was changed: lower or upper bound */
227  SCIP_BDCHGIDX* bdchgidx, /**< bound change index (time stamp of bound change), or NULL for current time */
228  SCIP_Real relaxedbd /**< the relaxed bound */
229  );
230 
231 /** checks if the given variable is already part of the current conflict set or queued for resolving with the same or
232  * even stronger bound
233  */
235  SCIP_CONFLICT* conflict, /**< conflict analysis data */
236  SCIP_VAR* var, /**< problem variable */
237  SCIP_SET* set, /**< global SCIP settings */
238  SCIP_BOUNDTYPE boundtype, /**< type of bound for which the score should be increased */
239  SCIP_BDCHGIDX* bdchgidx, /**< bound change index (time stamp of bound change), or NULL for current time */
240  SCIP_Bool* used /**< pointer to store if the variable is already used */
241  );
242 
243 /** returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower
244  * bound
245  */
247  SCIP_CONFLICT* conflict, /**< conflict analysis data */
248  SCIP_VAR* var /**< problem variable */
249  );
250 
251 /** returns the conflict upper bound if the variable is present in the current conflict set; otherwise the global upper
252  * bound
253  */
255  SCIP_CONFLICT* conflict, /**< conflict analysis data */
256  SCIP_VAR* var /**< problem variable */
257  );
258 
259 /** analyzes conflicting bound changes that were added with calls to SCIPconflictAddBound() and
260  * SCIPconflictAddRelaxedBound(), and on success, calls the conflict handlers to create a conflict constraint out of
261  * the resulting conflict set; updates statistics for propagation conflict analysis
262  */
264  SCIP_CONFLICT* conflict, /**< conflict analysis data */
265  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
266  SCIP_SET* set, /**< global SCIP settings */
267  SCIP_STAT* stat, /**< problem statistics */
268  SCIP_PROB* prob, /**< problem data */
269  SCIP_TREE* tree, /**< branch and bound tree */
270  int validdepth, /**< minimal depth level at which the initial conflict set is valid */
271  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
272  );
273 
274 /** adds the collected conflict constraints to the corresponding nodes; the best set->conf_maxconss conflict constraints
275  * are added to the node of their validdepth; additionally (if not yet added, and if repropagation is activated), the
276  * conflict constraint that triggers the earliest repropagation is added to the node of its validdepth
277  */
279  SCIP_CONFLICT* conflict, /**< conflict analysis data */
280  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
281  SCIP_SET* set, /**< global SCIP settings */
282  SCIP_STAT* stat, /**< dynamic problem statistics */
283  SCIP_PROB* transprob, /**< transformed problem */
284  SCIP_PROB* origprob, /**< original problem */
285  SCIP_TREE* tree, /**< branch and bound tree */
286  SCIP_REOPT* reopt, /**< reoptimization data structure */
287  SCIP_LP* lp, /**< current LP data */
288  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
289  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
290  SCIP_CLIQUETABLE* cliquetable /**< clique table data structure */
291  );
292 
293 /** returns the current number of conflict sets in the conflict set storage */
295  SCIP_CONFLICT* conflict /**< conflict analysis data */
296  );
297 
298 /** returns the total number of conflict constraints that were added to the problem */
300  SCIP_CONFLICT* conflict /**< conflict analysis data */
301  );
302 
303 /** returns the total number of literals in conflict constraints that were added to the problem */
305  SCIP_CONFLICT* conflict /**< conflict analysis data */
306  );
307 
308 /** returns the total number of global bound changes applied by the conflict analysis */
310  SCIP_CONFLICT* conflict /**< conflict analysis data */
311  );
312 
313 /** returns the total number of conflict constraints that were added globally to the problem */
315  SCIP_CONFLICT* conflict /**< conflict analysis data */
316  );
317 
318 /** returns the total number of literals in conflict constraints that were added globally to the problem */
320  SCIP_CONFLICT* conflict /**< conflict analysis data */
321  );
322 
323 /** returns the total number of local bound changes applied by the conflict analysis */
325  SCIP_CONFLICT* conflict /**< conflict analysis data */
326  );
327 
328 /** returns the total number of conflict constraints that were added locally to the problem */
330  SCIP_CONFLICT* conflict /**< conflict analysis data */
331  );
332 
333 /** returns the total number of literals in conflict constraints that were added locally to the problem */
335  SCIP_CONFLICT* conflict /**< conflict analysis data */
336  );
337 
338 /** gets time in seconds used for preprocessing global conflict constraint before appliance */
340  SCIP_CONFLICT* conflict /**< conflict analysis data */
341  );
342 
343 /** gets time in seconds used for analyzing propagation conflicts */
345  SCIP_CONFLICT* conflict /**< conflict analysis data */
346  );
347 
348 /** gets number of calls to propagation conflict analysis */
350  SCIP_CONFLICT* conflict /**< conflict analysis data */
351  );
352 
353 /** gets number of calls to propagation conflict analysis that yield at least one conflict constraint */
355  SCIP_CONFLICT* conflict /**< conflict analysis data */
356  );
357 
358 /** gets number of conflict constraints detected in propagation conflict analysis */
360  SCIP_CONFLICT* conflict /**< conflict analysis data */
361  );
362 
363 /** gets total number of literals in conflict constraints created in propagation conflict analysis */
365  SCIP_CONFLICT* conflict /**< conflict analysis data */
366  );
367 
368 /** gets number of reconvergence constraints detected in propagation conflict analysis */
370  SCIP_CONFLICT* conflict /**< conflict analysis data */
371  );
372 
373 /** gets total number of literals in reconvergence constraints created in propagation conflict analysis */
375  SCIP_CONFLICT* conflict /**< conflict analysis data */
376  );
377 
378 
379 
380 
381 /*
382  * Infeasible LP Conflict Analysis
383  */
384 
385 /** analyzes an infeasible or bound exceeding LP to find out the bound changes on variables that were responsible for the
386  * infeasibility or for exceeding the primal bound;
387  * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
388  * a conflict constraint out of the resulting conflict set;
389  * updates statistics for infeasible or bound exceeding LP conflict analysis
390  */
392  SCIP_CONFLICT* conflict, /**< conflict analysis data */
393  SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
394  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
395  SCIP_SET* set, /**< global SCIP settings */
396  SCIP_STAT* stat, /**< problem statistics */
397  SCIP_PROB* transprob, /**< transformed problem */
398  SCIP_PROB* origprob, /**< original problem */
399  SCIP_TREE* tree, /**< branch and bound tree */
400  SCIP_REOPT* reopt, /**< reoptimization data structure */
401  SCIP_LP* lp, /**< LP data */
402  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
403  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
404  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
405  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
406  );
407 
408 /** gets time in seconds used for analyzing infeasible LP conflicts */
410  SCIP_CONFLICT* conflict /**< conflict analysis data */
411  );
412 
413 /** gets number of calls to infeasible LP conflict analysis */
415  SCIP_CONFLICT* conflict /**< conflict analysis data */
416  );
417 
418 /** gets number of calls to infeasible LP conflict analysis that yield at least one conflict constraint */
420  SCIP_CONFLICT* conflict /**< conflict analysis data */
421  );
422 
423 /** gets number of conflict constraints detected in infeasible LP conflict analysis */
425  SCIP_CONFLICT* conflict /**< conflict analysis data */
426  );
427 
428 /** gets total number of literals in conflict constraints created in infeasible LP conflict analysis */
430  SCIP_CONFLICT* conflict /**< conflict analysis data */
431  );
432 
433 /** gets number of reconvergence constraints detected in infeasible LP conflict analysis */
435  SCIP_CONFLICT* conflict /**< conflict analysis data */
436  );
437 
438 /** gets total number of literals in reconvergence constraints created in infeasible LP conflict analysis */
440  SCIP_CONFLICT* conflict /**< conflict analysis data */
441  );
442 
443 /** gets number of LP iterations in infeasible LP conflict analysis */
445  SCIP_CONFLICT* conflict /**< conflict analysis data */
446  );
447 
448 /** gets time in seconds used for analyzing bound exceeding LP conflicts */
450  SCIP_CONFLICT* conflict /**< conflict analysis data */
451  );
452 
453 /** gets number of calls to bound exceeding LP conflict analysis */
455  SCIP_CONFLICT* conflict /**< conflict analysis data */
456  );
457 
458 /** gets number of calls to bound exceeding LP conflict analysis that yield at least one conflict constraint */
460  SCIP_CONFLICT* conflict /**< conflict analysis data */
461  );
462 
463 /** gets number of conflict constraints detected in bound exceeding LP conflict analysis */
465  SCIP_CONFLICT* conflict /**< conflict analysis data */
466  );
467 
468 /** gets total number of literals in conflict constraints created in bound exceeding LP conflict analysis */
470  SCIP_CONFLICT* conflict /**< conflict analysis data */
471  );
472 
473 /** gets number of reconvergence constraints detected in bound exceeding LP conflict analysis */
475  SCIP_CONFLICT* conflict /**< conflict analysis data */
476  );
477 
478 /** gets total number of literals in reconvergence constraints created in bound exceeding LP conflict analysis */
480  SCIP_CONFLICT* conflict /**< conflict analysis data */
481  );
482 
483 /** gets number of LP iterations in bound exceeding LP conflict analysis */
485  SCIP_CONFLICT* conflict /**< conflict analysis data */
486  );
487 
488 
489 
490 
491 /*
492  * infeasible strong branching conflict analysis
493  */
494 
495 /** analyses infeasible strong branching sub problems for conflicts */
497  SCIP_CONFLICT* conflict, /**< conflict analysis data */
498  SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
499  BMS_BLKMEM* blkmem, /**< block memory buffers */
500  SCIP_SET* set, /**< global SCIP settings */
501  SCIP_STAT* stat, /**< dynamic problem statistics */
502  SCIP_PROB* transprob, /**< transformed problem */
503  SCIP_PROB* origprob, /**< original problem */
504  SCIP_TREE* tree, /**< branch and bound tree */
505  SCIP_REOPT* reopt, /**< reoptimization data structure */
506  SCIP_LP* lp, /**< LP data */
507  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
508  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
509  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
510  SCIP_COL* col, /**< LP column with at least one infeasible strong branching subproblem */
511  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
512  * infeasible downwards branch, or NULL */
513  SCIP_Bool* upconflict /**< pointer to store whether a conflict constraint was created for an
514  * infeasible upwards branch, or NULL */
515  );
516 
517 /** gets time in seconds used for analyzing infeasible strong branching conflicts */
519  SCIP_CONFLICT* conflict /**< conflict analysis data */
520  );
521 
522 /** gets number of successful calls to dual proof analysis derived from infeasible LPs */
524  SCIP_CONFLICT* conflict /**< conflict analysis data */
525  );
526 
527 /** gets number of globally valid dual proof constraints derived from infeasible LPs */
529  SCIP_CONFLICT* conflict /**< conflict analysis data */
530  );
531 
532 /** gets number of locally valid dual proof constraints derived from infeasible LPs */
534  SCIP_CONFLICT* conflict /**< conflict analysis data */
535  );
536 
537 /** gets average length of dual proof constraints derived from infeasible LPs */
539  SCIP_CONFLICT* conflict /**< conflict analysis data */
540  );
541 
542 /** gets number of successfully analyzed dual proofs derived from bound exceeding LPs */
544  SCIP_CONFLICT* conflict /**< conflict analysis data */
545  );
546 
547 /** gets number of globally applied dual proofs derived from bound exceeding LPs */
549  SCIP_CONFLICT* conflict /**< conflict analysis data */
550  );
551 
552 /** gets number of locally applied dual proofs derived from bound exceeding LPs */
554  SCIP_CONFLICT* conflict /**< conflict analysis data */
555  );
556 
557 /** gets average length of dual proofs derived from bound exceeding LPs */
559  SCIP_CONFLICT* conflict /**< conflict analysis data */
560  );
561 
562 /** gets number of calls to infeasible strong branching conflict analysis */
564  SCIP_CONFLICT* conflict /**< conflict analysis data */
565  );
566 
567 /** gets number of calls to infeasible strong branching conflict analysis that yield at least one conflict constraint */
569  SCIP_CONFLICT* conflict /**< conflict analysis data */
570  );
571 
572 /** gets number of conflict constraints detected in infeasible strong branching conflict analysis */
574  SCIP_CONFLICT* conflict /**< conflict analysis data */
575  );
576 
577 /** gets total number of literals in conflict constraints created in infeasible strong branching conflict analysis */
579  SCIP_CONFLICT* conflict /**< conflict analysis data */
580  );
581 
582 /** gets number of reconvergence constraints detected in infeasible strong branching conflict analysis */
584  SCIP_CONFLICT* conflict /**< conflict analysis data */
585  );
586 
587 /** gets total number of literals in reconvergence constraints created in infeasible strong branching conflict analysis */
589  SCIP_CONFLICT* conflict /**< conflict analysis data */
590  );
591 
592 /** gets number of LP iterations in infeasible strong branching conflict analysis */
594  SCIP_CONFLICT* conflict /**< conflict analysis data */
595  );
596 
597 
598 
599 
600 /*
601  * pseudo solution conflict analysis
602  */
603 
604 /** analyzes a pseudo solution with objective value exceeding the current cutoff to find out the bound changes on
605  * variables that were responsible for the objective value degradation;
606  * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
607  * a conflict constraint out of the resulting conflict set;
608  * updates statistics for pseudo solution conflict analysis
609  */
611  SCIP_CONFLICT* conflict, /**< conflict analysis data */
612  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
613  SCIP_SET* set, /**< global SCIP settings */
614  SCIP_STAT* stat, /**< problem statistics */
615  SCIP_PROB* transprob, /**< transformed problem */
616  SCIP_PROB* origprob, /**< original problem */
617  SCIP_TREE* tree, /**< branch and bound tree */
618  SCIP_REOPT* reopt, /**< reoptimization data structure */
619  SCIP_LP* lp, /**< LP data */
620  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
621  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
622  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
623  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
624  );
625 
626 /** gets time in seconds used for analyzing pseudo solution conflicts */
628  SCIP_CONFLICT* conflict /**< conflict analysis data */
629  );
630 
631 /** gets number of calls to pseudo solution conflict analysis */
633  SCIP_CONFLICT* conflict /**< conflict analysis data */
634  );
635 
636 /** gets number of calls to pseudo solution conflict analysis that yield at least one conflict constraint */
638  SCIP_CONFLICT* conflict /**< conflict analysis data */
639  );
640 
641 /** gets number of conflict constraints detected in pseudo solution conflict analysis */
643  SCIP_CONFLICT* conflict /**< conflict analysis data */
644  );
645 
646 /** gets total number of literals in conflict constraints created in pseudo solution conflict analysis */
648  SCIP_CONFLICT* conflict /**< conflict analysis data */
649  );
650 
651 /** gets number of reconvergence constraints detected in pseudo solution conflict analysis */
653  SCIP_CONFLICT* conflict /**< conflict analysis data */
654  );
655 
656 /** gets total number of literals in reconvergence constraints created in pseudo solution conflict analysis */
658  SCIP_CONFLICT* conflict /**< conflict analysis data */
659  );
660 
661 /** enables or disables all clocks of \p conflict, depending on the value of the flag */
663  SCIP_CONFLICT* conflict, /**< the conflict analysis data for which all clocks should be enabled or disabled */
664  SCIP_Bool enable /**< should the clocks of the conflict analysis data be enabled? */
665  );
666 
667 #ifdef __cplusplus
668 }
669 #endif
670 
671 #endif
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:52
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition: type_lp.h:50
SCIP_Longint SCIPconflictGetNBoundexceedingLPCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:8894
SCIP_Longint SCIPconflictGetNPseudoConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:9562
SCIP_Longint SCIPconflictGetNPropReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:5767
void SCIPconflicthdlrSetCopy(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTCOPY((*conflictcopy)))
Definition: conflict.c:697
SCIP_Longint SCIPconflictGetNDualproofsInfLocal(SCIP_CONFLICT *conflict)
Definition: conflict.c:9238
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_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable)
Definition: conflict.c:3528
type definitions for implications, variable bounds, and cliques
SCIP_Longint SCIPconflictGetNDualproofsBndSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:9258
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:8914
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:8954
type definitions for conflict store
SCIP_Real SCIPconflictGetGlobalApplTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:5697
SCIP_Longint SCIPconflictGetNLocalChgBds(SCIP_CONFLICT *conflict)
Definition: conflict.c:3797
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:4448
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:8864
int SCIPconflictGetNConflicts(SCIP_CONFLICT *conflict)
Definition: conflict.c:3737
SCIP_RETCODE SCIPconflicthdlrExitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:605
SCIP_RETCODE SCIPconflicthdlrExec(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set, SCIP_NODE *node, SCIP_NODE *validnode, SCIP_BDCHGINFO **bdchginfos, SCIP_Real *relaxedbds, int nbdchginfos, SCIP_CONFTYPE conftype, SCIP_Bool usescutoffbound, SCIP_Bool resolved, SCIP_RESULT *result)
Definition: conflict.c:629
SCIP_Real SCIPconflictGetPseudoTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:9532
SCIP_Longint SCIPconflictGetNPropReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:5757
SCIP_RETCODE SCIPconflictInit(SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_CONFTYPE conftype, SCIP_Bool usescutoffbound)
Definition: conflict.c:4029
SCIP_Longint SCIPconflictGetNDualproofsInfGlobal(SCIP_CONFLICT *conflict)
Definition: conflict.c:9228
SCIP_Longint SCIPconflictGetNPropCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:5717
SCIP_Longint SCIPconflictGetNPseudoSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:9552
SCIP_Longint SCIPconflictGetNDualproofsBndLocal(SCIP_CONFLICT *conflict)
Definition: conflict.c:9278
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
type definitions for global SCIP settings
SCIP_Longint SCIPconflictGetNAppliedLocalConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:3807
SCIP_RETCODE SCIPconflicthdlrFree(SCIP_CONFLICTHDLR **conflicthdlr, SCIP_SET *set)
Definition: conflict.c:485
SCIP_Longint SCIPconflictGetNStrongbranchConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:9328
SCIP_Longint SCIPconflictGetNDualproofsBndNonzeros(SCIP_CONFLICT *conflict)
Definition: conflict.c:9288
void SCIPconflicthdlrSetFree(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTFREE((*conflictfree)))
Definition: conflict.c:708
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:8944
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:8924
SCIP_RETCODE SCIPconflictFree(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem)
Definition: conflict.c:3981
SCIP_Longint SCIPconflictGetNPropSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:5727
type definitions for return codes for SCIP methods
SCIP_Real SCIPconflictGetPropTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:5707
type definitions for collecting reoptimization information
#define SCIP_DECL_CONFLICTEXIT(x)
SCIP_Longint SCIPconflictGetNDualproofsBndGlobal(SCIP_CONFLICT *conflict)
Definition: conflict.c:9268
type definitions for branching rules
type definitions for problem statistics
void SCIPconflicthdlrSetInit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINIT((*conflictinit)))
Definition: conflict.c:719
SCIP_RETCODE SCIPconflicthdlrCopyInclude(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:380
void SCIPconflicthdlrSetExit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXIT((*conflictexit)))
Definition: conflict.c:730
type definitions for LP management
SCIP_Longint SCIPconflictGetNAppliedLocalLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:3817
SCIP_RETCODE SCIPconflicthdlrExit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:550
#define SCIP_DECL_CONFLICTINITSOL(x)
SCIP_Longint SCIPconflictGetNPseudoReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:9592
#define SCIP_DECL_CONFLICTEXEC(x)
SCIP_Longint SCIPconflictGetNPseudoCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:9542
SCIP_Longint SCIPconflictGetNAppliedGlobalConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:3777
SCIP_Longint SCIPconflictGetNStrongbranchIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:9358
type definitions for SCIP&#39;s main datastructure
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:8934
struct SCIP_ConflicthdlrData SCIP_CONFLICTHDLRDATA
Definition: type_conflict.h:40
type definitions for problem variables
#define SCIP_DECL_CONFLICTCOPY(x)
Definition: type_conflict.h:77
SCIP_Longint SCIPconflictGetNPseudoConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:9572
void SCIPconflicthdlrEnableOrDisableClocks(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_Bool enable)
Definition: conflict.c:817
type definitions for conflict analysis
type definitions for managing events
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:9348
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:8834
#define SCIP_Bool
Definition: def.h:70
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:9582
SCIP_RETCODE SCIPconflictAnalyzeStrongbranch(SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_COL *col, SCIP_Bool *downconflict, SCIP_Bool *upconflict)
Definition: conflict.c:8971
SCIP_Real SCIPconflictGetVarLb(SCIP_CONFLICT *conflict, SCIP_VAR *var)
Definition: conflict.c:4672
SCIP_Real SCIPconflictGetBoundexceedingLPTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:8884
SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:8904
type definitions for branch and bound tree
SCIP_Real SCIPconflictGetStrongbranchTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:9208
SCIP_Longint SCIPconflictGetNDualproofsInfNonzeros(SCIP_CONFLICT *conflict)
Definition: conflict.c:9248
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:4612
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:4387
SCIP_Longint SCIPconflictGetNAppliedLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:3757
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_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *success)
Definition: conflict.c:9380
SCIP_Real SCIPconflictGetInfeasibleLPTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:8804
void SCIPconflicthdlrSetInitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)))
Definition: conflict.c:741
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:8874
void SCIPconflicthdlrSetExitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)))
Definition: conflict.c:752
#define SCIP_Real
Definition: def.h:163
result codes for SCIP callback methods
enum SCIP_ConflictType SCIP_CONFTYPE
Definition: type_conflict.h:56
SCIP_Longint SCIPconflictGetNAppliedConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:3747
SCIP_RETCODE SCIPconflictAnalyzeLP(SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *success)
Definition: conflict.c:8657
SCIP_Longint SCIPconflictGetNStrongbranchConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:9318
#define SCIP_DECL_CONFLICTINIT(x)
Definition: type_conflict.h:93
SCIP_RETCODE SCIPconflicthdlrInit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:513
SCIP_Longint SCIPconflictGetNInfeasibleLPSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:8824
#define SCIP_Longint
Definition: def.h:148
SCIP_Longint SCIPconflictGetNAppliedGlobalLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:3787
SCIP_Longint SCIPconflictGetNStrongbranchSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:9308
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:9338
SCIP_RETCODE SCIPconflictCreate(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: conflict.c:3891
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:8854
type definitions for message output methods
SCIP_Longint SCIPconflictGetNStrongbranchCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:9298
SCIP_Longint SCIPconflictGetNPropConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:5737
SCIP_Real SCIPconflictGetVarUb(SCIP_CONFLICT *conflict, SCIP_VAR *var)
Definition: conflict.c:4689
common defines and data types used in all packages of SCIP
void SCIPconflicthdlrSetPriority(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set, int priority)
Definition: conflict.c:793
SCIP_Longint SCIPconflictGetNInfeasibleLPCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:8814
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:429
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:5639
#define SCIP_DECL_CONFLICTFREE(x)
Definition: type_conflict.h:85
SCIP_Bool SCIPconflictApplicable(SCIP_SET *set)
Definition: conflict.c:3875
SCIP_Longint SCIPconflictGetNPropConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:5747
void SCIPconflictEnableOrDisableClocks(SCIP_CONFLICT *conflict, SCIP_Bool enable)
Definition: conflict.c:9603
SCIP_Longint SCIPconflictGetNGlobalChgBds(SCIP_CONFLICT *conflict)
Definition: conflict.c:3767
SCIP_Longint SCIPconflictGetNDualproofsInfSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:9218
SCIP_RETCODE SCIPconflicthdlrInitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:581
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:454
#define SCIP_DECL_CONFLICTEXITSOL(x)
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:8844
memory allocation routines