Scippy

SCIP

Solving Constraint Integer Programs

branch.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-2018 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 branch.h
17  * @ingroup INTERNALAPI
18  * @brief internal methods for branching rules and branching candidate storage
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_BRANCH_H__
25 #define __SCIP_BRANCH_H__
26 
27 
28 #include "scip/def.h"
29 #include "blockmemshell/memory.h"
30 #include "scip/type_retcode.h"
31 #include "scip/type_result.h"
32 #include "scip/type_set.h"
33 #include "scip/type_stat.h"
34 #include "scip/type_misc.h"
35 #include "scip/type_event.h"
36 #include "scip/type_lp.h"
37 #include "scip/type_var.h"
38 #include "scip/type_prob.h"
39 #include "scip/type_tree.h"
40 #include "scip/type_sepastore.h"
41 #include "scip/type_branch.h"
42 #include "scip/pub_branch.h"
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 /*
49  * branching candidate storage methods
50  */
51 
52 /** creates a branching candidate storage */
53 extern
55  SCIP_BRANCHCAND** branchcand /**< pointer to store branching candidate storage */
56  );
57 
58 /** frees branching candidate storage */
59 extern
61  SCIP_BRANCHCAND** branchcand /**< pointer to store branching candidate storage */
62  );
63 
64 /** invalidates branching candidates storage */
65 extern
67  SCIP_BRANCHCAND* branchcand /**< pointer to store branching candidate storage */
68  );
69 
70 /** gets branching candidates for LP solution branching (fractional variables) */
71 extern
73  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
74  SCIP_SET* set, /**< global SCIP settings */
75  SCIP_STAT* stat, /**< problem statistics */
76  SCIP_LP* lp, /**< current LP data */
77  SCIP_VAR*** lpcands, /**< pointer to store the array of LP branching candidates, or NULL */
78  SCIP_Real** lpcandssol, /**< pointer to store the array of LP candidate solution values, or NULL */
79  SCIP_Real** lpcandsfrac, /**< pointer to store the array of LP candidate fractionalities, or NULL */
80  int* nlpcands, /**< pointer to store the number of LP branching candidates, or NULL */
81  int* npriolpcands, /**< pointer to store the number of candidates with maximal priority, or NULL */
82  int* nfracimplvars /**< pointer to store the number of implicit fractional variables, or NULL */
83  );
84 
85 
86 /** gets external branching candidates */
87 extern
89  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
90  SCIP_VAR*** externcands, /**< pointer to store the array of external branching candidates, or NULL */
91  SCIP_Real** externcandssol, /**< pointer to store the array of external candidate solution values, or NULL */
92  SCIP_Real** externcandsscore, /**< pointer to store the array of external candidate scores, or NULL */
93  int* nexterncands, /**< pointer to store the number of external branching candidates, or NULL */
94  int* nprioexterncands, /**< pointer to store the number of candidates with maximal priority, or NULL */
95  int* nprioexternbins, /**< pointer to store the number of binary candidates with maximal priority, or NULL */
96  int* nprioexternints, /**< pointer to store the number of integer candidates with maximal priority, or NULL */
97  int* nprioexternimpls /**< pointer to store the number of implicit integer candidates with maximal priority,
98  * or NULL */
99  );
100 
101 /** gets maximal branching priority of LP branching candidates */
102 extern
104  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
105  );
106 
107 /** gets number of LP branching candidates with maximal branch priority */
108 extern
110  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
111  );
112 
113 /** gets maximal branching priority of external branching candidates */
114 extern
116  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
117  );
118 
119 /** gets number of external branching candidates */
120 extern
122  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
123  );
124 
125 /** gets number of external branching candidates with maximal branch priority */
126 extern
128  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
129  );
130 
131 /** gets number of binary external branching candidates with maximal branch priority */
132 extern
134  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
135  );
136 
137 /** gets number of integer external branching candidates with maximal branch priority */
138 extern
140  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
141  );
142 
143 /** gets number of implicit integer external branching candidates with maximal branch priority */
144 extern
146  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
147  );
148 
149 /** gets number of continuous external branching candidates with maximal branch priority */
150 extern
152  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
153  );
154 
155 /** insert variable, its score and its solution value into the external branching candidate storage
156  * the absolute difference of the current lower and upper bounds of the variable must be at least epsilon
157  */
158 extern
160  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
161  SCIP_SET* set, /**< global SCIP settings */
162  SCIP_VAR* var, /**< variable to insert */
163  SCIP_Real score, /**< score of external candidate, e.g. infeasibility */
164  SCIP_Real solval /**< value of the variable in the current solution */
165  );
166 
167 /** removes all external candidates from the storage for external branching */
168 extern
170  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
171  );
172 
173 /** checks whether the given variable is contained in the candidate storage for external branching */
174 extern
176  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
177  SCIP_VAR* var /**< variable to look for */
178  );
179 
180 /** gets branching candidates for pseudo solution branching (non-fixed variables) */
181 extern
183  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
184  SCIP_SET* set, /**< global SCIP settings */
185  SCIP_PROB* prob, /**< problem data */
186  SCIP_VAR*** pseudocands, /**< pointer to store the array of pseudo branching candidates, or NULL */
187  int* npseudocands, /**< pointer to store the number of pseudo branching candidates, or NULL */
188  int* npriopseudocands /**< pointer to store the number of candidates with maximal priority, or NULL */
189  );
190 
191 /** gets number of branching candidates for pseudo solution branching (non-fixed variables) */
192 extern
194  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
195  );
196 
197 /** gets number of branching candidates with maximal branch priority for pseudo solution branching */
198 extern
200  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
201  );
202 
203 /** gets number of binary branching candidates with maximal branch priority for pseudo solution branching */
204 extern
206  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
207  );
208 
209 /** gets number of integer branching candidates with maximal branch priority for pseudo solution branching */
210 extern
212  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
213  );
214 
215 /** gets number of implicit integer branching candidates with maximal branch priority for pseudo solution branching */
216 extern
218  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
219  );
220 
221 /** removes variable from branching candidate list */
222 extern
224  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
225  SCIP_VAR* var /**< variable that changed its bounds */
226  );
227 
228 /** updates branching candidate list for a given variable */
229 extern
231  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
232  SCIP_SET* set, /**< global SCIP settings */
233  SCIP_VAR* var /**< variable that changed its bounds */
234  );
235 
236 /** updates branching priority of the given variable and update the pseudo candidate array if needed */
237 extern
239  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
240  SCIP_SET* set, /**< global SCIP settings */
241  SCIP_VAR* var, /**< variable that changed its bounds */
242  int branchpriority /**< branch priority of the variable */
243  );
244 
245 
246 
247 
248 /*
249  * branching rules
250  */
251 
252 /** copies the given branchrule to a new scip */
253 extern
255  SCIP_BRANCHRULE* branchrule, /**< branchrule */
256  SCIP_SET* set /**< SCIP_SET of SCIP to copy to */
257  );
258 
259 /** creates a branching rule */
260 extern
262  SCIP_BRANCHRULE** branchrule, /**< pointer to store branching rule */
263  SCIP_SET* set, /**< global SCIP settings */
264  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
265  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
266  const char* name, /**< name of branching rule */
267  const char* desc, /**< description of branching rule */
268  int priority, /**< priority of the branching rule */
269  int maxdepth, /**< maximal depth level, up to which this branching rule should be used (or -1) */
270  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound
271  * compared to best node's dual bound for applying branching rule
272  * (0.0: only on current best node, 1.0: on all nodes) */
273  SCIP_DECL_BRANCHCOPY ((*branchcopy)), /**< copy method of branching rule */
274  SCIP_DECL_BRANCHFREE ((*branchfree)), /**< destructor of branching rule */
275  SCIP_DECL_BRANCHINIT ((*branchinit)), /**< initialize branching rule */
276  SCIP_DECL_BRANCHEXIT ((*branchexit)), /**< deinitialize branching rule */
277  SCIP_DECL_BRANCHINITSOL((*branchinitsol)),/**< solving process initialization method of branching rule */
278  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)),/**< solving process deinitialization method of branching rule */
279  SCIP_DECL_BRANCHEXECLP((*branchexeclp)), /**< branching execution method for fractional LP solutions */
280  SCIP_DECL_BRANCHEXECEXT((*branchexecext)),/**< branching execution method for external solutions */
281  SCIP_DECL_BRANCHEXECPS((*branchexecps)), /**< branching execution method for not completely fixed pseudo solutions */
282  SCIP_BRANCHRULEDATA* branchruledata /**< branching rule data */
283  );
284 
285 /** frees memory of branching rule */
286 extern
288  SCIP_BRANCHRULE** branchrule, /**< pointer to branching rule data structure */
289  SCIP_SET* set /**< global SCIP settings */
290  );
291 
292 /** initializes branching rule */
293 extern
295  SCIP_BRANCHRULE* branchrule, /**< branching rule */
296  SCIP_SET* set /**< global SCIP settings */
297  );
298 
299 /** deinitializes branching rule */
300 extern
302  SCIP_BRANCHRULE* branchrule, /**< branching rule */
303  SCIP_SET* set /**< global SCIP settings */
304  );
305 
306 /** informs branching rule that the branch and bound process is being started */
307 extern
309  SCIP_BRANCHRULE* branchrule, /**< branching rule */
310  SCIP_SET* set /**< global SCIP settings */
311  );
312 
313 /** informs branching rule that the branch and bound process data is being freed */
314 extern
316  SCIP_BRANCHRULE* branchrule, /**< branching rule */
317  SCIP_SET* set /**< global SCIP settings */
318  );
319 
320 /** executes branching rule for fractional LP solution */
321 extern
323  SCIP_BRANCHRULE* branchrule, /**< branching rule */
324  SCIP_SET* set, /**< global SCIP settings */
325  SCIP_STAT* stat, /**< problem statistics */
326  SCIP_TREE* tree, /**< branch and bound tree */
327  SCIP_SEPASTORE* sepastore, /**< separation storage */
328  SCIP_Real cutoffbound, /**< global upper cutoff bound */
329  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
330  SCIP_RESULT* result /**< pointer to store the result of the callback method */
331  );
332 
333 /** executes branching rule for external branching candidates */
334 extern
336  SCIP_BRANCHRULE* branchrule, /**< branching rule */
337  SCIP_SET* set, /**< global SCIP settings */
338  SCIP_STAT* stat, /**< problem statistics */
339  SCIP_TREE* tree, /**< branch and bound tree */
340  SCIP_SEPASTORE* sepastore, /**< separation storage */
341  SCIP_Real cutoffbound, /**< global upper cutoff bound */
342  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
343  SCIP_RESULT* result /**< pointer to store the result of the callback method */
344  );
345 
346 /** executes branching rule for not completely fixed pseudo solution */
347 extern
349  SCIP_BRANCHRULE* branchrule, /**< branching rule */
350  SCIP_SET* set, /**< global SCIP settings */
351  SCIP_STAT* stat, /**< problem statistics */
352  SCIP_TREE* tree, /**< branch and bound tree */
353  SCIP_Real cutoffbound, /**< global upper cutoff bound */
354  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
355  SCIP_RESULT* result /**< pointer to store the result of the callback method */
356  );
357 
358 /** sets priority of branching rule */
359 extern
361  SCIP_BRANCHRULE* branchrule, /**< branching rule */
362  SCIP_SET* set, /**< global SCIP settings */
363  int priority /**< new priority of the branching rule */
364  );
365 
366 /** sets maximal depth level, up to which this branching rule should be used (-1 for no limit) */
367 extern
369  SCIP_BRANCHRULE* branchrule, /**< branching rule */
370  int maxdepth /**< new maxdepth of the branching rule */
371  );
372 
373 /** sets maximal relative distance from current node's dual bound to primal bound for applying branching rule */
374 extern
376  SCIP_BRANCHRULE* branchrule, /**< branching rule */
377  SCIP_Real maxbounddist /**< new maxbounddist of the branching rule */
378  );
379 
380 /** sets copy method of branching rule */
381 extern
383  SCIP_BRANCHRULE* branchrule, /**< branching rule */
384  SCIP_DECL_BRANCHCOPY ((*branchcopy)) /**< copy method of branching rule or NULL if you don't want to copy your plugin into sub-SCIPs */
385  );
386 
387 /** sets destructor method of branching rule */
388 extern
390  SCIP_BRANCHRULE* branchrule, /**< branching rule */
391  SCIP_DECL_BRANCHFREE ((*branchfree)) /**< destructor of branching rule */
392  );
393 
394 /** sets initialization method of branching rule */
395 extern
397  SCIP_BRANCHRULE* branchrule, /**< branching rule */
398  SCIP_DECL_BRANCHINIT ((*branchinit)) /**< initialize branching rule */
399  );
400 
401 /** sets deinitialization method of branching rule */
402 extern
404  SCIP_BRANCHRULE* branchrule, /**< branching rule */
405  SCIP_DECL_BRANCHEXIT ((*branchexit)) /**< deinitialize branching rule */
406  );
407 
408 /** sets solving process initialization method of branching rule */
409 extern
411  SCIP_BRANCHRULE* branchrule, /**< branching rule */
412  SCIP_DECL_BRANCHINITSOL((*branchinitsol)) /**< solving process initialization method of branching rule */
413  );
414 
415 /** sets solving process deinitialization method of branching rule */
416 extern
418  SCIP_BRANCHRULE* branchrule, /**< branching rule */
419  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)) /**< solving process deinitialization method of branching rule */
420  );
421 
422 /** sets branching execution method for fractional LP solutions */
423 extern
425  SCIP_BRANCHRULE* branchrule, /**< branching rule */
426  SCIP_DECL_BRANCHEXECLP((*branchexeclp)) /**< branching execution method for fractional LP solutions */
427  );
428 
429 /** sets branching execution method for external candidates */
430 extern
432  SCIP_BRANCHRULE* branchrule, /**< branching rule */
433  SCIP_DECL_BRANCHEXECEXT((*branchexecext)) /**< branching execution method for external candidates */
434  );
435 
436 /** sets branching execution method for not completely fixed pseudo solutions */
437 extern
439  SCIP_BRANCHRULE* branchrule, /**< branching rule */
440  SCIP_DECL_BRANCHEXECPS((*branchexecps)) /**< branching execution method for not completely fixed pseudo solutions */
441  );
442 
443 /** enables or disables all clocks of \p branchrule, depending on the value of the flag */
444 extern
446  SCIP_BRANCHRULE* branchrule, /**< the branching rule for which all clocks should be enabled or disabled */
447  SCIP_Bool enable /**< should the clocks of the branching rule be enabled? */
448  );
449 
450 /*
451  * branching methods
452  */
453 
454 /** calculates the branching score out of the gain predictions for a binary branching */
455 extern
457  SCIP_SET* set, /**< global SCIP settings */
458  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
459  SCIP_Real downgain, /**< prediction of objective gain for rounding downwards */
460  SCIP_Real upgain /**< prediction of objective gain for rounding upwards */
461  );
462 
463 /** calculates the branching score out of the gain predictions for a branching with arbitrary many children */
464 extern
466  SCIP_SET* set, /**< global SCIP settings */
467  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
468  int nchildren, /**< number of children that the branching will create */
469  SCIP_Real* gains /**< prediction of objective gain for each child */
470  );
471 
472 /** computes a branching point for a (not necessarily discrete) variable
473  * a suggested branching point is first projected onto the box
474  * if no point is suggested, then the value in the current LP or pseudo solution is used
475  * if this value is at infinity, then 0.0 projected onto the bounds and then moved inside the interval is used
476  * for a discrete variable, it is ensured that the returned value is fractional
477  * for a continuous variable, the parameter branching/clamp defines how far a branching point need to be from the bounds of a variable
478  * the latter is only applied if no point has been suggested, or the suggested point is not inside the variable's interval
479  */
480 extern
482  SCIP_SET* set, /**< global SCIP settings */
483  SCIP_TREE* tree, /**< branch and bound tree */
484  SCIP_VAR* var, /**< variable, of which the branching point should be computed */
485  SCIP_Real suggestion /**< suggestion for branching point, or SCIP_INVALID if no suggestion */
486  );
487 
488 /** calls branching rules to branch on an LP solution; if no fractional variables exist, the result is SCIP_DIDNOTRUN;
489  * if the branch priority of an unfixed variable is larger than the maximal branch priority of the fractional
490  * variables, pseudo solution branching is applied on the unfixed variables with maximal branch priority
491  */
492 extern
494  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
495  SCIP_SET* set, /**< global SCIP settings */
496  SCIP_STAT* stat, /**< problem statistics */
497  SCIP_PROB* transprob, /**< transformed problem after presolve */
498  SCIP_PROB* origprob, /**< original problem */
499  SCIP_TREE* tree, /**< branch and bound tree */
500  SCIP_REOPT* reopt, /**< reoptimization data structure */
501  SCIP_LP* lp, /**< current LP data */
502  SCIP_SEPASTORE* sepastore, /**< separation storage */
503  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
504  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
505  SCIP_Real cutoffbound, /**< global upper cutoff bound */
506  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
507  SCIP_RESULT* result /**< pointer to store the result of the branching */
508  );
509 
510 /** calls branching rules to branch on an external solution; if no external branching candidates exist, the result is SCIP_DIDNOTRUN */
511 extern
513  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
514  SCIP_SET* set, /**< global SCIP settings */
515  SCIP_STAT* stat, /**< problem statistics */
516  SCIP_PROB* transprob, /**< transformed problem after presolve */
517  SCIP_PROB* origprob, /**< original problem */
518  SCIP_TREE* tree, /**< branch and bound tree */
519  SCIP_REOPT* reopt, /**< reoptimization data structure */
520  SCIP_LP* lp, /**< current LP data */
521  SCIP_SEPASTORE* sepastore, /**< separation storage */
522  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
523  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
524  SCIP_Real cutoffbound, /**< global upper cutoff bound */
525  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
526  SCIP_RESULT* result /**< pointer to store the result of the branching */
527  );
528 
529 /** calls branching rules to branch on a pseudo solution; if no unfixed variables exist, the result is SCIP_DIDNOTRUN */
530 extern
532  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
533  SCIP_SET* set, /**< global SCIP settings */
534  SCIP_STAT* stat, /**< problem statistics */
535  SCIP_PROB* transprob, /**< transformed problem after presolve */
536  SCIP_PROB* origprob, /**< original problem */
537  SCIP_TREE* tree, /**< branch and bound tree */
538  SCIP_REOPT* reopt, /**< reoptimization data structure */
539  SCIP_LP* lp, /**< current LP data */
540  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
541  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
542  SCIP_Real cutoffbound, /**< global upper cutoff bound */
543  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
544  SCIP_RESULT* result /**< pointer to store the result of the branching */
545  );
546 
547 #ifdef __cplusplus
548 }
549 #endif
550 
551 #endif
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:52
SCIP_RETCODE SCIPbranchExecPseudo(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_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
Definition: branch.c:2678
void SCIPbranchruleSetFree(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHFREE((*branchfree)))
Definition: branch.c:1842
int SCIPbranchcandGetNPrioExternImpls(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:546
type definitions for miscellaneous datastructures
int SCIPbranchcandGetNPrioExternBins(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:526
int SCIPbranchcandGetNPseudoCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:853
#define SCIP_DECL_BRANCHEXECPS(x)
Definition: type_branch.h:161
int SCIPbranchcandGetExternMaxPrio(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:496
struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
Definition: type_branch.h:43
SCIP_RETCODE SCIPbranchruleExitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1471
#define SCIP_DECL_BRANCHFREE(x)
Definition: type_branch.h:60
int SCIPbranchcandGetNExternCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:506
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
type definitions for global SCIP settings
void SCIPbranchruleSetCopy(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHCOPY((*branchcopy)))
Definition: branch.c:1831
int SCIPbranchcandGetNPrioExternCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:516
#define SCIP_DECL_BRANCHEXECEXT(x)
Definition: type_branch.h:140
type definitions for return codes for SCIP methods
public methods for branching rules
SCIP_RETCODE SCIPbranchcandCreate(SCIP_BRANCHCAND **branchcand)
Definition: branch.c:133
#define SCIP_DECL_BRANCHEXITSOL(x)
Definition: type_branch.h:98
int SCIPbranchcandGetNPrioPseudoImpls(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:893
SCIP_RETCODE SCIPbranchcandGetPseudoCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR ***pseudocands, int *npseudocands, int *npriopseudocands)
Definition: branch.c:789
void SCIPbranchruleSetInit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINIT((*branchinit)))
Definition: branch.c:1853
void SCIPbranchcandClearExternCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:698
type definitions for branching rules
type definitions for problem statistics
type definitions for LP management
SCIP_RETCODE SCIPbranchruleExecPseudoSol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
Definition: branch.c:1709
int SCIPbranchcandGetNPrioLPCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:486
SCIP_Bool SCIPbranchcandContainsExternCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
Definition: branch.c:713
#define SCIP_DECL_BRANCHINIT(x)
Definition: type_branch.h:68
int SCIPbranchcandGetNPrioExternInts(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:536
SCIP_RETCODE SCIPbranchruleInitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1447
SCIP_RETCODE SCIPbranchcandAddExternCand(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, SCIP_Real score, SCIP_Real solval)
Definition: branch.c:568
#define SCIP_DECL_BRANCHCOPY(x)
Definition: type_branch.h:52
SCIP_RETCODE SCIPbranchcandGetExternCands(SCIP_BRANCHCAND *branchcand, SCIP_VAR ***externcands, SCIP_Real **externcandssol, SCIP_Real **externcandsscore, int *nexterncands, int *nprioexterncands, int *nprioexternbins, int *nprioexternints, int *nprioexternimpls)
Definition: branch.c:439
#define SCIP_DECL_BRANCHINITSOL(x)
Definition: type_branch.h:87
SCIP_RETCODE SCIPbranchcandGetLPCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_VAR ***lpcands, SCIP_Real **lpcandssol, SCIP_Real **lpcandsfrac, int *nlpcands, int *npriolpcands, int *nfracimplvars)
Definition: branch.c:404
#define SCIP_DECL_BRANCHEXECLP(x)
Definition: type_branch.h:119
SCIP_RETCODE SCIPbranchExecLP(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_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
Definition: branch.c:2445
SCIP_RETCODE SCIPbranchruleExecLPSol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
Definition: branch.c:1495
int SCIPbranchcandGetNPrioPseudoCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:863
void SCIPbranchruleSetExecLp(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECLP((*branchexeclp)))
Definition: branch.c:1899
SCIP_Real SCIPbranchGetBranchingPoint(SCIP_SET *set, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real suggestion)
Definition: branch.c:2249
type definitions for problem variables
type definitions for storing separated cuts
void SCIPbranchruleSetInitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINITSOL((*branchinitsol)))
Definition: branch.c:1875
type definitions for managing events
SCIP_RETCODE SCIPbranchruleExecExternSol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_SEPASTORE *sepastore, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
Definition: branch.c:1602
void SCIPbranchruleSetExecExt(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECEXT((*branchexecext)))
Definition: branch.c:1910
#define SCIP_Bool
Definition: def.h:61
SCIP_RETCODE SCIPbranchruleExit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1417
SCIP_RETCODE SCIPbranchruleInit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1373
int SCIPbranchcandGetLPMaxPrio(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:476
SCIP_RETCODE SCIPbranchcandFree(SCIP_BRANCHCAND **branchcand)
Definition: branch.c:173
SCIP_RETCODE SCIPbranchruleFree(SCIP_BRANCHRULE **branchrule, SCIP_SET *set)
Definition: branch.c:1347
void SCIPbranchruleSetExecPs(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECPS((*branchexecps)))
Definition: branch.c:1921
type definitions for branch and bound tree
void SCIPbranchruleSetMaxdepth(SCIP_BRANCHRULE *branchrule, int maxdepth)
Definition: branch.c:1986
void SCIPbranchruleSetPriority(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, int priority)
Definition: branch.c:1962
type definitions for storing and manipulating the main problem
SCIP_RETCODE SCIPbranchcandUpdateVar(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var)
Definition: branch.c:1137
int SCIPbranchcandGetNPrioExternConts(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:556
void SCIPbranchruleSetExit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXIT((*branchexit)))
Definition: branch.c:1864
int SCIPbranchcandGetNPrioPseudoInts(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:883
SCIP_Real SCIPbranchGetScoreMultiple(SCIP_SET *set, SCIP_VAR *var, int nchildren, SCIP_Real *gains)
Definition: branch.c:2211
void SCIPbranchruleEnableOrDisableClocks(SCIP_BRANCHRULE *branchrule, SCIP_Bool enable)
Definition: branch.c:2020
#define SCIP_Real
Definition: def.h:149
result codes for SCIP callback methods
void SCIPbranchcandInvalidate(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:192
void SCIPbranchruleSetMaxbounddist(SCIP_BRANCHRULE *branchrule, SCIP_Real maxbounddist)
Definition: branch.c:2008
SCIP_RETCODE SCIPbranchExecExtern(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_SEPASTORE *sepastore, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_Real cutoffbound, SCIP_Bool allowaddcons, SCIP_RESULT *result)
Definition: branch.c:2547
SCIP_RETCODE SCIPbranchruleCopyInclude(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1248
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:419
int SCIPbranchcandGetNPrioPseudoBins(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:873
SCIP_RETCODE SCIPbranchcandRemoveVar(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
Definition: branch.c:1120
SCIP_RETCODE SCIPbranchruleCreate(SCIP_BRANCHRULE **branchrule, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, int maxdepth, SCIP_Real maxbounddist, SCIP_DECL_BRANCHCOPY((*branchcopy)), SCIP_DECL_BRANCHFREE((*branchfree)), SCIP_DECL_BRANCHINIT((*branchinit)), SCIP_DECL_BRANCHEXIT((*branchexit)), SCIP_DECL_BRANCHINITSOL((*branchinitsol)), SCIP_DECL_BRANCHEXITSOL((*branchexitsol)), SCIP_DECL_BRANCHEXECLP((*branchexeclp)), SCIP_DECL_BRANCHEXECEXT((*branchexecext)), SCIP_DECL_BRANCHEXECPS((*branchexecps)), SCIP_BRANCHRULEDATA *branchruledata)
Definition: branch.c:1267
SCIP_RETCODE SCIPbranchcandUpdateVarBranchPriority(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, int branchpriority)
Definition: branch.c:1177
#define SCIP_DECL_BRANCHEXIT(x)
Definition: type_branch.h:76
void SCIPbranchruleSetExitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXITSOL((*branchexitsol)))
Definition: branch.c:1886
SCIP_Real SCIPbranchGetScore(SCIP_SET *set, SCIP_VAR *var, SCIP_Real downgain, SCIP_Real upgain)
Definition: branch.c:2151
memory allocation routines