54#define INIT_MAP_SIZE 2000
62 SCIP_Bool benderslabels
75 memsize = nblocks + 1;
80 (*decomp)->memsize = memsize;
81 (*decomp)->nblocks = nblocks;
82 (*decomp)->modularity = -1.0;
83 (*decomp)->idxsmallestblock = -1;
84 (*decomp)->idxlargestblock = -1;
85 (*decomp)->original = original;
86 (*decomp)->benderslabels = benderslabels;
87 (*decomp)->areascore = -1.0;
88 (*decomp)->nedges = 0;
89 (*decomp)->mindegree = 0;
90 (*decomp)->maxdegree = 0;
91 (*decomp)->ncomponents = 0;
92 (*decomp)->narticulations = 0;
93 (*decomp)->statscomplete =
FALSE;
107 if( *decomp ==
NULL )
187 for(
i = 0;
i < nconss; ++
i )
212 for(
i = 0;
i < nconss; ++
i )
226 SCIP_Bool clearvarlabels,
227 SCIP_Bool clearconslabels
237 if( clearconslabels )
260 SCIP_Bool benderslabels
333 for(
i = 0;
i < nsizes; ++
i )
366 for(
i = 0;
i < nsizes; ++
i )
468 "Decomposition with %d blocks.\n",
471 "Largest block: Block %d with %d constraints and %d variables\n",
476 "Smallest block: Block %d with %d constraints and %d variables\n",
481 "Border has %d constraints and %d variables\n",
487 "Modularity: %.3f, Area Score: %.3f\n",
491 "Constraint Block Graph: %d edges, %d articulation points, %d connected components, %d min., %d max. degree%s\n",
494 "(approximately: graph construction hit size limit)");
512 (*decompstore)->ndecomps = 0;
513 (*decompstore)->norigdecomps = 0;
514 (*decompstore)->decompssize = nslots;
536 for( d = 0; d < *ndecomps; ++d )
562 if( *decompstore ==
NULL )
565 freeDecompositions(blkmem, (*decompstore)->origdecomps, &(*decompstore)->norigdecomps);
594 decomps = decompstore->
decomps;
595 ndecompsptr = &decompstore->
ndecomps;
605 decomps[(*ndecompsptr)++] = decomp;
665 SCIP_Bool original =
FALSE;
670 decompstore =
scip->decompstore;
683 nvarsoriginal = nvarsintroduced = 0;
684 for( v = 0; v <
nvars; ++v )
696 if( origvar ==
NULL )
698 varssorted[
nvars - 1 - nvarsintroduced] =
vars[v];
703 varssorted[nvarsoriginal] =
vars[v];
704 origvars[nvarsoriginal] = origvar;
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 methods for message output
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