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-2016 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_REOPT* reopt, /**< reoptimization data structure */
302  SCIP_LP* lp, /**< current LP data */
303  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
304  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
305  SCIP_CLIQUETABLE* cliquetable /**< clique table data structure */
306  );
307 
308 /** returns the current number of conflict sets in the conflict set storage */
309 extern
311  SCIP_CONFLICT* conflict /**< conflict analysis data */
312  );
313 
314 /** returns the total number of conflict constraints that were added to the problem */
315 extern
317  SCIP_CONFLICT* conflict /**< conflict analysis data */
318  );
319 
320 /** returns the total number of literals in conflict constraints that were added to the problem */
321 extern
323  SCIP_CONFLICT* conflict /**< conflict analysis data */
324  );
325 
326 /** returns the total number of global bound changes applied by the conflict analysis */
327 extern
329  SCIP_CONFLICT* conflict /**< conflict analysis data */
330  );
331 
332 /** returns the total number of conflict constraints that were added globally to the problem */
333 extern
335  SCIP_CONFLICT* conflict /**< conflict analysis data */
336  );
337 
338 /** returns the total number of literals in conflict constraints that were added globally to the problem */
339 extern
341  SCIP_CONFLICT* conflict /**< conflict analysis data */
342  );
343 
344 /** returns the total number of local bound changes applied by the conflict analysis */
345 extern
347  SCIP_CONFLICT* conflict /**< conflict analysis data */
348  );
349 
350 /** returns the total number of conflict constraints that were added locally to the problem */
351 extern
353  SCIP_CONFLICT* conflict /**< conflict analysis data */
354  );
355 
356 /** returns the total number of literals in conflict constraints that were added locally to the problem */
357 extern
359  SCIP_CONFLICT* conflict /**< conflict analysis data */
360  );
361 
362 /** gets time in seconds used for preprocessing global conflict constraint before appliance */
363 extern
365  SCIP_CONFLICT* conflict /**< conflict analysis data */
366  );
367 
368 /** gets time in seconds used for analyzing propagation conflicts */
369 extern
371  SCIP_CONFLICT* conflict /**< conflict analysis data */
372  );
373 
374 /** gets number of calls to propagation conflict analysis */
375 extern
377  SCIP_CONFLICT* conflict /**< conflict analysis data */
378  );
379 
380 /** gets number of calls to propagation conflict analysis that yield at least one conflict constraint */
381 extern
383  SCIP_CONFLICT* conflict /**< conflict analysis data */
384  );
385 
386 /** gets number of conflict constraints detected in propagation conflict analysis */
387 extern
389  SCIP_CONFLICT* conflict /**< conflict analysis data */
390  );
391 
392 /** gets total number of literals in conflict constraints created in propagation conflict analysis */
393 extern
395  SCIP_CONFLICT* conflict /**< conflict analysis data */
396  );
397 
398 /** gets number of reconvergence constraints detected in propagation conflict analysis */
399 extern
401  SCIP_CONFLICT* conflict /**< conflict analysis data */
402  );
403 
404 /** gets total number of literals in reconvergence constraints created in propagation conflict analysis */
405 extern
407  SCIP_CONFLICT* conflict /**< conflict analysis data */
408  );
409 
410 
411 
412 
413 /*
414  * Infeasible LP Conflict Analysis
415  */
416 
417 /** analyzes an infeasible or bound exceeding LP to find out the bound changes on variables that were responsible for the
418  * infeasibility or for exceeding the primal bound;
419  * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
420  * a conflict constraint out of the resulting conflict set;
421  * updates statistics for infeasible or bound exceeding LP conflict analysis
422  */
423 extern
425  SCIP_CONFLICT* conflict, /**< conflict analysis data */
426  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
427  SCIP_SET* set, /**< global SCIP settings */
428  SCIP_STAT* stat, /**< problem statistics */
429  SCIP_PROB* transprob, /**< transformed problem */
430  SCIP_PROB* origprob, /**< original problem */
431  SCIP_TREE* tree, /**< branch and bound tree */
432  SCIP_REOPT* reopt, /**< reoptimization data structure */
433  SCIP_LP* lp, /**< LP data */
434  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
435  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
436  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
437  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
438  );
439 
440 /** gets time in seconds used for analyzing infeasible LP conflicts */
441 extern
443  SCIP_CONFLICT* conflict /**< conflict analysis data */
444  );
445 
446 /** gets number of calls to infeasible LP conflict analysis */
447 extern
449  SCIP_CONFLICT* conflict /**< conflict analysis data */
450  );
451 
452 /** gets number of calls to infeasible LP conflict analysis that yield at least one conflict constraint */
453 extern
455  SCIP_CONFLICT* conflict /**< conflict analysis data */
456  );
457 
458 /** gets number of conflict constraints detected in infeasible LP conflict analysis */
459 extern
461  SCIP_CONFLICT* conflict /**< conflict analysis data */
462  );
463 
464 /** gets total number of literals in conflict constraints created in infeasible LP conflict analysis */
465 extern
467  SCIP_CONFLICT* conflict /**< conflict analysis data */
468  );
469 
470 /** gets number of reconvergence constraints detected in infeasible LP conflict analysis */
471 extern
473  SCIP_CONFLICT* conflict /**< conflict analysis data */
474  );
475 
476 /** gets total number of literals in reconvergence constraints created in infeasible LP conflict analysis */
477 extern
479  SCIP_CONFLICT* conflict /**< conflict analysis data */
480  );
481 
482 /** gets number of LP iterations in infeasible LP conflict analysis */
483 extern
485  SCIP_CONFLICT* conflict /**< conflict analysis data */
486  );
487 
488 /** gets time in seconds used for analyzing bound exceeding LP conflicts */
489 extern
491  SCIP_CONFLICT* conflict /**< conflict analysis data */
492  );
493 
494 /** gets number of calls to bound exceeding LP conflict analysis */
495 extern
497  SCIP_CONFLICT* conflict /**< conflict analysis data */
498  );
499 
500 /** gets number of calls to bound exceeding LP conflict analysis that yield at least one conflict constraint */
501 extern
503  SCIP_CONFLICT* conflict /**< conflict analysis data */
504  );
505 
506 /** gets number of conflict constraints detected in bound exceeding LP conflict analysis */
507 extern
509  SCIP_CONFLICT* conflict /**< conflict analysis data */
510  );
511 
512 /** gets total number of literals in conflict constraints created in bound exceeding LP conflict analysis */
513 extern
515  SCIP_CONFLICT* conflict /**< conflict analysis data */
516  );
517 
518 /** gets number of reconvergence constraints detected in bound exceeding LP conflict analysis */
519 extern
521  SCIP_CONFLICT* conflict /**< conflict analysis data */
522  );
523 
524 /** gets total number of literals in reconvergence constraints created in bound exceeding LP conflict analysis */
525 extern
527  SCIP_CONFLICT* conflict /**< conflict analysis data */
528  );
529 
530 /** gets number of LP iterations in bound exceeding LP conflict analysis */
531 extern
533  SCIP_CONFLICT* conflict /**< conflict analysis data */
534  );
535 
536 
537 
538 
539 /*
540  * infeasible strong branching conflict analysis
541  */
542 
543 /** analyses infeasible strong branching sub problems for conflicts */
544 extern
546  SCIP_CONFLICT* conflict, /**< conflict analysis data */
547  BMS_BLKMEM* blkmem, /**< block memory buffers */
548  SCIP_SET* set, /**< global SCIP settings */
549  SCIP_STAT* stat, /**< dynamic problem statistics */
550  SCIP_PROB* transprob, /**< transformed problem */
551  SCIP_PROB* origprob, /**< original problem */
552  SCIP_TREE* tree, /**< branch and bound tree */
553  SCIP_REOPT* reopt, /**< reoptimization data structure */
554  SCIP_LP* lp, /**< LP data */
555  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
556  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
557  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
558  SCIP_COL* col, /**< LP column with at least one infeasible strong branching subproblem */
559  SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
560  * infeasible downwards branch, or NULL */
561  SCIP_Bool* upconflict /**< pointer to store whether a conflict constraint was created for an
562  * infeasible upwards branch, or NULL */
563  );
564 
565 /** gets time in seconds used for analyzing infeasible strong branching conflicts */
566 extern
568  SCIP_CONFLICT* conflict /**< conflict analysis data */
569  );
570 
571 /** gets number of calls to infeasible strong branching conflict analysis */
572 extern
574  SCIP_CONFLICT* conflict /**< conflict analysis data */
575  );
576 
577 /** gets number of calls to infeasible strong branching conflict analysis that yield at least one conflict constraint */
578 extern
580  SCIP_CONFLICT* conflict /**< conflict analysis data */
581  );
582 
583 /** gets number of conflict constraints detected in infeasible strong branching conflict analysis */
584 extern
586  SCIP_CONFLICT* conflict /**< conflict analysis data */
587  );
588 
589 /** gets total number of literals in conflict constraints created in infeasible strong branching conflict analysis */
590 extern
592  SCIP_CONFLICT* conflict /**< conflict analysis data */
593  );
594 
595 /** gets number of reconvergence constraints detected in infeasible strong branching conflict analysis */
596 extern
598  SCIP_CONFLICT* conflict /**< conflict analysis data */
599  );
600 
601 /** gets total number of literals in reconvergence constraints created in infeasible strong branching conflict analysis */
602 extern
604  SCIP_CONFLICT* conflict /**< conflict analysis data */
605  );
606 
607 /** gets number of LP iterations in infeasible strong branching conflict analysis */
608 extern
610  SCIP_CONFLICT* conflict /**< conflict analysis data */
611  );
612 
613 
614 
615 
616 /*
617  * pseudo solution conflict analysis
618  */
619 
620 /** analyzes a pseudo solution with objective value exceeding the current cutoff to find out the bound changes on
621  * variables that were responsible for the objective value degradation;
622  * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
623  * a conflict constraint out of the resulting conflict set;
624  * updates statistics for pseudo solution conflict analysis
625  */
626 extern
628  SCIP_CONFLICT* conflict, /**< conflict analysis data */
629  BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
630  SCIP_SET* set, /**< global SCIP settings */
631  SCIP_STAT* stat, /**< problem statistics */
632  SCIP_PROB* transprob, /**< transformed problem */
633  SCIP_PROB* origprob, /**< original problem */
634  SCIP_TREE* tree, /**< branch and bound tree */
635  SCIP_REOPT* reopt, /**< reoptimization data structure */
636  SCIP_LP* lp, /**< LP data */
637  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
638  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
639  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
640  SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
641  );
642 
643 /** gets time in seconds used for analyzing pseudo solution conflicts */
644 extern
646  SCIP_CONFLICT* conflict /**< conflict analysis data */
647  );
648 
649 /** gets number of calls to pseudo solution conflict analysis */
650 extern
652  SCIP_CONFLICT* conflict /**< conflict analysis data */
653  );
654 
655 /** gets number of calls to pseudo solution conflict analysis that yield at least one conflict constraint */
656 extern
658  SCIP_CONFLICT* conflict /**< conflict analysis data */
659  );
660 
661 /** gets number of conflict constraints detected in pseudo solution conflict analysis */
662 extern
664  SCIP_CONFLICT* conflict /**< conflict analysis data */
665  );
666 
667 /** gets total number of literals in conflict constraints created in pseudo solution conflict analysis */
668 extern
670  SCIP_CONFLICT* conflict /**< conflict analysis data */
671  );
672 
673 /** gets number of reconvergence constraints detected in pseudo solution conflict analysis */
674 extern
676  SCIP_CONFLICT* conflict /**< conflict analysis data */
677  );
678 
679 /** gets total number of literals in reconvergence constraints created in pseudo solution conflict analysis */
680 extern
682  SCIP_CONFLICT* conflict /**< conflict analysis data */
683  );
684 
685 /** enables or disables all clocks of \p conflict, depending on the value of the flag */
686 extern
688  SCIP_CONFLICT* conflict, /**< the conflict analysis data for which all clocks should be enabled or disabled */
689  SCIP_Bool enable /**< should the clocks of the conflict analysis data be enabled? */
690  );
691 
692 #ifdef __cplusplus
693 }
694 #endif
695 
696 #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:6369
SCIP_Longint SCIPconflictGetNPseudoConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6941
SCIP_Longint SCIPconflictGetNPropReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:4343
void SCIPconflicthdlrSetCopy(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTCOPY((*conflictcopy)))
Definition: conflict.c:640
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:2184
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6389
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:6429
SCIP_Real SCIPconflictGetGlobalApplTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:4273
SCIP_Longint SCIPconflictGetNLocalChgBds(SCIP_CONFLICT *conflict)
Definition: conflict.c:2422
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:3043
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6339
int SCIPconflictGetNConflicts(SCIP_CONFLICT *conflict)
Definition: conflict.c:2362
SCIP_RETCODE SCIPconflicthdlrExitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:551
SCIP_Real SCIPconflictGetPseudoTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6911
SCIP_Longint SCIPconflictGetNPropReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:4333
SCIP_Longint SCIPconflictGetNPropCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:4293
SCIP_Longint SCIPconflictGetNPseudoSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:6931
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:2432
SCIP_RETCODE SCIPconflicthdlrFree(SCIP_CONFLICTHDLR **conflicthdlr, SCIP_SET *set)
Definition: conflict.c:432
SCIP_Longint SCIPconflictGetNStrongbranchConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6717
void SCIPconflicthdlrSetFree(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTFREE((*conflictfree)))
Definition: conflict.c:651
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6419
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6399
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_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:6446
SCIP_RETCODE SCIPconflictFree(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem)
Definition: conflict.c:2590
SCIP_Longint SCIPconflictGetNPropSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:4303
type definitions for return codes for SCIP methods
SCIP_Real SCIPconflictGetPropTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:4283
#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_RETCODE SCIPconflictAnalyzeLP(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:6141
SCIP_Longint SCIPconflictGetNAppliedLocalLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:2442
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:6971
#define SCIP_DECL_CONFLICTEXEC(x)
SCIP_Longint SCIPconflictGetNPseudoCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:6921
SCIP_Longint SCIPconflictGetNAppliedGlobalConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:2402
SCIP_Longint SCIPconflictGetNStrongbranchIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:6747
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6409
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:2635
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:6951
void SCIPconflicthdlrEnableOrDisableClocks(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_Bool enable)
Definition: conflict.c:760
type definitions for conflict analysis
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:6737
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6309
#define SCIP_Bool
Definition: def.h:53
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6961
SCIP_Real SCIPconflictGetVarLb(SCIP_CONFLICT *conflict, SCIP_VAR *var)
Definition: conflict.c:3267
SCIP_Real SCIPconflictGetBoundexceedingLPTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6359
SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:6379
type definitions for branch and bound tree
SCIP_Real SCIPconflictGetStrongbranchTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6677
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:3207
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:2982
SCIP_Longint SCIPconflictGetNAppliedLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:2382
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:6769
SCIP_Real SCIPconflictGetInfeasibleLPTime(SCIP_CONFLICT *conflict)
Definition: conflict.c:6279
void SCIPconflicthdlrSetInitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)))
Definition: conflict.c:684
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations(SCIP_CONFLICT *conflict)
Definition: conflict.c:6349
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:127
SCIP_Longint SCIPconflictGetNAppliedConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:2372
SCIP_Longint SCIPconflictGetNStrongbranchConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6707
#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:6299
#define SCIP_Longint
Definition: def.h:112
SCIP_Longint SCIPconflictGetNAppliedGlobalLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:2412
SCIP_Longint SCIPconflictGetNStrongbranchSuccess(SCIP_CONFLICT *conflict)
Definition: conflict.c:6697
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6727
SCIP_RETCODE SCIPconflictCreate(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: conflict.c:2513
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:6329
SCIP_Longint SCIPconflictGetNStrongbranchCalls(SCIP_CONFLICT *conflict)
Definition: conflict.c:6687
SCIP_Longint SCIPconflictGetNPropConflictConss(SCIP_CONFLICT *conflict)
Definition: conflict.c:4313
SCIP_Real SCIPconflictGetVarUb(SCIP_CONFLICT *conflict, SCIP_VAR *var)
Definition: conflict.c:3284
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:6289
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:392
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:4214
#define SCIP_DECL_CONFLICTFREE(x)
Definition: type_conflict.h:60
SCIP_Bool SCIPconflictApplicable(SCIP_SET *set)
Definition: conflict.c:2497
SCIP_Longint SCIPconflictGetNPropConflictLiterals(SCIP_CONFLICT *conflict)
Definition: conflict.c:4323
void SCIPconflictEnableOrDisableClocks(SCIP_CONFLICT *conflict, SCIP_Bool enable)
Definition: conflict.c:6981
SCIP_Longint SCIPconflictGetNGlobalChgBds(SCIP_CONFLICT *conflict)
Definition: conflict.c:2392
SCIP_RETCODE SCIPconflicthdlrInitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:527
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:6319
memory allocation routines