# SCIP

Solving Constraint Integer Programs

type_branch.h File Reference

## Detailed Description

type definitions for branching rules

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

Definition in file type_branch.h.

#include "scip/def.h"
#include "scip/type_result.h"
#include "scip/type_scip.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

## ◆ 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 58 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 66 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 74 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 82 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 93 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 104 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 125 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 146 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 167 of file type_branch.h.

## ◆ SCIP_BRANCHCAND

 typedef struct SCIP_BranchCand SCIP_BRANCHCAND

branching candidate storage

Definition at line 46 of file type_branch.h.

## ◆ SCIP_BRANCHRULE

 typedef struct SCIP_Branchrule SCIP_BRANCHRULE

branching method data structure

Definition at line 47 of file type_branch.h.

## ◆ SCIP_BRANCHRULEDATA

 typedef struct SCIP_BranchruleData SCIP_BRANCHRULEDATA

branching method specific data

Definition at line 48 of file type_branch.h.

## ◆ SCIP_TREEMODEL

 typedef struct SCIP_Treemodel SCIP_TREEMODEL

parameter storage for the Treemodel branching rules

Definition at line 49 of file type_branch.h.