Scippy

SCIP

Solving Constraint Integer Programs

cons_samediff.c File Reference

Detailed Description

Constraint handler stores the local branching decision data.

Author
Timo Berthold
Stefan Heinz

This constraint handler is used to store the branching decision of the Ryan/Foster branching rule which is implemented in branch_ryanfoster.c.

Definition in file cons_samediff.c.

#include <assert.h>
#include <string.h>
#include "cons_samediff.h"
#include "probdata_binpacking.h"
#include "vardata_binpacking.h"

Go to the source code of this file.

Macros

Constraint handler properties
#define CONSHDLR_NAME   "samediff"
 
#define CONSHDLR_DESC   "stores the local branching decisions"
 
#define CONSHDLR_ENFOPRIORITY   0
 
#define CONSHDLR_CHECKPRIORITY   -9999999
 
#define CONSHDLR_PROPFREQ   1
 
#define CONSHDLR_EAGERFREQ   1
 
#define CONSHDLR_DELAYPROP   FALSE
 
#define CONSHDLR_NEEDSCONS   TRUE
 
#define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP
 

Functions

Local methods
static SCIP_RETCODE consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, int itemid1, int itemid2, CONSTYPE type, SCIP_NODE *node)
 
static void consdataPrint (SCIP *scip, SCIP_CONSDATA *consdata, FILE *file)
 
static SCIP_RETCODE checkVariable (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, int *nfixedvars, SCIP_Bool *cutoff)
 
static SCIP_RETCODE consdataFixVariables (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR **vars, int nvars, SCIP_RESULT *result)
 
static SCIP_Bool consdataCheck (SCIP *scip, SCIP_PROBDATA *probdata, SCIP_CONSDATA *consdata, SCIP_Bool beforeprop)
 
static SCIP_RETCODE consdataFree (SCIP *scip, SCIP_CONSDATA **consdata)
 
Interface methods
SCIP_RETCODE SCIPincludeConshdlrSamediff (SCIP *scip)
 
SCIP_RETCODE SCIPcreateConsSamediff (SCIP *scip, SCIP_CONS **cons, const char *name, int itemid1, int itemid2, CONSTYPE type, SCIP_NODE *node, SCIP_Bool local)
 
int SCIPgetItemid1Samediff (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetItemid2Samediff (SCIP *scip, SCIP_CONS *cons)
 
CONSTYPE SCIPgetTypeSamediff (SCIP *scip, SCIP_CONS *cons)
 

Callback methods

#define consEnfolpSamediff   NULL
 
#define consEnfopsSamediff   NULL
 
#define consCheckSamediff   NULL
 
#define consLockSamediff   NULL
 
static SCIP_DECL_CONSDELETE (consDeleteSamediff)
 
static SCIP_DECL_CONSTRANS (consTransSamediff)
 
static SCIP_DECL_CONSPROP (consPropSamediff)
 
static SCIP_DECL_CONSACTIVE (consActiveSamediff)
 
static SCIP_DECL_CONSDEACTIVE (consDeactiveSamediff)
 
static SCIP_DECL_CONSPRINT (consPrintSamediff)
 

Macro Definition Documentation

◆ CONSHDLR_NAME

#define CONSHDLR_NAME   "samediff"

Definition at line 49 of file cons_samediff.c.

◆ CONSHDLR_DESC

#define CONSHDLR_DESC   "stores the local branching decisions"

Definition at line 50 of file cons_samediff.c.

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   0

priority of the constraint handler for constraint enforcing

Definition at line 51 of file cons_samediff.c.

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   -9999999

priority of the constraint handler for checking feasibility

Definition at line 52 of file cons_samediff.c.

◆ CONSHDLR_PROPFREQ

#define CONSHDLR_PROPFREQ   1

frequency for propagating domains; zero means only preprocessing propagation

Definition at line 53 of file cons_samediff.c.

◆ CONSHDLR_EAGERFREQ

#define CONSHDLR_EAGERFREQ   1

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 55 of file cons_samediff.c.

◆ CONSHDLR_DELAYPROP

#define CONSHDLR_DELAYPROP   FALSE

should propagation method be delayed, if other propagators found reductions?

Definition at line 56 of file cons_samediff.c.

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   TRUE

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

Definition at line 57 of file cons_samediff.c.

◆ CONSHDLR_PROP_TIMING

#define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP

Definition at line 59 of file cons_samediff.c.

◆ consEnfolpSamediff

#define consEnfolpSamediff   NULL

constraint enforcing method of constraint handler for LP solutions

Definition at line 365 of file cons_samediff.c.

◆ consEnfopsSamediff

#define consEnfopsSamediff   NULL

constraint enforcing method of constraint handler for pseudo solutions

Definition at line 368 of file cons_samediff.c.

◆ consCheckSamediff

#define consCheckSamediff   NULL

feasibility check method of constraint handler for integral solutions

Definition at line 371 of file cons_samediff.c.

◆ consLockSamediff

#define consLockSamediff   NULL

variable rounding lock method of constraint handler

Definition at line 449 of file cons_samediff.c.

Function Documentation

◆ consdataCreate()

static SCIP_RETCODE consdataCreate ( SCIP scip,
SCIP_CONSDATA **  consdata,
int  itemid1,
int  itemid2,
CONSTYPE  type,
SCIP_NODE node 
)
static

create constraint data

Parameters
scipSCIP data structure
consdatapointer to store the constraint data
itemid1item id one
itemid2item id two
typestores whether the items have to be in the SAME or DIFFER packing
nodethe node in the B&B-tree at which the cons is sticking

Definition at line 88 of file cons_samediff.c.

References DIFFER, FALSE, NULL, SAME, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.

Referenced by SCIP_DECL_CONSTRANS(), and SCIPcreateConsSamediff().

◆ consdataPrint()

static void consdataPrint ( SCIP scip,
SCIP_CONSDATA consdata,
FILE *  file 
)
static

display constraints

Parameters
scipSCIP data structure
consdataconstraint data
filefile stream

Definition at line 118 of file cons_samediff.c.

References NULL, SAME, SCIP_LONGINT_FORMAT, SCIPgetProbData(), SCIPinfoMessage(), SCIPnodeGetNumber(), and SCIPprobdataGetIds().

Referenced by consdataCheck(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_CONSDEACTIVE(), SCIP_DECL_CONSPRINT(), SCIP_DECL_CONSPROP(), and SCIPcreateConsSamediff().

◆ checkVariable()

static SCIP_RETCODE checkVariable ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
int *  nfixedvars,
SCIP_Bool cutoff 
)
static

fixes a variable to zero if the corresponding packings are not valid for this constraint/node (due to branching)

Parameters
scipSCIP data structure
consdataconstraint data
varvariables to check
nfixedvarspointer to store the number of fixed variables
cutoffpointer to store if a cutoff was detected

Definition at line 140 of file cons_samediff.c.

References DIFFER, NULL, SAME, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPdebugMsg, SCIPfixVar(), SCIPsortedvecFindInt(), SCIPvardataGetConsids(), SCIPvardataGetNConsids(), SCIPvarGetData(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.

Referenced by consdataFixVariables().

◆ consdataFixVariables()

static SCIP_RETCODE consdataFixVariables ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR **  vars,
int  nvars,
SCIP_RESULT result 
)
static

fixes variables to zero if the corresponding packings are not valid for this sonstraint/node (due to branching)

Parameters
scipSCIP data structure
consdataconstraint data
varsgenerated variables
nvarsnumber of generated variables
resultpointer to store the result of the fixing

Definition at line 203 of file cons_samediff.c.

References checkVariable(), FALSE, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_REDUCEDDOM, and SCIPdebugMsg.

Referenced by SCIP_DECL_CONSPROP().

◆ consdataCheck()

static SCIP_Bool consdataCheck ( SCIP scip,
SCIP_PROBDATA probdata,
SCIP_CONSDATA consdata,
SCIP_Bool  beforeprop 
)
static

check if all variables are valid for the given consdata

Parameters
scipSCIP data structure
probdataproblem data
consdataconstraint data
beforepropis this check performed before propagation?

Definition at line 239 of file cons_samediff.c.

References consdataPrint(), DIFFER, FALSE, NULL, SAME, SCIP_Bool, SCIPdebug, SCIPprintVar(), SCIPprobdataGetNVars(), SCIPprobdataGetVars(), SCIPsortedvecFindInt(), SCIPvardataGetConsids(), SCIPvardataGetNConsids(), SCIPvardataPrint(), SCIPvarGetData(), SCIPvarGetUbLocal(), and TRUE.

Referenced by SCIP_DECL_CONSPROP().

◆ consdataFree()

static SCIP_RETCODE consdataFree ( SCIP scip,
SCIP_CONSDATA **  consdata 
)
static

frees samediff constraint data

Parameters
scipSCIP data structure
consdatapointer to the constraint data

Definition at line 298 of file cons_samediff.c.

References NULL, SCIP_OKAY, and SCIPfreeBlockMemory.

Referenced by SCIP_DECL_CONSDELETE().

◆ SCIP_DECL_CONSDELETE()

static SCIP_DECL_CONSDELETE ( consDeleteSamediff  )
static

frees specific constraint data

Definition at line 321 of file cons_samediff.c.

References consdataFree(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, and SCIPconshdlrGetName().

◆ SCIP_DECL_CONSTRANS()

◆ SCIP_DECL_CONSPROP()

static SCIP_DECL_CONSPROP ( consPropSamediff  )
static

◆ SCIP_DECL_CONSACTIVE()

static SCIP_DECL_CONSACTIVE ( consActiveSamediff  )
static

◆ SCIP_DECL_CONSDEACTIVE()

static SCIP_DECL_CONSDEACTIVE ( consDeactiveSamediff  )
static

◆ SCIP_DECL_CONSPRINT()

static SCIP_DECL_CONSPRINT ( consPrintSamediff  )
static

constraint display method of constraint handler

Definition at line 513 of file cons_samediff.c.

References consdataPrint(), NULL, SCIP_OKAY, and SCIPconsGetData().

◆ SCIPincludeConshdlrSamediff()

◆ SCIPcreateConsSamediff()

SCIP_RETCODE SCIPcreateConsSamediff ( SCIP scip,
SCIP_CONS **  cons,
const char *  name,
int  itemid1,
int  itemid2,
CONSTYPE  type,
SCIP_NODE node,
SCIP_Bool  local 
)

creates and captures a samediff constraint

Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
itemid1item id one
itemid2item id two
typestores whether the items have to be in the SAME or DIFFER packing
nodethe node in the B&B-tree at which the cons is sticking
localis constraint only valid locally?

Definition at line 559 of file cons_samediff.c.

References consdataCreate(), consdataPrint(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPdebug, SCIPdebugMsg, SCIPerrorMessage, SCIPfindConshdlr(), and TRUE.

Referenced by SCIP_DECL_BRANCHEXECLP().

◆ SCIPgetItemid1Samediff()

int SCIPgetItemid1Samediff ( SCIP scip,
SCIP_CONS cons 
)

returns item id one

Parameters
scipSCIP data structure
conssamediff constraint

Definition at line 595 of file cons_samediff.c.

References NULL, and SCIPconsGetData().

Referenced by addBranchingDecisionConss().

◆ SCIPgetItemid2Samediff()

int SCIPgetItemid2Samediff ( SCIP scip,
SCIP_CONS cons 
)

returns item id two

Parameters
scipSCIP data structure
conssamediff constraint

Definition at line 611 of file cons_samediff.c.

References NULL, and SCIPconsGetData().

Referenced by addBranchingDecisionConss().

◆ SCIPgetTypeSamediff()

CONSTYPE SCIPgetTypeSamediff ( SCIP scip,
SCIP_CONS cons 
)

return constraint type SAME or DIFFER

Parameters
scipSCIP data structure
conssamediff constraint

Definition at line 627 of file cons_samediff.c.

References NULL, and SCIPconsGetData().

Referenced by addBranchingDecisionConss().