## Detailed Description

type definitions for branching rules

This file defines the interface for branching rules implemented in C.

Definition in file type_branch.h.

Go to the source code of this file.

## Macros | |

#define | SCIP_DECL_BRANCHCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

#define | SCIP_DECL_BRANCHFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

#define | SCIP_DECL_BRANCHINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

#define | SCIP_DECL_BRANCHEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

#define | SCIP_DECL_BRANCHINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

#define | SCIP_DECL_BRANCHEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

#define | SCIP_DECL_BRANCHEXECLP(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) |

#define | SCIP_DECL_BRANCHEXECEXT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) |

#define | SCIP_DECL_BRANCHEXECPS(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) |

## Typedefs | |

typedef struct SCIP_BranchCand | SCIP_BRANCHCAND |

typedef struct SCIP_Branchrule | SCIP_BRANCHRULE |

typedef struct SCIP_BranchruleData | SCIP_BRANCHRULEDATA |

typedef struct SCIP_Treemodel | SCIP_TREEMODEL |

## Macro Definition Documentation

## ◆ SCIP_DECL_BRANCHCOPY

#define SCIP_DECL_BRANCHCOPY | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

copy method for branchrule plugins (called when SCIP copies plugins)

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself

Definition at line 67 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHFREE

#define SCIP_DECL_BRANCHFREE | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

destructor of branching method to free user data (called when SCIP is exiting)

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself

Definition at line 75 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHINIT

#define SCIP_DECL_BRANCHINIT | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

initialization method of branching rule (called after problem was transformed)

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself

Definition at line 83 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHEXIT

#define SCIP_DECL_BRANCHEXIT | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

deinitialization method of branching rule (called before transformed problem is freed)

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself

Definition at line 91 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHINITSOL

#define SCIP_DECL_BRANCHINITSOL | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

solving process initialization method of branching rule (called when branch and bound process is about to begin)

This method is called when the presolving was finished and the branch and bound process is about to begin. The branching rule may use this call to initialize its branch and bound specific data.

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself

Definition at line 102 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHEXITSOL

#define SCIP_DECL_BRANCHEXITSOL | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule) |

solving process deinitialization method of branching rule (called before branch and bound process data is freed)

This method is called before the branch and bound process is freed. The branching rule should use this call to clean up its branch and bound data.

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself

Definition at line 113 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHEXECLP

#define SCIP_DECL_BRANCHEXECLP | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) |

branching execution method for fractional LP solutions

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself
- allowaddcons : is the branching rule allowed to add constraints to the current node in order to cut off the current solution instead of creating a branching?
- result : pointer to store the result of the branching call

possible return values for *result (if more than one applies, the first in the list should be used):

- SCIP_CUTOFF : the current node was detected to be infeasible
- SCIP_CONSADDED : an additional constraint (e.g. a conflict constraint) was generated; this result code must not be returned, if allowaddcons is FALSE
- SCIP_REDUCEDDOM : a domain was reduced that rendered the current LP solution infeasible
- SCIP_SEPARATED : a cutting plane was generated
- SCIP_BRANCHED : branching was applied
- SCIP_DIDNOTFIND : the branching rule searched, but did not find a branching
- SCIP_DIDNOTRUN : the branching rule was skipped

Definition at line 134 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHEXECEXT

#define SCIP_DECL_BRANCHEXECEXT | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) |

branching execution method for external candidates

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself
- allowaddcons : is the branching rule allowed to add constraints to the current node in order to cut off the current solution instead of creating a branching?
- result : pointer to store the result of the branching call

possible return values for *result (if more than one applies, the first in the list should be used):

- SCIP_CUTOFF : the current node was detected to be infeasible
- SCIP_CONSADDED : an additional constraint (e.g. a conflict constraint) was generated; this result code must not be returned, if allowaddcons is FALSE
- SCIP_REDUCEDDOM : a domain was reduced that rendered the current pseudo solution infeasible
- SCIP_BRANCHED : branching was applied
- SCIP_DIDNOTFIND : the branching rule searched, but did not find a branching
- SCIP_DIDNOTRUN : the branching rule was skipped

Definition at line 155 of file type_branch.h.

## ◆ SCIP_DECL_BRANCHEXECPS

#define SCIP_DECL_BRANCHEXECPS | ( | x | ) | SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) |

branching execution method for not completely fixed pseudo solutions

input:

- scip : SCIP main data structure
- branchrule : the branching rule itself
- allowaddcons : is the branching rule allowed to add constraints to the current node in order to cut off the current solution instead of creating a branching?
- result : pointer to store the result of the branching call

possible return values for *result (if more than one applies, the first in the list should be used):

- SCIP_CUTOFF : the current node was detected to be infeasible
- SCIP_CONSADDED : an additional constraint (e.g. a conflict constraint) was generated; this result code must not be returned, if allowaddcons is FALSE
- SCIP_REDUCEDDOM : a domain was reduced that rendered the current pseudo solution infeasible
- SCIP_BRANCHED : branching was applied
- SCIP_DIDNOTFIND : the branching rule searched, but did not find a branching
- SCIP_DIDNOTRUN : the branching rule was skipped

Definition at line 176 of file type_branch.h.

## Typedef Documentation

## ◆ SCIP_BRANCHCAND

typedef struct SCIP_BranchCand SCIP_BRANCHCAND |

branching candidate storage

Definition at line 55 of file type_branch.h.

## ◆ SCIP_BRANCHRULE

typedef struct SCIP_Branchrule SCIP_BRANCHRULE |

branching method data structure

Definition at line 56 of file type_branch.h.

## ◆ SCIP_BRANCHRULEDATA

typedef struct SCIP_BranchruleData SCIP_BRANCHRULEDATA |

branching method specific data

Definition at line 57 of file type_branch.h.

## ◆ SCIP_TREEMODEL

typedef struct SCIP_Treemodel SCIP_TREEMODEL |

parameter storage for the Treemodel branching rules

Definition at line 58 of file type_branch.h.