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-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 branch.h
17  * @brief internal methods for branching rules and branching candidate storage
18  * @author Tobias Achterberg
19  */
20 
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
22 
23 #ifndef __SCIP_BRANCH_H__
24 #define __SCIP_BRANCH_H__
25 
26 
27 #include "scip/def.h"
28 #include "blockmemshell/memory.h"
29 #include "scip/type_retcode.h"
30 #include "scip/type_result.h"
31 #include "scip/type_set.h"
32 #include "scip/type_stat.h"
33 #include "scip/type_misc.h"
34 #include "scip/type_event.h"
35 #include "scip/type_lp.h"
36 #include "scip/type_var.h"
37 #include "scip/type_prob.h"
38 #include "scip/type_tree.h"
39 #include "scip/type_sepastore.h"
40 #include "scip/type_branch.h"
41 #include "scip/pub_branch.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /*
48  * branching candidate storage methods
49  */
50 
51 /** creates a branching candidate storage */
52 extern
54  SCIP_BRANCHCAND** branchcand /**< pointer to store branching candidate storage */
55  );
56 
57 /** frees branching candidate storage */
58 extern
60  SCIP_BRANCHCAND** branchcand /**< pointer to store branching candidate storage */
61  );
62 
63 /** gets branching candidates for LP solution branching (fractional variables) */
64 extern
66  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
67  SCIP_SET* set, /**< global SCIP settings */
68  SCIP_STAT* stat, /**< problem statistics */
69  SCIP_LP* lp, /**< current LP data */
70  SCIP_VAR*** lpcands, /**< pointer to store the array of LP branching candidates, or NULL */
71  SCIP_Real** lpcandssol, /**< pointer to store the array of LP candidate solution values, or NULL */
72  SCIP_Real** lpcandsfrac, /**< pointer to store the array of LP candidate fractionalities, or NULL */
73  int* nlpcands, /**< pointer to store the number of LP branching candidates, or NULL */
74  int* npriolpcands, /**< pointer to store the number of candidates with maximal priority, or NULL */
75  int* nfracimplvars /**< pointer to store the number of implicit fractional variables, or NULL */
76  );
77 
78 
79 /** gets external branching candidates */
80 extern
82  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
83  SCIP_VAR*** externcands, /**< pointer to store the array of external branching candidates, or NULL */
84  SCIP_Real** externcandssol, /**< pointer to store the array of external candidate solution values, or NULL */
85  SCIP_Real** externcandsscore, /**< pointer to store the array of external candidate scores, or NULL */
86  int* nexterncands, /**< pointer to store the number of external branching candidates, or NULL */
87  int* nprioexterncands, /**< pointer to store the number of candidates with maximal priority, or NULL */
88  int* nprioexternbins, /**< pointer to store the number of binary candidates with maximal priority, or NULL */
89  int* nprioexternints, /**< pointer to store the number of integer candidates with maximal priority, or NULL */
90  int* nprioexternimpls /**< pointer to store the number of implicit integer candidates with maximal priority,
91  * or NULL */
92  );
93 
94 /** gets number of external branching candidates */
95 extern
97  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
98  );
99 
100 /** gets number of external branching candidates with maximal branch priority */
101 extern
103  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
104  );
105 
106 /** gets number of binary external branching candidates with maximal branch priority */
107 extern
109  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
110  );
111 
112 /** gets number of integer external branching candidates with maximal branch priority */
113 extern
115  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
116  );
117 
118 /** gets number of implicit integer external branching candidates with maximal branch priority */
119 extern
121  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
122  );
123 
124 /** gets number of continuous external branching candidates with maximal branch priority */
125 extern
127  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
128  );
129 
130 /** insert variable, its score and its solution value into the external branching candidate storage
131  * the absolute difference of the current lower and upper bounds of the variable must be at least epsilon
132  */
133 extern
135  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
136  SCIP_SET* set, /**< global SCIP settings */
137  SCIP_VAR* var, /**< variable to insert */
138  SCIP_Real score, /**< score of external candidate, e.g. infeasibility */
139  SCIP_Real solval /**< value of the variable in the current solution */
140  );
141 
142 /** removes all external candidates from the storage for external branching */
143 extern
145  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
146  );
147 
148 /** checks whether the given variable is contained in the candidate storage for external branching */
149 extern
151  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
152  SCIP_VAR* var /**< variable to look for */
153  );
154 
155 /** gets branching candidates for pseudo solution branching (non-fixed variables) */
156 extern
158  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
159  SCIP_SET* set, /**< global SCIP settings */
160  SCIP_PROB* prob, /**< problem data */
161  SCIP_VAR*** pseudocands, /**< pointer to store the array of pseudo branching candidates, or NULL */
162  int* npseudocands, /**< pointer to store the number of pseudo branching candidates, or NULL */
163  int* npriopseudocands /**< pointer to store the number of candidates with maximal priority, or NULL */
164  );
165 
166 /** gets number of branching candidates for pseudo solution branching (non-fixed variables) */
167 extern
169  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
170  );
171 
172 /** gets number of branching candidates with maximal branch priority for pseudo solution branching */
173 extern
175  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
176  );
177 
178 /** gets number of binary branching candidates with maximal branch priority for pseudo solution branching */
179 extern
181  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
182  );
183 
184 /** gets number of integer branching candidates with maximal branch priority for pseudo solution branching */
185 extern
187  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
188  );
189 
190 /** gets number of implicit integer branching candidates with maximal branch priority for pseudo solution branching */
191 extern
193  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
194  );
195 
196 /** removes variable from branching candidate list */
197 extern
199  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
200  SCIP_VAR* var /**< variable that changed its bounds */
201  );
202 
203 /** updates branching candidate list for a given variable */
204 extern
206  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
207  SCIP_SET* set, /**< global SCIP settings */
208  SCIP_VAR* var /**< variable that changed its bounds */
209  );
210 
211 /** updates branching priority of the given variable and update the pseude candidate array if needed */
212 extern
214  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
215  SCIP_SET* set, /**< global SCIP settings */
216  SCIP_VAR* var, /**< variable that changed its bounds */
217  int branchpriority /**< branch priority of the variable */
218  );
219 
220 
221 
222 
223 /*
224  * branching rules
225  */
226 
227 /** copies the given branchrule to a new scip */
228 extern
230  SCIP_BRANCHRULE* branchrule, /**< branchrule */
231  SCIP_SET* set /**< SCIP_SET of SCIP to copy to */
232  );
233 
234 /** creates a branching rule */
235 extern
237  SCIP_BRANCHRULE** branchrule, /**< pointer to store branching rule */
238  SCIP_SET* set, /**< global SCIP settings */
239  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
240  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
241  const char* name, /**< name of branching rule */
242  const char* desc, /**< description of branching rule */
243  int priority, /**< priority of the branching rule */
244  int maxdepth, /**< maximal depth level, up to which this branching rule should be used (or -1) */
245  SCIP_Real maxbounddist, /**< maximal relative distance from current node's dual bound to primal bound
246  * compared to best node's dual bound for applying branching rule
247  * (0.0: only on current best node, 1.0: on all nodes) */
248  SCIP_DECL_BRANCHCOPY ((*branchcopy)), /**< copy method of branching rule */
249  SCIP_DECL_BRANCHFREE ((*branchfree)), /**< destructor of branching rule */
250  SCIP_DECL_BRANCHINIT ((*branchinit)), /**< initialize branching rule */
251  SCIP_DECL_BRANCHEXIT ((*branchexit)), /**< deinitialize branching rule */
252  SCIP_DECL_BRANCHINITSOL((*branchinitsol)),/**< solving process initialization method of branching rule */
253  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)),/**< solving process deinitialization method of branching rule */
254  SCIP_DECL_BRANCHEXECLP((*branchexeclp)), /**< branching execution method for fractional LP solutions */
255  SCIP_DECL_BRANCHEXECEXT((*branchexecext)),/**< branching execution method for external solutions */
256  SCIP_DECL_BRANCHEXECPS((*branchexecps)), /**< branching execution method for not completely fixed pseudo solutions */
257  SCIP_BRANCHRULEDATA* branchruledata /**< branching rule data */
258  );
259 
260 /** frees memory of branching rule */
261 extern
263  SCIP_BRANCHRULE** branchrule, /**< pointer to branching rule data structure */
264  SCIP_SET* set /**< global SCIP settings */
265  );
266 
267 /** initializes branching rule */
268 extern
270  SCIP_BRANCHRULE* branchrule, /**< branching rule */
271  SCIP_SET* set /**< global SCIP settings */
272  );
273 
274 /** deinitializes branching rule */
275 extern
277  SCIP_BRANCHRULE* branchrule, /**< branching rule */
278  SCIP_SET* set /**< global SCIP settings */
279  );
280 
281 /** informs branching rule that the branch and bound process is being started */
282 extern
284  SCIP_BRANCHRULE* branchrule, /**< branching rule */
285  SCIP_SET* set /**< global SCIP settings */
286  );
287 
288 /** informs branching rule that the branch and bound process data is being freed */
289 extern
291  SCIP_BRANCHRULE* branchrule, /**< branching rule */
292  SCIP_SET* set /**< global SCIP settings */
293  );
294 
295 /** executes branching rule for fractional LP solution */
296 extern
298  SCIP_BRANCHRULE* branchrule, /**< branching rule */
299  SCIP_SET* set, /**< global SCIP settings */
300  SCIP_STAT* stat, /**< problem statistics */
301  SCIP_TREE* tree, /**< branch and bound tree */
302  SCIP_SEPASTORE* sepastore, /**< separation storage */
303  SCIP_Real cutoffbound, /**< global upper cutoff bound */
304  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
305  SCIP_RESULT* result /**< pointer to store the result of the callback method */
306  );
307 
308 /** executes branching rule for external branching candidates */
309 extern
311  SCIP_BRANCHRULE* branchrule, /**< branching rule */
312  SCIP_SET* set, /**< global SCIP settings */
313  SCIP_STAT* stat, /**< problem statistics */
314  SCIP_TREE* tree, /**< branch and bound tree */
315  SCIP_SEPASTORE* sepastore, /**< separation storage */
316  SCIP_Real cutoffbound, /**< global upper cutoff bound */
317  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
318  SCIP_RESULT* result /**< pointer to store the result of the callback method */
319  );
320 
321 /** executes branching rule for not completely fixed pseudo solution */
322 extern
324  SCIP_BRANCHRULE* branchrule, /**< branching rule */
325  SCIP_SET* set, /**< global SCIP settings */
326  SCIP_STAT* stat, /**< problem statistics */
327  SCIP_TREE* tree, /**< branch and bound tree */
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 /** sets priority of branching rule */
334 extern
336  SCIP_BRANCHRULE* branchrule, /**< branching rule */
337  SCIP_SET* set, /**< global SCIP settings */
338  int priority /**< new priority of the branching rule */
339  );
340 
341 /** sets maximal depth level, up to which this branching rule should be used (-1 for no limit) */
342 extern
344  SCIP_BRANCHRULE* branchrule, /**< branching rule */
345  int maxdepth /**< new maxdepth of the branching rule */
346  );
347 
348 /** sets maximal relative distance from current node's dual bound to primal bound for applying branching rule */
349 extern
351  SCIP_BRANCHRULE* branchrule, /**< branching rule */
352  SCIP_Real maxbounddist /**< new maxbounddist of the branching rule */
353  );
354 
355 /** sets copy method of branching rule */
356 extern
358  SCIP_BRANCHRULE* branchrule, /**< branching rule */
359  SCIP_DECL_BRANCHCOPY ((*branchcopy)) /**< copy method of branching rule or NULL if you don't want to copy your plugin into sub-SCIPs */
360  );
361 
362 /** sets destructor method of branching rule */
363 extern
365  SCIP_BRANCHRULE* branchrule, /**< branching rule */
366  SCIP_DECL_BRANCHFREE ((*branchfree)) /**< destructor of branching rule */
367  );
368 
369 /** sets initialization method of branching rule */
370 extern
372  SCIP_BRANCHRULE* branchrule, /**< branching rule */
373  SCIP_DECL_BRANCHINIT ((*branchinit)) /**< initialize branching rule */
374  );
375 
376 /** sets deinitialization method of branching rule */
377 extern
379  SCIP_BRANCHRULE* branchrule, /**< branching rule */
380  SCIP_DECL_BRANCHEXIT ((*branchexit)) /**< deinitialize branching rule */
381  );
382 
383 /** sets solving process initialization method of branching rule */
384 extern
386  SCIP_BRANCHRULE* branchrule, /**< branching rule */
387  SCIP_DECL_BRANCHINITSOL((*branchinitsol)) /**< solving process initialization method of branching rule */
388  );
389 
390 /** sets solving process deinitialization method of branching rule */
391 extern
393  SCIP_BRANCHRULE* branchrule, /**< branching rule */
394  SCIP_DECL_BRANCHEXITSOL((*branchexitsol)) /**< solving process deinitialization method of branching rule */
395  );
396 
397 /** sets branching execution method for fractional LP solutions */
398 extern
400  SCIP_BRANCHRULE* branchrule, /**< branching rule */
401  SCIP_DECL_BRANCHEXECLP((*branchexeclp)) /**< branching execution method for fractional LP solutions */
402  );
403 
404 /** sets branching execution method for external candidates */
405 extern
407  SCIP_BRANCHRULE* branchrule, /**< branching rule */
408  SCIP_DECL_BRANCHEXECEXT((*branchexecext)) /**< branching execution method for external candidates */
409  );
410 
411 /** sets branching execution method for not completely fixed pseudo solutions */
412 extern
414  SCIP_BRANCHRULE* branchrule, /**< branching rule */
415  SCIP_DECL_BRANCHEXECPS((*branchexecps)) /**< branching execution method for not completely fixed pseudo solutions */
416  );
417 
418 /** enables or disables all clocks of \p branchrule, depending on the value of the flag */
419 extern
421  SCIP_BRANCHRULE* branchrule, /**< the branching rule for which all clocks should be enabled or disabled */
422  SCIP_Bool enable /**< should the clocks of the branching rule be enabled? */
423  );
424 
425 /*
426  * branching methods
427  */
428 
429 /** calculates the branching score out of the gain predictions for a binary branching */
430 extern
432  SCIP_SET* set, /**< global SCIP settings */
433  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
434  SCIP_Real downgain, /**< prediction of objective gain for rounding downwards */
435  SCIP_Real upgain /**< prediction of objective gain for rounding upwards */
436  );
437 
438 /** calculates the branching score out of the gain predictions for a branching with arbitrary many children */
439 extern
441  SCIP_SET* set, /**< global SCIP settings */
442  SCIP_VAR* var, /**< variable, of which the branching factor should be applied, or NULL */
443  int nchildren, /**< number of children that the branching will create */
444  SCIP_Real* gains /**< prediction of objective gain for each child */
445  );
446 
447 /** computes a branching point for a (not necessarily discrete) variable
448  * a suggested branching point is first projected onto the box
449  * if no point is suggested, then the value in the current LP or pseudo solution is used
450  * if this value is at infinity, then 0.0 projected onto the bounds and then moved inside the interval is used
451  * for a discrete variable, it is ensured that the returned value is fractional
452  * for a continuous variable, the parameter branching/clamp defines how far a branching point need to be from the bounds of a variable
453  * the latter is only applied if no point has been suggested, or the suggested point is not inside the variable's interval
454  */
455 extern
457  SCIP_SET* set, /**< global SCIP settings */
458  SCIP_TREE* tree, /**< branch and bound tree */
459  SCIP_VAR* var, /**< variable, of which the branching point should be computed */
460  SCIP_Real suggestion /**< suggestion for branching point, or SCIP_INVALID if no suggestion */
461  );
462 
463 /** calls branching rules to branch on an LP solution; if no fractional variables exist, the result is SCIP_DIDNOTRUN;
464  * if the branch priority of an unfixed variable is larger than the maximal branch priority of the fractional
465  * variables, pseudo solution branching is applied on the unfixed variables with maximal branch priority
466  */
467 extern
469  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
470  SCIP_SET* set, /**< global SCIP settings */
471  SCIP_STAT* stat, /**< problem statistics */
472  SCIP_PROB* transprob, /**< transformed problem after presolve */
473  SCIP_PROB* origprob, /**< original problem */
474  SCIP_TREE* tree, /**< branch and bound tree */
475  SCIP_REOPT* reopt, /**< reoptimization data structure */
476  SCIP_LP* lp, /**< current LP data */
477  SCIP_SEPASTORE* sepastore, /**< separation storage */
478  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
479  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
480  SCIP_Real cutoffbound, /**< global upper cutoff bound */
481  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
482  SCIP_RESULT* result /**< pointer to store the result of the branching */
483  );
484 
485 /** calls branching rules to branch on an external solution; if no external branching candidates exist, the result is SCIP_DIDNOTRUN */
486 extern
488  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
489  SCIP_SET* set, /**< global SCIP settings */
490  SCIP_STAT* stat, /**< problem statistics */
491  SCIP_PROB* transprob, /**< transformed problem after presolve */
492  SCIP_PROB* origprob, /**< original problem */
493  SCIP_TREE* tree, /**< branch and bound tree */
494  SCIP_REOPT* reopt, /**< reoptimization data structure */
495  SCIP_LP* lp, /**< current LP data */
496  SCIP_SEPASTORE* sepastore, /**< separation storage */
497  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
498  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
499  SCIP_Real cutoffbound, /**< global upper cutoff bound */
500  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
501  SCIP_RESULT* result /**< pointer to store the result of the branching */
502  );
503 
504 /** calls branching rules to branch on a pseudo solution; if no unfixed variables exist, the result is SCIP_DIDNOTRUN */
505 extern
507  BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
508  SCIP_SET* set, /**< global SCIP settings */
509  SCIP_STAT* stat, /**< problem statistics */
510  SCIP_PROB* transprob, /**< transformed problem after presolve */
511  SCIP_PROB* origprob, /**< original problem */
512  SCIP_TREE* tree, /**< branch and bound tree */
513  SCIP_REOPT* reopt, /**< reoptimization data structure */
514  SCIP_LP* lp, /**< current LP data */
515  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
516  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
517  SCIP_Real cutoffbound, /**< global upper cutoff bound */
518  SCIP_Bool allowaddcons, /**< should adding constraints be allowed to avoid a branching? */
519  SCIP_RESULT* result /**< pointer to store the result of the branching */
520  );
521 
522 #ifdef __cplusplus
523 }
524 #endif
525 
526 #endif
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:51
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:2608
void SCIPbranchruleSetFree(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHFREE((*branchfree)))
Definition: branch.c:1787
int SCIPbranchcandGetNPrioExternImpls(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:497
type definitions for miscellaneous datastructures
int SCIPbranchcandGetNPrioExternBins(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:477
int SCIPbranchcandGetNPseudoCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:802
#define SCIP_DECL_BRANCHEXECPS(x)
Definition: type_branch.h:161
struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
Definition: type_branch.h:43
SCIP_RETCODE SCIPbranchruleExitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1416
#define SCIP_DECL_BRANCHFREE(x)
Definition: type_branch.h:60
int SCIPbranchcandGetNExternCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:457
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:1776
int SCIPbranchcandGetNPrioExternCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:467
#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:132
#define SCIP_DECL_BRANCHEXITSOL(x)
Definition: type_branch.h:98
int SCIPbranchcandGetNPrioPseudoImpls(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:842
SCIP_RETCODE SCIPbranchcandGetPseudoCands(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR ***pseudocands, int *npseudocands, int *npriopseudocands)
Definition: branch.c:740
void SCIPbranchruleSetInit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINIT((*branchinit)))
Definition: branch.c:1798
void SCIPbranchcandClearExternCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:649
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:1654
SCIP_Bool SCIPbranchcandContainsExternCand(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
Definition: branch.c:664
#define SCIP_DECL_BRANCHINIT(x)
Definition: type_branch.h:68
int SCIPbranchcandGetNPrioExternInts(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:487
SCIP_RETCODE SCIPbranchruleInitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1392
SCIP_RETCODE SCIPbranchcandAddExternCand(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, SCIP_Real score, SCIP_Real solval)
Definition: branch.c:519
#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:419
#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:384
#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:2384
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:1440
int SCIPbranchcandGetNPrioPseudoCands(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:812
void SCIPbranchruleSetExecLp(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECLP((*branchexeclp)))
Definition: branch.c:1844
SCIP_Real SCIPbranchGetBranchingPoint(SCIP_SET *set, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real suggestion)
Definition: branch.c:2184
type definitions for problem variables
type definitions for storing separated cuts
void SCIPbranchruleSetInitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHINITSOL((*branchinitsol)))
Definition: branch.c:1820
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:1547
void SCIPbranchruleSetExecExt(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECEXT((*branchexecext)))
Definition: branch.c:1855
#define SCIP_Bool
Definition: def.h:53
SCIP_RETCODE SCIPbranchruleExit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1362
SCIP_RETCODE SCIPbranchruleInit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1318
SCIP_RETCODE SCIPbranchcandFree(SCIP_BRANCHCAND **branchcand)
Definition: branch.c:171
SCIP_RETCODE SCIPbranchruleFree(SCIP_BRANCHRULE **branchrule, SCIP_SET *set)
Definition: branch.c:1292
void SCIPbranchruleSetExecPs(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXECPS((*branchexecps)))
Definition: branch.c:1866
type definitions for branch and bound tree
void SCIPbranchruleSetMaxdepth(SCIP_BRANCHRULE *branchrule, int maxdepth)
Definition: branch.c:1931
void SCIPbranchruleSetPriority(SCIP_BRANCHRULE *branchrule, SCIP_SET *set, int priority)
Definition: branch.c:1907
type definitions for storing and manipulating the main problem
SCIP_RETCODE SCIPbranchcandUpdateVar(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var)
Definition: branch.c:1080
int SCIPbranchcandGetNPrioExternConts(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:507
void SCIPbranchruleSetExit(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXIT((*branchexit)))
Definition: branch.c:1809
int SCIPbranchcandGetNPrioPseudoInts(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:832
SCIP_Real SCIPbranchGetScoreMultiple(SCIP_SET *set, SCIP_VAR *var, int nchildren, SCIP_Real *gains)
Definition: branch.c:2146
void SCIPbranchruleEnableOrDisableClocks(SCIP_BRANCHRULE *branchrule, SCIP_Bool enable)
Definition: branch.c:1965
#define SCIP_Real
Definition: def.h:127
result codes for SCIP callback methods
void SCIPbranchruleSetMaxbounddist(SCIP_BRANCHRULE *branchrule, SCIP_Real maxbounddist)
Definition: branch.c:1953
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:2486
SCIP_RETCODE SCIPbranchruleCopyInclude(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1193
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:392
int SCIPbranchcandGetNPrioPseudoBins(SCIP_BRANCHCAND *branchcand)
Definition: branch.c:822
SCIP_RETCODE SCIPbranchcandRemoveVar(SCIP_BRANCHCAND *branchcand, SCIP_VAR *var)
Definition: branch.c:1063
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:1212
SCIP_RETCODE SCIPbranchcandUpdateVarBranchPriority(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var, int branchpriority)
Definition: branch.c:1120
#define SCIP_DECL_BRANCHEXIT(x)
Definition: type_branch.h:76
void SCIPbranchruleSetExitsol(SCIP_BRANCHRULE *branchrule, SCIP_DECL_BRANCHEXITSOL((*branchexitsol)))
Definition: branch.c:1831
SCIP_Real SCIPbranchGetScore(SCIP_SET *set, SCIP_VAR *var, SCIP_Real downgain, SCIP_Real upgain)
Definition: branch.c:2096
memory allocation routines