50#define COMPR_NAME "largestrepr"
51#define COMPR_DESC "heuristic searching for large common representatives"
52#define COMPR_PRIORITY 2000
53#define COMPR_MINNNODES 20
55#define DEFAUL_MEM_REPR 10
56#define DEFAULT_ITERS 5
57#define DEFAULT_MINCOMMONVARS 3
69 int representativessize;
70 SCIP_Bool initialized;
104 for( v =
nvars - 1; v >= 0; --v )
140 SCIP_Real* lowerbounds;
142 const char** varnames;
421 SCIPdebugMsg(
scip,
"-> did not found a intersection larger than %d\n", comprdata->mincomvars);
456 if( comprdata->representativessize <
nreps )
463 comprdata->representativessize =
nreps;
474 comprdata->score = score;
475 comprdata->nrepresentatives =
nreps;
507 if( comprdata->nrepresentatives > 0 )
509 SCIPdebugMessage(
"best representation found has %d leaf nodes and score = %g\n", comprdata->nrepresentatives, comprdata->score);
512 for(
k = 0;
k < comprdata->nrepresentatives-1;
k++ )
519 for(
r =
k + 1;
r < comprdata->nrepresentatives;
r++ )
627 if( comprdata->nrepresentatives == 0 )
631 for(
r = 0;
r < comprdata->nrepresentatives;
r++ )
693 if( comprdata->initialized )
695 if( comprdata->representativessize > 0 )
700 comprdata->representatives =
NULL;
701 comprdata->representativessize = 0;
702 comprdata->nrepresentatives = 0;
703 comprdata->initialized =
FALSE;
718 if( !comprdata->initialized )
723 comprdata->nrepresentatives = 0;
724 comprdata->rate = 0.0;
725 comprdata->score = 0.0;
726 comprdata->nnodes = 0;
732 comprdata->initialized =
TRUE;
773 comprdata->initialized =
FALSE;
static SCIP_RETCODE constructCompression(SCIP *scip, SCIP_COMPR *compr, SCIP_COMPRDATA *comprdata, SCIP_RESULT *result)
static void calcSignature(SCIP_VAR **vars, SCIP_Real *vals, int nvars, uint64_t *signature0, uint64_t *signature1)
SCIP_RETCODE SCIPincludeComprLargestrepr(SCIP *scip)
static SCIP_RETCODE applyCompression(SCIP *scip, SCIP_COMPR *compr, SCIP_COMPRDATA *comprdata, SCIP_RESULT *result)
#define DEFAULT_MINCOMMONVARS
largestrepr tree compression
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNOrigVars(SCIP *scip)
int SCIPgetNBinVars(SCIP *scip)
SCIP_VAR * SCIPfindVar(SCIP *scip, const char *name)
#define SCIPhashSignature64(a)
SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
void SCIPcomprSetData(SCIP_COMPR *compr, SCIP_COMPRDATA *comprdata)
SCIP_RETCODE SCIPincludeComprBasic(SCIP *scip, SCIP_COMPR **compr, const char *name, const char *desc, int priority, int minnnodes, SCIP_DECL_COMPREXEC((*comprexec)), SCIP_COMPRDATA *comprdata)
SCIP_COMPRDATA * SCIPcomprGetData(SCIP_COMPR *compr)
SCIP_RETCODE SCIPsetComprCopy(SCIP *scip, SCIP_COMPR *compr,)
SCIP_RETCODE SCIPsetComprFree(SCIP *scip, SCIP_COMPR *compr,)
SCIP_RETCODE SCIPsetComprExit(SCIP *scip, SCIP_COMPR *compr,)
const char * SCIPcomprGetName(SCIP_COMPR *compr)
int SCIPcomprGetMinNodes(SCIP_COMPR *compr)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPreallocMemoryArray(scip, ptr, newnum)
#define SCIPallocClearBlockMemoryArray(scip, ptr, num)
#define SCIPallocClearBufferArray(scip, ptr, num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPallocClearMemoryArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPfreeMemoryArray(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
int SCIPgetNReoptLeaves(SCIP *scip, SCIP_NODE *node)
SCIP_RETCODE SCIPaddReoptnodeBndchg(SCIP *scip, SCIP_REOPTNODE *reoptnode, SCIP_VAR *var, SCIP_Real bound, SCIP_BOUNDTYPE boundtype)
SCIP_REOPTNODE * SCIPgetReoptnode(SCIP *scip, unsigned int id)
SCIP_RETCODE SCIPinitRepresentation(SCIP *scip, SCIP_REOPTNODE **representatives, int nrepresentatives)
SCIP_RETCODE SCIPsetReoptCompression(SCIP *scip, SCIP_REOPTNODE **representation, int nrepresentatives, SCIP_Bool *success)
SCIP_RETCODE SCIPgetReoptLeaveIDs(SCIP *scip, SCIP_NODE *node, unsigned int *ids, int idssize, int *nids)
void SCIPgetReoptnodePath(SCIP *scip, SCIP_REOPTNODE *reoptnode, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, int mem, int *nvars, int *nafterdualvars)
SCIP_RETCODE SCIPaddReoptnodeCons(SCIP *scip, SCIP_REOPTNODE *reoptnode, SCIP_VAR **vars, SCIP_Real *vals, SCIP_BOUNDTYPE *boundtypes, SCIP_Real lhs, SCIP_Real rhs, int nvars, REOPT_CONSTYPE constype, SCIP_Bool linear)
SCIP_RETCODE SCIPfreeRepresentation(SCIP *scip, SCIP_REOPTNODE **representatives, int nrepresentatives)
SCIP_RETCODE SCIPresetRepresentation(SCIP *scip, SCIP_REOPTNODE **representatives, int nrepresentatives)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisSumGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)
assert(minobj< SCIPgetCutoffbound(scip))
memory allocation routines
public methods for tree compressions
public methods for message output
public data structures and miscellaneous methods
public methods for reoptimization
SCIP_Real SCIPreoptnodeGetLowerbound(SCIP_REOPTNODE *reoptnode)
void SCIPreoptnodeSetParentID(SCIP_REOPTNODE *reoptnode, unsigned int parentid)
int SCIPreoptnodeGetNVars(SCIP_REOPTNODE *reoptnode)
public methods for problem variables
public methods for compression plugins
public methods for memory management
public methods for message handling
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for global and local (sub)problems
public methods for reoptimization
struct SCIP_ComprData SCIP_COMPRDATA
#define SCIP_DECL_COMPRFREE(x)
#define SCIP_DECL_COMPREXEC(x)
#define SCIP_DECL_COMPREXIT(x)
#define SCIP_DECL_COMPRCOPY(x)
enum SCIP_BoundType SCIP_BOUNDTYPE
@ REOPT_CONSTYPE_DUALREDS
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE