Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

implied bounds separator

Author
Kati Wolter
Tobias Achterberg

Definition in file sepa_impliedbounds.c.

#include "blockmemshell/memory.h"
#include "scip/pub_implics.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_sepa.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cut.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_sepa.h"
#include "scip/scip_sol.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_var.h"
#include "scip/sepa_impliedbounds.h"
#include <string.h>

Go to the source code of this file.

Macros

#define SEPA_NAME   "impliedbounds"
 
#define SEPA_DESC   "implied bounds separator"
 
#define SEPA_PRIORITY   -50
 
#define SEPA_FREQ   10
 
#define SEPA_MAXBOUNDDIST   1.0
 
#define SEPA_USESSUBSCIP   FALSE
 
#define SEPA_DELAY   FALSE
 
#define RELCUTCOEFMAXRANGE   1.0
 
#define DEFAULT_USETWOSIZECLIQUES   TRUE
 

Functions

static SCIP_RETCODE addCut (SCIP *scip, SCIP_SEPA *sepa, SCIP_Real val1, SCIP_VAR *var1, SCIP_Real solval1, SCIP_Real val2, SCIP_VAR *var2, SCIP_Real solval2, SCIP_Real rhs, SCIP_Bool *cutoff, int *ncuts)
 
static SCIP_RETCODE separateCuts (SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_Real *solvals, SCIP_VAR **fracvars, SCIP_Real *fracvals, int nfracs, SCIP_Bool *cutoff, int *ncuts)
 
static SCIP_DECL_SEPACOPY (sepaCopyImpliedbounds)
 
static SCIP_DECL_SEPAFREE (sepaFreeImpliedbounds)
 
static SCIP_DECL_SEPAEXECLP (sepaExeclpImpliedbounds)
 
static SCIP_DECL_SEPAEXECSOL (sepaExecsolImpliedbounds)
 
SCIP_RETCODE SCIPincludeSepaImpliedbounds (SCIP *scip)
 

Macro Definition Documentation

◆ SEPA_NAME

#define SEPA_NAME   "impliedbounds"

◆ SEPA_DESC

#define SEPA_DESC   "implied bounds separator"

Definition at line 49 of file sepa_impliedbounds.c.

Referenced by SCIPincludeSepaImpliedbounds().

◆ SEPA_PRIORITY

#define SEPA_PRIORITY   -50

Definition at line 50 of file sepa_impliedbounds.c.

Referenced by SCIPincludeSepaImpliedbounds().

◆ SEPA_FREQ

#define SEPA_FREQ   10

Definition at line 51 of file sepa_impliedbounds.c.

Referenced by SCIPincludeSepaImpliedbounds().

◆ SEPA_MAXBOUNDDIST

#define SEPA_MAXBOUNDDIST   1.0

Definition at line 52 of file sepa_impliedbounds.c.

Referenced by SCIPincludeSepaImpliedbounds().

◆ SEPA_USESSUBSCIP

#define SEPA_USESSUBSCIP   FALSE

does the separator use a secondary SCIP instance?

Definition at line 53 of file sepa_impliedbounds.c.

Referenced by SCIPincludeSepaImpliedbounds().

◆ SEPA_DELAY

#define SEPA_DELAY   FALSE

should separation method be delayed, if other separators found cuts?

Definition at line 54 of file sepa_impliedbounds.c.

Referenced by SCIPincludeSepaImpliedbounds().

◆ RELCUTCOEFMAXRANGE

#define RELCUTCOEFMAXRANGE   1.0

maximal allowed range of cut coefficients, relative to 1/feastol

Definition at line 56 of file sepa_impliedbounds.c.

Referenced by separateCuts().

◆ DEFAULT_USETWOSIZECLIQUES

#define DEFAULT_USETWOSIZECLIQUES   TRUE

should violated inequalities for cliques with 2 variables be separated?

Definition at line 57 of file sepa_impliedbounds.c.

Referenced by SCIPincludeSepaImpliedbounds().

Function Documentation

◆ addCut()

static SCIP_RETCODE addCut ( SCIP scip,
SCIP_SEPA sepa,
SCIP_Real  val1,
SCIP_VAR var1,
SCIP_Real  solval1,
SCIP_Real  val2,
SCIP_VAR var2,
SCIP_Real  solval2,
SCIP_Real  rhs,
SCIP_Bool cutoff,
int *  ncuts 
)
static

adds given cut with two variables, if it is violated

Parameters
scipSCIP data structure
sepaseparator
val1given coefficient of first variable
var1given first variable
solval1current LP solution value of first variable
val2given coefficient of second variable
var2given second variable
solval2current LP solution value of second variable
rhsgiven right hand side of the cut to add
cutoffwhether a cutoff has been detected
ncutspointer to update number of cuts added

Definition at line 71 of file sepa_impliedbounds.c.

References FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddPoolCut(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPcreateEmptyRowSepa(), SCIPdebugMsg, SCIPflushRowExtensions(), SCIPgetNLPs(), SCIPinfinity(), SCIPisEfficacious(), SCIPprintRow(), SCIPreleaseRow(), SCIProwChgRank(), SCIPsnprintf(), and TRUE.

Referenced by separateCuts().

◆ separateCuts()

static SCIP_RETCODE separateCuts ( SCIP scip,
SCIP_SEPA sepa,
SCIP_SOL sol,
SCIP_Real solvals,
SCIP_VAR **  fracvars,
SCIP_Real fracvals,
int  nfracs,
SCIP_Bool cutoff,
int *  ncuts 
)
static

searches and adds implied bound cuts that are violated by the given solution value array

Parameters
scipSCIP data structure
sepaseparator
solthe solution that should be separated, or NULL for LP solution
solvalsarray with solution values of all problem variables
fracvarsarray of fractional variables
fracvalssolution values of fractional variables
nfracsnumber of fractional variables
cutoffwhether a cutoff has been detected
ncutspointer to store the number of generated cuts

Definition at line 129 of file sepa_impliedbounds.c.

References addCut(), FALSE, NULL, RELCUTCOEFMAXRANGE, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPcleanupCliques(), SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPcliqueIsEquation(), SCIPdebugMsg, SCIPfeastol(), SCIPgetCliques(), SCIPgetNCliques(), SCIPgetSolVal(), SCIPisGE(), SCIPisLE(), SCIPsepaGetData(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbGlobal(), SCIPvarGetNImpls(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECSOL().

◆ SCIP_DECL_SEPACOPY()

static SCIP_DECL_SEPACOPY ( sepaCopyImpliedbounds  )
static

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

Definition at line 368 of file sepa_impliedbounds.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPincludeSepaImpliedbounds(), SCIPsepaGetName(), and SEPA_NAME.

◆ SCIP_DECL_SEPAFREE()

static SCIP_DECL_SEPAFREE ( sepaFreeImpliedbounds  )
static

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

Definition at line 382 of file sepa_impliedbounds.c.

References NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaSetData(), and SEPA_NAME.

◆ SCIP_DECL_SEPAEXECLP()

static SCIP_DECL_SEPAEXECLP ( sepaExeclpImpliedbounds  )
static

◆ SCIP_DECL_SEPAEXECSOL()

static SCIP_DECL_SEPAEXECSOL ( sepaExecsolImpliedbounds  )
static