implied bounds separator
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) |
#define SEPA_NAME "impliedbounds" |
Definition at line 57 of file sepa_impliedbounds.c.
#define SEPA_DESC "implied bounds separator" |
Definition at line 58 of file sepa_impliedbounds.c.
#define SEPA_PRIORITY -50 |
Definition at line 59 of file sepa_impliedbounds.c.
#define SEPA_FREQ 10 |
Definition at line 60 of file sepa_impliedbounds.c.
#define SEPA_MAXBOUNDDIST 1.0 |
Definition at line 61 of file sepa_impliedbounds.c.
#define SEPA_USESSUBSCIP FALSE |
does the separator use a secondary SCIP instance?
Definition at line 62 of file sepa_impliedbounds.c.
#define SEPA_DELAY FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 63 of file sepa_impliedbounds.c.
#define RELCUTCOEFMAXRANGE 1.0 |
maximal allowed range of cut coefficients, relative to 1/feastol
Definition at line 65 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 66 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 80 of file sepa_impliedbounds.c.
References assert(), cutoff, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_LONGINT_FORMAT, 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 138 of file sepa_impliedbounds.c.
References addCut(), assert(), cutoff, FALSE, i, 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(), sepadata, sol, 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 377 of file sepa_impliedbounds.c.
References assert(), NULL, 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 391 of file sepa_impliedbounds.c.
References assert(), NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaSetData(), SEPA_NAME, and sepadata.
|
static |
LP solution separation method of separator
Definition at line 413 of file sepa_impliedbounds.c.
References assert(), cutoff, nbinvars, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetLPBranchCands(), SCIPgetVarsData(), SCIPgetVarSols(), separateCuts(), and vars.
|
static |
arbitrary primal solution separation method of separator
Definition at line 465 of file sepa_impliedbounds.c.
References assert(), cutoff, FALSE, i, nbinvars, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetSolVals(), SCIPgetVarsData(), SCIPisFeasIntegral(), separateCuts(), sol, and vars.