implied bounds separator
Definition in file sepa_impliedbounds.c.
#include <assert.h>
#include <string.h>
#include "scip/sepa_impliedbounds.h"
#include "scip/pub_misc.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) |
#define SEPA_NAME "impliedbounds" |
Definition at line 31 of file sepa_impliedbounds.c.
Referenced by SCIP_DECL_SEPACOPY(), SCIP_DECL_SEPAFREE(), and SCIPincludeSepaImpliedbounds().
#define SEPA_DESC "implied bounds separator" |
Definition at line 32 of file sepa_impliedbounds.c.
Referenced by SCIPincludeSepaImpliedbounds().
#define SEPA_PRIORITY -50 |
Definition at line 33 of file sepa_impliedbounds.c.
Referenced by SCIPincludeSepaImpliedbounds().
#define SEPA_FREQ 10 |
Definition at line 34 of file sepa_impliedbounds.c.
Referenced by SCIPincludeSepaImpliedbounds().
#define SEPA_MAXBOUNDDIST 1.0 |
Definition at line 35 of file sepa_impliedbounds.c.
Referenced by SCIPincludeSepaImpliedbounds().
#define SEPA_USESSUBSCIP FALSE |
does the separator use a secondary SCIP instance?
Definition at line 36 of file sepa_impliedbounds.c.
Referenced by SCIPincludeSepaImpliedbounds().
#define SEPA_DELAY FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 37 of file sepa_impliedbounds.c.
Referenced by SCIPincludeSepaImpliedbounds().
#define RELCUTCOEFMAXRANGE 1.0 |
maximal allowed range of cut coefficients, relative to 1/feastol
Definition at line 39 of file sepa_impliedbounds.c.
Referenced by separateCuts().
#define DEFAULT_USETWOSIZECLIQUES TRUE |
should violated inequalities for cliques with 2 variables be separated?
Definition at line 40 of file sepa_impliedbounds.c.
Referenced by SCIPincludeSepaImpliedbounds().
|
static |
adds given cut with two variables, if it is violated
scip | SCIP data structure |
sepa | separator |
val1 | given coefficient of first variable |
var1 | given first variable |
solval1 | current LP solution value of first variable |
val2 | given coefficient of second variable |
var2 | given second variable |
solval2 | current LP solution value of second variable |
rhs | given right hand side of the cut to add |
cutoff | whether a cutoff has been detected |
ncuts | pointer to update number of cuts added |
Definition at line 54 of file sepa_impliedbounds.c.
References FALSE, 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().
|
static |
searches and adds implied bound cuts that are violated by the given solution value array
scip | SCIP data structure |
sepa | separator |
sol | the solution that should be separated, or NULL for LP solution |
solvals | array with solution values of all problem variables |
fracvars | array of fractional variables |
fracvals | solution values of fractional variables |
nfracs | number of fractional variables |
cutoff | whether a cutoff has been detected |
ncuts | pointer to store the number of generated cuts |
Definition at line 112 of file sepa_impliedbounds.c.
References addCut(), FALSE, 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().
|
static |
copy method for separator plugins (called when SCIP copies plugins)
Definition at line 351 of file sepa_impliedbounds.c.
References SCIP_CALL, SCIP_OKAY, SCIPincludeSepaImpliedbounds(), SCIPsepaGetName(), and SEPA_NAME.
|
static |
destructor of separator to free user data (called when SCIP is exiting)
Definition at line 365 of file sepa_impliedbounds.c.
References SCIP_OKAY, SCIPfreeBlockMemory, SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaSetData(), and SEPA_NAME.
|
static |
LP solution separation method of separator
Definition at line 387 of file sepa_impliedbounds.c.
References SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetLPBranchCands(), SCIPgetVarsData(), SCIPgetVarSols(), and separateCuts().
|
static |
arbitrary primal solution separation method of separator
Definition at line 439 of file sepa_impliedbounds.c.
References FALSE, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetSolVals(), SCIPgetVarsData(), SCIPisFeasIntegral(), and separateCuts().