53#define INIT_MAP_SIZE 2000
61 SCIP_Bool benderslabels
74 memsize = nblocks + 1;
79 (*decomp)->memsize = memsize;
80 (*decomp)->nblocks = nblocks;
81 (*decomp)->modularity = -1.0;
82 (*decomp)->idxsmallestblock = -1;
83 (*decomp)->idxlargestblock = -1;
84 (*decomp)->original = original;
85 (*decomp)->benderslabels = benderslabels;
86 (*decomp)->areascore = -1.0;
87 (*decomp)->nedges = 0;
88 (*decomp)->mindegree = 0;
89 (*decomp)->maxdegree = 0;
90 (*decomp)->ncomponents = 0;
91 (*decomp)->narticulations = 0;
92 (*decomp)->statscomplete =
FALSE;
106 if( *decomp ==
NULL )
186 for(
i = 0;
i < nconss; ++
i )
211 for(
i = 0;
i < nconss; ++
i )
259 SCIP_Bool benderslabels
467 "Decomposition with %d blocks.\n",
470 "Largest block: Block %d with %d constraints and %d variables\n",
475 "Smallest block: Block %d with %d constraints and %d variables\n",
480 "Border has %d constraints and %d variables\n",
486 "Modularity: %.3f, Area Score: %.3f\n",
490 "Constraint Block Graph: %d edges, %d articulation points, %d connected components, %d min., %d max. degree%s\n",
493 "(approximately: graph construction hit size limit)");
511 (*decompstore)->ndecomps = 0;
512 (*decompstore)->norigdecomps = 0;
513 (*decompstore)->decompssize =
nslots;
535 for(
d = 0;
d < *ndecomps; ++
d )
561 if( *decompstore ==
NULL )
564 freeDecompositions(blkmem, (*decompstore)->origdecomps, &(*decompstore)->norigdecomps);
593 decomps = decompstore->
decomps;
604 decomps[(*ndecompsptr)++] = decomp;
664 SCIP_Bool original =
FALSE;
669 decompstore =
scip->decompstore;
683 for( v = 0; v <
nvars; ++v )
void SCIPexitSolveDecompstore(SCIP *scip)
SCIP_RETCODE SCIPdecompstoreCreate(SCIP_DECOMPSTORE **decompstore, BMS_BLKMEM *blkmem, int nslots)
int SCIPdecompstoreGetNOrigDecomps(SCIP_DECOMPSTORE *decompstore)
void SCIPdecompstoreFree(SCIP_DECOMPSTORE **decompstore, BMS_BLKMEM *blkmem)
static void freeDecompositions(BMS_BLKMEM *blkmem, SCIP_DECOMP **decomps, int *ndecomps)
SCIP_DECOMP ** SCIPdecompstoreGetDecomps(SCIP_DECOMPSTORE *decompstore)
SCIP_DECOMP ** SCIPdecompstoreGetOrigDecomps(SCIP_DECOMPSTORE *decompstore)
SCIP_RETCODE SCIPtransformDecompstore(SCIP *scip)
SCIP_RETCODE SCIPdecompstoreAdd(SCIP_DECOMPSTORE *decompstore, SCIP_DECOMP *decomp)
int SCIPdecompstoreGetNDecomps(SCIP_DECOMPSTORE *decompstore)
internal methods for decompositions and the decomposition store
SCIP_RETCODE SCIPcomputeDecompConsLabels(SCIP *scip, SCIP_DECOMP *decomp, SCIP_CONS **conss, int nconss)
SCIP_RETCODE SCIPdecompSetVarsLabels(SCIP_DECOMP *decomp, SCIP_VAR **vars, int *labels, int nvars)
int SCIPdecompGetNBlocks(SCIP_DECOMP *decomp)
int SCIPdecompGetBlockGraphMinDegree(SCIP_DECOMP *decomp)
SCIP_RETCODE SCIPcomputeDecompVarsLabels(SCIP *scip, SCIP_DECOMP *decomp, SCIP_CONS **conss, int nconss)
SCIP_RETCODE SCIPdecompSetConsLabels(SCIP_DECOMP *decomp, SCIP_CONS **conss, int *labels, int nconss)
SCIP_RETCODE SCIPdecompCreate(SCIP_DECOMP **decomp, BMS_BLKMEM *blkmem, int nblocks, SCIP_Bool original, SCIP_Bool benderslabels)
SCIP_RETCODE SCIPdecompGetVarsSize(SCIP_DECOMP *decomp, int *varssize, int nlabels)
int SCIPdecompGetNBlockGraphEdges(SCIP_DECOMP *decomp)
SCIP_RETCODE SCIPcomputeDecompStats(SCIP *scip, SCIP_DECOMP *decomp, SCIP_Bool uselimits)
char * SCIPdecompPrintStats(SCIP_DECOMP *decomp, char *strbuf)
SCIP_RETCODE SCIPdecompClear(SCIP_DECOMP *decomp, SCIP_Bool clearvarlabels, SCIP_Bool clearconslabels)
SCIP_RETCODE SCIPdecompGetConssSize(SCIP_DECOMP *decomp, int *consssize, int nlabels)
void SCIPdecompGetConsLabels(SCIP_DECOMP *decomp, SCIP_CONS **conss, int *labels, int nconss)
SCIP_RETCODE SCIPcreateDecomp(SCIP *scip, SCIP_DECOMP **decomp, int nblocks, SCIP_Bool original, SCIP_Bool benderslabels)
void SCIPdecompFree(SCIP_DECOMP **decomp, BMS_BLKMEM *blkmem)
int SCIPdecompGetBlockGraphMaxDegree(SCIP_DECOMP *decomp)
void SCIPdecompSetUseBendersLabels(SCIP_DECOMP *decomp, SCIP_Bool benderslabels)
SCIP_Real SCIPdecompGetModularity(SCIP_DECOMP *decomp)
int SCIPdecompGetNBorderVars(SCIP_DECOMP *decomp)
SCIP_Real SCIPdecompGetAreaScore(SCIP_DECOMP *decomp)
void SCIPdecompGetVarsLabels(SCIP_DECOMP *decomp, SCIP_VAR **vars, int *labels, int nvars)
SCIP_Bool SCIPdecompUseBendersLabels(SCIP_DECOMP *decomp)
int SCIPdecompGetNBlockGraphArticulations(SCIP_DECOMP *decomp)
int SCIPdecompGetNBorderConss(SCIP_DECOMP *decomp)
int SCIPdecompGetNBlockGraphComponents(SCIP_DECOMP *decomp)
SCIP_Bool SCIPdecompIsOriginal(SCIP_DECOMP *decomp)
SCIP_STAGE SCIPgetStage(SCIP *scip)
SCIP_CONS ** SCIPgetConss(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
int SCIPgetNConss(SCIP *scip)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
int SCIPhashmapGetImageInt(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapRemoveAll(SCIP_HASHMAP *hashmap)
SCIP_RETCODE SCIPhashmapSetImageInt(SCIP_HASHMAP *hashmap, void *origin, int image)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
int SCIPsnprintf(char *t, int len, const char *s,...)
assert(minobj< SCIPgetCutoffbound(scip))
methods for block memory pools and memory buffers
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSallocBlockMemoryArray(mem, ptr, num)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
struct BMS_BlkMem BMS_BLKMEM
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
public methods for managing constraints
public methods for decompositions
public data structures and miscellaneous methods
public methods for problem variables
public methods for constraint handler plugins and constraints
public methods for data structures
public methods for decompositions
public methods for memory management
public methods for message handling
public methods for global and local (sub)problems
public methods for SCIP variables
SCIP_DECOMP ** origdecomps
SCIP_HASHMAP * cons2block
data structures for a decomposition and a decomposition store
SCIP main data structure.
#define SCIP_DECOMP_LINKVAR
#define SCIP_DECOMP_LINKCONS
enum SCIP_Retcode SCIP_RETCODE