Scippy

GCG

Branch-and-Price & Column Generation for Everyone

Detailed Description

constraint handler for storing the branching decisions at each node of the tree

Author
Gerald Gamrath
Martin Bergner

Definition in file cons_origbranch.c.

#include <assert.h>
#include <string.h>
#include "gcg.h"
#include "branch_generic.h"
#include "cons_masterbranch.h"
#include "cons_origbranch.h"
#include "scip/nodesel_bfs.h"
#include "scip/nodesel_dfs.h"
#include "scip/nodesel_estimate.h"
#include "scip/nodesel_hybridestim.h"
#include "scip/nodesel_restartdfs.h"
#include "scip/branch_allfullstrong.h"
#include "scip/branch_fullstrong.h"
#include "scip/branch_inference.h"
#include "scip/branch_mostinf.h"
#include "scip/branch_leastinf.h"
#include "scip/branch_pscost.h"
#include "scip/branch_random.h"
#include "scip/branch_relpscost.h"
#include "scip/cons_linear.h"

Go to the source code of this file.

Data Structures

struct  SCIP_ConsData
 
struct  SCIP_ConshdlrData
 

Macros

#define CONSHDLR_NAME   "origbranch"
 
#define CONSHDLR_DESC   "store branching decision at nodes of the tree constraint handler"
 
#define CONSHDLR_ENFOPRIORITY   0
 
#define CONSHDLR_CHECKPRIORITY   2000000
 
#define CONSHDLR_EAGERFREQ   100
 
#define CONSHDLR_NEEDSCONS   TRUE
 

Functions

static SCIP_DECL_CONSFREE (consFreeOrigbranch)
 
static SCIP_DECL_CONSINITSOL (consInitsolOrigbranch)
 
static SCIP_DECL_CONSEXITSOL (consExitsolOrigbranch)
 
static SCIP_DECL_CONSEXIT (consExitOrigbranch)
 
static SCIP_DECL_CONSDELETE (consDeleteOrigbranch)
 
static SCIP_DECL_CONSACTIVE (consActiveOrigbranch)
 
static SCIP_DECL_CONSDEACTIVE (consDeactiveOrigbranch)
 
static SCIP_DECL_CONSENFOLP (consEnfolpOrigbranch)
 
static SCIP_DECL_CONSENFORELAX (consEnforeOrigbranch)
 
static SCIP_DECL_CONSENFOPS (consEnfopsOrigbranch)
 
static SCIP_DECL_CONSCHECK (consCheckOrigbranch)
 
static SCIP_DECL_CONSLOCK (consLockOrigbranch)
 
SCIP_RETCODE SCIPincludeConshdlrOrigbranch (SCIP *scip)
 
SCIP_RETCODE GCGcreateConsOrigbranch (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_NODE *node, SCIP_CONS *parentcons, SCIP_BRANCHRULE *branchrule, GCG_BRANCHDATA *branchdata)
 
SCIP_CONS * GCGconsOrigbranchGetActiveCons (SCIP *scip)
 
void GCGconsOrigbranchGetStack (SCIP *scip, SCIP_CONS ***stack, int *nstackelements)
 
void GCGconsOrigbranchSetBranchdata (SCIP_CONS *cons, GCG_BRANCHDATA *branchdata)
 
GCG_BRANCHDATAGCGconsOrigbranchGetBranchdata (SCIP_CONS *cons)
 
SCIP_BRANCHRULE * GCGconsOrigbranchGetBranchrule (SCIP_CONS *cons)
 
SCIP_NODE * GCGconsOrigbranchGetNode (SCIP_CONS *cons)
 
SCIP_CONS * GCGconsOrigbranchGetParentcons (SCIP_CONS *cons)
 
int GCGconsOrigbranchGetNChildconss (SCIP_CONS *cons)
 
SCIP_CONS * GCGconsOrigbranchGetChildcons (SCIP_CONS *cons, int childnr)
 
void GCGconsOrigbranchSetMastercons (SCIP_CONS *cons, SCIP_CONS *mastercons)
 
SCIP_CONS * GCGconsOrigbranchGetMastercons (SCIP_CONS *cons)
 
SCIP_RETCODE GCGconsOrigbranchAddRootCons (SCIP *scip)
 
void GCGconsOrigbranchCheckConsistency (SCIP *scip)
 

Macro Definition Documentation

◆ CONSHDLR_NAME

#define CONSHDLR_NAME   "origbranch"

Definition at line 62 of file cons_origbranch.c.

◆ CONSHDLR_DESC

#define CONSHDLR_DESC   "store branching decision at nodes of the tree constraint handler"

Definition at line 63 of file cons_origbranch.c.

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   0

priority of the constraint handler for constraint enforcing

Definition at line 64 of file cons_origbranch.c.

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   2000000

priority of the constraint handler for checking feasibility

Definition at line 65 of file cons_origbranch.c.

◆ CONSHDLR_EAGERFREQ

#define CONSHDLR_EAGERFREQ   100

frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only

Definition at line 66 of file cons_origbranch.c.

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   TRUE

should the constraint handler be skipped, if no constraints are available?

Definition at line 68 of file cons_origbranch.c.

Function Documentation

◆ SCIP_DECL_CONSFREE()

static SCIP_DECL_CONSFREE ( consFreeOrigbranch  )
static

destructor of constraint handler to free constraint handler data (called when SCIP is exiting)

Definition at line 104 of file cons_origbranch.c.

References CONSHDLR_NAME.

◆ SCIP_DECL_CONSINITSOL()

static SCIP_DECL_CONSINITSOL ( consInitsolOrigbranch  )
static

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

Definition at line 132 of file cons_origbranch.c.

References CONSHDLR_NAME, and GCGconsOrigbranchCheckConsistency().

◆ SCIP_DECL_CONSEXITSOL()

static SCIP_DECL_CONSEXITSOL ( consExitsolOrigbranch  )
static

solving process deinitialization method of constraint handler (called before branch and bound process data is freed)

Definition at line 163 of file cons_origbranch.c.

References CONSHDLR_NAME, and GCGconsOrigbranchGetBranchdata().

◆ SCIP_DECL_CONSEXIT()

static SCIP_DECL_CONSEXIT ( consExitOrigbranch  )
static

exit method of constraint handler (called before problem is free transformed)

Definition at line 198 of file cons_origbranch.c.

◆ SCIP_DECL_CONSDELETE()

static SCIP_DECL_CONSDELETE ( consDeleteOrigbranch  )
static

frees specific constraint data

Definition at line 218 of file cons_origbranch.c.

References CONSHDLR_NAME, GCGconsMasterbranchGetOrigcons(), and GCGconsMasterbranchSetOrigcons().

◆ SCIP_DECL_CONSACTIVE()

static SCIP_DECL_CONSACTIVE ( consActiveOrigbranch  )
static

constraint activation notification method of constraint handler

Definition at line 293 of file cons_origbranch.c.

References CONSHDLR_NAME.

◆ SCIP_DECL_CONSDEACTIVE()

static SCIP_DECL_CONSDEACTIVE ( consDeactiveOrigbranch  )
static

constraint deactivation notification method of constraint handler

Definition at line 334 of file cons_origbranch.c.

References CONSHDLR_NAME.

◆ SCIP_DECL_CONSENFOLP()

static SCIP_DECL_CONSENFOLP ( consEnfolpOrigbranch  )
static

lp solution enforcement method

Definition at line 362 of file cons_origbranch.c.

◆ SCIP_DECL_CONSENFORELAX()

static SCIP_DECL_CONSENFORELAX ( consEnforeOrigbranch  )
static

lp solution enforcement method

Definition at line 371 of file cons_origbranch.c.

◆ SCIP_DECL_CONSENFOPS()

static SCIP_DECL_CONSENFOPS ( consEnfopsOrigbranch  )
static

pseudo solution enforcement method

Definition at line 381 of file cons_origbranch.c.

◆ SCIP_DECL_CONSCHECK()

static SCIP_DECL_CONSCHECK ( consCheckOrigbranch  )
static

solution check method

Definition at line 390 of file cons_origbranch.c.

◆ SCIP_DECL_CONSLOCK()

static SCIP_DECL_CONSLOCK ( consLockOrigbranch  )
static

variable lock method

Definition at line 399 of file cons_origbranch.c.

◆ SCIPincludeConshdlrOrigbranch()

SCIP_RETCODE SCIPincludeConshdlrOrigbranch ( SCIP *  scip)

creates the handler for origbranch constraints and includes it in SCIP

Parameters
scipSCIP data structure

Definition at line 410 of file cons_origbranch.c.

References CONSHDLR_CHECKPRIORITY, CONSHDLR_DESC, CONSHDLR_EAGERFREQ, CONSHDLR_ENFOPRIORITY, CONSHDLR_NAME, and CONSHDLR_NEEDSCONS.

Referenced by SCIPincludeGcgPlugins().

◆ GCGcreateConsOrigbranch()

SCIP_RETCODE GCGcreateConsOrigbranch ( SCIP *  scip,
SCIP_CONS **  cons,
const char *  name,
SCIP_NODE *  node,
SCIP_CONS *  parentcons,
SCIP_BRANCHRULE *  branchrule,
GCG_BRANCHDATA branchdata 
)

creates and captures a origbranch constraint

Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nodethe node to which this origbranch constraint belongs
parentconsorigbranch constraint associated with the father node
branchrulethe branching rule that created the b&b node the constraint belongs to
branchdatabranching data storing information about the branching restrictions at the corresponding node

Definition at line 444 of file cons_origbranch.c.

References CONSHDLR_NAME, and GCGbranchGenericCreateBranchdata().

Referenced by createOrigbranchConstraint(), GCGconsOrigbranchAddRootCons(), and GCGrelaxNewProbingnodeOrig().

◆ GCGconsOrigbranchGetActiveCons()

SCIP_CONS* GCGconsOrigbranchGetActiveCons ( SCIP *  scip)

returns the branch orig constraint of the current node, only needs the pointer to scip

Parameters
scipSCIP data structure

Definition at line 529 of file cons_origbranch.c.

References CONSHDLR_NAME.

Referenced by createBranchNodesInOrigprob(), createOrigbranchConstraint(), GCGrelaxNewProbingnodeOrig(), initializeConsdata(), relaxExecGcgDantzigWolfe(), SCIP_DECL_CONSINITSOL(), and SCIP_DECL_NODESELSELECT().

◆ GCGconsOrigbranchGetStack()

void GCGconsOrigbranchGetStack ( SCIP *  scip,
SCIP_CONS ***  stack,
int *  nstackelements 
)

returns the stack and the number of elements on it

Parameters
scipSCIP data structure
stackreturn value: pointer to the stack
nstackelementsreturn value: pointer to int, for number of elements on the stack

Definition at line 549 of file cons_origbranch.c.

References CONSHDLR_NAME.

Referenced by SCIP_DECL_BRANCHEXECPS().

◆ GCGconsOrigbranchSetBranchdata()

void GCGconsOrigbranchSetBranchdata ( SCIP_CONS *  cons,
GCG_BRANCHDATA branchdata 
)

returns the branching data for a given origbranch constraint

Parameters
consorigbranch constraint for which the branching data is requested
branchdatabranching data

Definition at line 571 of file cons_origbranch.c.

Referenced by SCIP_DECL_CONSDELETE().

◆ GCGconsOrigbranchGetBranchdata()

GCG_BRANCHDATA* GCGconsOrigbranchGetBranchdata ( SCIP_CONS *  cons)

returns the branching data for a given origbranch constraint

Parameters
consorigbranch constraint for which the branching data is requested

Definition at line 585 of file cons_origbranch.c.

Referenced by relaxExecGcgDantzigWolfe(), SCIP_DECL_BRANCHEXECPS(), and SCIP_DECL_CONSEXITSOL().

◆ GCGconsOrigbranchGetBranchrule()

SCIP_BRANCHRULE* GCGconsOrigbranchGetBranchrule ( SCIP_CONS *  cons)

returns the branching rule for a given origbranch constraint

Parameters
consorigbranch constraint for which the branchrule is requested

Definition at line 598 of file cons_origbranch.c.

Referenced by relaxExecGcgDantzigWolfe(), and SCIP_DECL_BRANCHEXECPS().

◆ GCGconsOrigbranchGetNode()

SCIP_NODE* GCGconsOrigbranchGetNode ( SCIP_CONS *  cons)

returns the node in the B&B tree at which the given origbranch constraint is sticking

Parameters
consorigbranch constraint for which the corresponding node is requested

Definition at line 612 of file cons_origbranch.c.

Referenced by createBranchNodesInOrigprob(), initializeConsdata(), and SCIP_DECL_NODESELSELECT().

◆ GCGconsOrigbranchGetParentcons()

SCIP_CONS* GCGconsOrigbranchGetParentcons ( SCIP_CONS *  cons)

returns the origbranch constraint of the B&B father of the node at which the given origbranch constraint is sticking

Parameters
consorigbranch constraint for which the origbranch constraint of the father node is requested

Definition at line 628 of file cons_origbranch.c.

Referenced by GCGconsMasterbranchCheckConsistency(), initializeConsdata(), and SCIP_DECL_NODESELSELECT().

◆ GCGconsOrigbranchGetNChildconss()

int GCGconsOrigbranchGetNChildconss ( SCIP_CONS *  cons)

returns the number of origbranch constraints of the children of the node at which the given origbranch constraint is sticking

Parameters
consconstraint

Definition at line 645 of file cons_origbranch.c.

Referenced by initializeConsdata().

◆ GCGconsOrigbranchGetChildcons()

SCIP_CONS* GCGconsOrigbranchGetChildcons ( SCIP_CONS *  cons,
int  childnr 
)

returns an origbranch constraint of a child of the node at which the given origbranch constraint is sticking

Parameters
consconstraint
childnrnumber of child

Definition at line 660 of file cons_origbranch.c.

◆ GCGconsOrigbranchSetMastercons()

void GCGconsOrigbranchSetMastercons ( SCIP_CONS *  cons,
SCIP_CONS *  mastercons 
)

sets the masterbranch constraint of the node in the master program corresponding to the node at which the given origbranchbranch constraint is sticking

Parameters
consorigbranch constraint for which the masterbranch constraint should be set
masterconsmasterbranch constraint corresponding to the given origbranch constraint

Definition at line 678 of file cons_origbranch.c.

Referenced by createOrigbranchConstraint(), initializeConsdata(), SCIP_DECL_CONSDELETE(), and SCIP_DECL_CONSINITSOL().

◆ GCGconsOrigbranchGetMastercons()

SCIP_CONS* GCGconsOrigbranchGetMastercons ( SCIP_CONS *  cons)

returns the masterbranch constraint of the node in the master program corresponding to the node at which the given origbranchbranch constraint is sticking

Parameters
consorigbranch constraint for which the corresponding masterbranch constraint is requested

Definition at line 695 of file cons_origbranch.c.

Referenced by GCGconsMasterbranchCheckConsistency(), SCIP_DECL_CONSDELETE(), and SCIP_DECL_NODESELSELECT().

◆ GCGconsOrigbranchAddRootCons()

SCIP_RETCODE GCGconsOrigbranchAddRootCons ( SCIP *  scip)

adds initial constraint to root node

Parameters
scipSCIP data structure

Definition at line 710 of file cons_origbranch.c.

References CONSHDLR_NAME, GCGconsOrigbranchCheckConsistency(), and GCGcreateConsOrigbranch().

Referenced by initializeMasterProblemSolve().

◆ GCGconsOrigbranchCheckConsistency()

void GCGconsOrigbranchCheckConsistency ( SCIP *  scip)

checks the consistency of the origbranch constraints in the problem

Parameters
scipSCIP data structure

Definition at line 751 of file cons_origbranch.c.

References CONSHDLR_NAME, and GCGconsMasterbranchGetOrigcons().

Referenced by GCGconsOrigbranchAddRootCons(), SCIP_DECL_CONSINITSOL(), and SCIP_DECL_NODESELSELECT().