63 return (strcmp(heur1->
name, heur2->
name));
121 divesetstats->
nlps = 0;
141 for( d = 0; d < 4; ++d )
160 SCIP_Longint nbestsolsfound,
161 SCIP_Longint nconflictsfound,
210 SCIP_Longint nbestsolsfound,
211 SCIP_Longint nconflictsfound,
224 for(
c = 0;
c < 2; ++
c )
227 nbacktracks,
nsolsfound, nbestsolsfound, nconflictsfound, leavesol);
273 SCIP_Real minreldepth,
274 SCIP_Real maxreldepth,
275 SCIP_Real maxlpiterquot,
276 SCIP_Real maxdiveubquot,
278 SCIP_Real maxdiveavgquot,
280 SCIP_Real maxdiveubquotnosol,
281 SCIP_Real maxdiveavgquotnosol,
282 SCIP_Real lpresolvedomchgquot,
285 unsigned int initialseed,
287 SCIP_Bool onlylpbranchcands,
297 const char* divesetname;
323 diveset->divesetgetscore = divesetgetscore;
324 diveset->divesetavailable = divesetavailable;
332 for(
c = 0;
c < 4; ++
c )
343 paramname,
"minimal relative depth to start diving",
348 "maximal relative depth to start diving",
354 "maximal fraction of diving LP iterations compared to node LP iterations",
360 "additional number of allowed LP iterations",
366 "maximal quotient (curlowerbound - lowerbound)/(cutoffbound - lowerbound) where diving is performed (0.0: no limit)",
372 "maximal quotient (curlowerbound - lowerbound)/(avglowerbound - lowerbound) where diving is performed (0.0: no limit)",
378 "maximal UBQUOT when no solution was found yet (0.0: no limit)",
384 "maximal AVGQUOT when no solution was found yet (0.0: no limit)",
390 "use one level of backtracking if infeasibility is encountered?",
395 "percentage of immediate domain changes during probing to trigger LP resolve",
401 "LP solve frequency for diving heuristics (0: only after enough domain changes have been found)",
408 "should only LP branching candidates be considered instead of the slower but "
409 "more general constraint handler diving variable selection?",
494 return divesetstats->
ncalls;
777 SCIP_Longint niterstoadd
783 divesetstats->
nlps++;
790 SCIP_Longint niterstoadd,
823 for(
c = 0;
c < 4; ++
c )
839 SCIP_Real divecandsol,
840 SCIP_Real divecandfrac,
841 SCIP_Real* candscore,
891 if( heur->heurcopy !=
NULL )
915 SCIP_Bool usessubscip,
941 (*heur)->dispchar = dispchar;
942 (*heur)->priority = priority;
943 (*heur)->freq = freq;
944 (*heur)->freqofs = freqofs;
946 (*heur)->delaypos = -1;
947 (*heur)->timingmask = timingmask;
948 (*heur)->usessubscip = usessubscip;
949 (*heur)->heurcopy = heurcopy;
950 (*heur)->heurfree = heurfree;
951 (*heur)->heurinit = heurinit;
952 (*heur)->heurexit = heurexit;
953 (*heur)->heurinitsol = heurinitsol;
954 (*heur)->heurexitsol = heurexitsol;
955 (*heur)->heurexec = heurexec;
960 (*heur)->nsolsfound = 0;
961 (*heur)->nbestsolsfound = 0;
962 (*heur)->initialized =
FALSE;
963 (*heur)->divesets =
NULL;
964 (*heur)->ndivesets = 0;
970 &(*heur)->priority,
TRUE, priority, INT_MIN/4, INT_MAX/4,
973 (void)
SCIPsnprintf(paramdesc,
SCIP_MAXSTRLEN,
"frequency for calling primal heuristic <%s> (-1: never, 0: only at depth freqofs)", name);
1002 SCIP_Bool usessubscip,
1020 SCIP_CALL_FINALLY(
doHeurCreate(heur,
set, messagehdlr, blkmem, name, desc, dispchar, priority, freq, freqofs,
1021 maxdepth, timingmask, usessubscip, heurcopy, heurfree, heurinit, heurexit, heurinitsol, heurexitsol, heurexec,
1038 assert(!(*heur)->initialized);
1040 assert((*heur)->divesets !=
NULL || (*heur)->ndivesets == 0);
1043 if( (*heur)->heurfree !=
NULL )
1048 for( d = 0; d < (*heur)->ndivesets; ++d )
1079 if(
set->misc_resetstat )
1093 if( heur->heurinit !=
NULL )
1131 if( heur->heurexit !=
NULL )
1162 if( heur->heurinitsol !=
NULL )
1186 if( heur->heurexitsol !=
NULL )
1204 int lpstateforkdepth,
1215 execute = heur->
freq >= 0;
1240 execute = execute || (heur->
delaypos >= 0);
1257 execute = execute && (heur->
timingmask & heurtiming) > 0;
1268 int lpstateforkdepth,
1270 SCIP_Bool nodeinfeasible,
1303 SCIP_Longint oldnsolsfound;
1304 SCIP_Longint oldnbestsolsfound;
1327 SCIPerrorMessage(
"execution method of primal heuristic <%s> returned invalid result <%d>\n",
1348 SCIPsetDebugMsg(
set,
"delaying execution of primal heuristic <%s> in depth %d (delaypos: %d), heur was%s delayed before, had delaypos %d\n",
1352 if( heur->
delaypos != *ndelayedheurs )
1394 heur->heurcopy = heurcopy;
1405 heur->heurfree = heurfree;
1416 heur->heurinit = heurinit;
1427 heur->heurexit = heurexit;
1438 heur->heurinitsol = heurinitsol;
1449 heur->heurexitsol = heurexitsol;
1709 int currentdistance;
1716 SCIP_Bool localvargraph;
1722 assert(maxdistance >= 0);
1736 if( vargraph ==
NULL )
1740 localvargraph =
TRUE;
1743 localvargraph =
FALSE;
1758 for(
i = 0;
i < nstartvars; ++
i )
1763 distances[probindex] = 0;
1764 queue[
i] = probindex;
1767 if( probindex < nbinintvars )
1771 nextlvlidx =
nvars - 1;
1780 currvar =
vars[queue[currlvlidx]];
1782 currentdistance = distances[varpos];
1783 assert(currentdistance >= 0);
1786 assert(currentdistance <= maxdistance);
1789 if( currentdistance == maxdistance )
1819 for( v = 0; v < nconsvars; ++v )
1831 if( distances[nextvarpos] == -1 )
1833 distances[nextvarpos] = currentdistance + 1;
1834 queue[nextlvlidx] = nextvarpos;
1835 nextlvlidx -= increment;
1838 if( nextvarpos < nbinintvars )
1847 queue[currlvlidx] = -1;
1848 currlvlidx += increment;
1851 if( currlvlidx ==
nvars || currlvlidx == 0 || queue[currlvlidx] == -1 || currlvlidx == nextlvlidx )
1854 if( nvarshit >= maxvars || nbinintvarshit >= maxbinintvars )
1860 if( increment == +1 )
1862 currlvlidx =
nvars - 1;
1869 nextlvlidx =
nvars - 1;
1874 while( queue[currlvlidx] != -1 && distances[queue[currlvlidx]] >= currentdistance );
1896 SCIP_Bool relaxdenseconss,
1898 SCIP_Real relaxdensity,
1899 int* nrelaxedconstraints
1918 if( nrelaxedconstraints !=
NULL )
1919 *nrelaxedconstraints = 0;
1921 relaxlimit = (int)(relaxdensity *
nvars);
1923 for(
c = 0;
c < nconss; ++
c )
1941 if( relaxdenseconss && nconsvars >= relaxlimit )
1943 if( nrelaxedconstraints !=
NULL )
1944 ++(*nrelaxedconstraints);
1956 for( v = 0; v < nconsvars; ++v )
2000 SCIP_Bool relaxdenseconss,
2002 SCIP_Real relaxdensity,
2003 int* nrelaxedconstraints
2021 SCIPhashKeyEqPtr, SCIPhashKeyValPtr,
NULL) );
2047 for( v =
nvars - 1; v >= 0; --v )
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPclockReset(SCIP_CLOCK *clck)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
common defines and data types used in all packages of SCIP
#define SCIP_MAXTREEDEPTH
#define SCIP_CALL_FINALLY(x, y)
SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
SCIP_CONS ** SCIPgetConss(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
int SCIPgetNConss(SCIP *scip)
void SCIPhashtableFree(SCIP_HASHTABLE **hashtable)
SCIP_Bool SCIPhashtableExists(SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPhashtableCreate(SCIP_HASHTABLE **hashtable, BMS_BLKMEM *blkmem, int tablesize, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr)
void SCIPhashtableRemoveAll(SCIP_HASHTABLE *hashtable)
SCIP_RETCODE SCIPhashtableInsert(SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPgetConsNVars(SCIP *scip, SCIP_CONS *cons, int *nvars, SCIP_Bool *success)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_RETCODE SCIPgetConsVars(SCIP *scip, SCIP_CONS *cons, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
SCIP_Real SCIPdivesetGetMaxLPIterQuot(SCIP_DIVESET *diveset)
SCIP_Bool SCIPdivesetIsPublic(SCIP_DIVESET *diveset)
SCIP_Real SCIPdivesetGetUbQuotNoSol(SCIP_DIVESET *diveset)
SCIP_Real SCIPdivesetGetMaxRelDepth(SCIP_DIVESET *diveset)
SCIP_Longint SCIPdivesetGetNBacktracks(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Longint SCIPdivesetGetNSols(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
int SCIPdivesetGetMaxSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Longint SCIPdivesetGetNConflicts(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Real SCIPdivesetGetAvgQuot(SCIP_DIVESET *diveset)
SCIP_Bool SCIPdivesetUseBacktrack(SCIP_DIVESET *diveset)
int SCIPdivesetGetLPSolveFreq(SCIP_DIVESET *diveset)
SCIP_Real SCIPdivesetGetMinRelDepth(SCIP_DIVESET *diveset)
SCIP_Real SCIPdivesetGetUbQuot(SCIP_DIVESET *diveset)
SCIP_Real SCIPdivesetGetAvgSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
int SCIPdivesetGetMaxDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
int SCIPdivesetGetMinDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Bool SCIPdivesetSupportsType(SCIP_DIVESET *diveset, SCIP_DIVETYPE divetype)
SCIP_Real SCIPdivesetGetAvgDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Bool SCIPdivesetUseOnlyLPBranchcands(SCIP_DIVESET *diveset)
SCIP_Longint SCIPdivesetGetNLPIterations(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Longint SCIPdivesetGetSolSuccess(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
int SCIPdivesetGetMinSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
const char * SCIPdivesetGetName(SCIP_DIVESET *diveset)
int SCIPdivesetGetNCalls(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Real SCIPdivesetGetAvgQuotNoSol(SCIP_DIVESET *diveset)
SCIP_RANDNUMGEN * SCIPdivesetGetRandnumgen(SCIP_DIVESET *diveset)
SCIP_Longint SCIPdivesetGetNProbingNodes(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Real SCIPdivesetGetLPResolveDomChgQuot(SCIP_DIVESET *diveset)
int SCIPdivesetGetNSolutionCalls(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
int SCIPdivesetGetMaxLPIterOffset(SCIP_DIVESET *diveset)
SCIP_RETCODE SCIPsetHeurPriority(SCIP *scip, SCIP_HEUR *heur, int priority)
char SCIPheurGetDispchar(SCIP_HEUR *heur)
SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)
SCIP_HEURTIMING SCIPheurGetTimingmask(SCIP_HEUR *heur)
const char * SCIPheurGetDesc(SCIP_HEUR *heur)
SCIP_Longint SCIPheurGetNSolsFound(SCIP_HEUR *heur)
int SCIPheurGetPriority(SCIP_HEUR *heur)
SCIP_Bool SCIPheurUsesSubscip(SCIP_HEUR *heur)
SCIP_Longint SCIPheurGetNBestSolsFound(SCIP_HEUR *heur)
void SCIPheurSetFreq(SCIP_HEUR *heur, int freq)
void SCIPheurSetTimingmask(SCIP_HEUR *heur, SCIP_HEURTIMING timingmask)
SCIP_Longint SCIPheurGetNCalls(SCIP_HEUR *heur)
int SCIPheurGetFreqofs(SCIP_HEUR *heur)
SCIP_Real SCIPheurGetSetupTime(SCIP_HEUR *heur)
int SCIPheurGetMaxdepth(SCIP_HEUR *heur)
int SCIPheurGetNDivesets(SCIP_HEUR *heur)
int SCIPheurGetFreq(SCIP_HEUR *heur)
SCIP_Real SCIPheurGetTime(SCIP_HEUR *heur)
const char * SCIPheurGetName(SCIP_HEUR *heur)
SCIP_Bool SCIPheurIsInitialized(SCIP_HEUR *heur)
SCIP_DIVESET ** SCIPheurGetDivesets(SCIP_HEUR *heur)
void SCIPheurSetData(SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPallocClearBlockMemoryArray(scip, ptr, num)
#define SCIPallocClearBufferArray(scip, ptr, num)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPallocBlockMemory(scip, ptr)
void SCIPvariableGraphFree(SCIP *scip, SCIP_VGRAPH **vargraph)
SCIP_RETCODE SCIPvariablegraphBreadthFirst(SCIP *scip, SCIP_VGRAPH *vargraph, SCIP_VAR **startvars, int nstartvars, int *distances, int maxdistance, int maxvars, int maxbinintvars)
SCIP_RETCODE SCIPvariableGraphCreate(SCIP *scip, SCIP_VGRAPH **vargraph, SCIP_Bool relaxdenseconss, SCIP_Real relaxdensity, int *nrelaxedconstraints)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
int SCIPsnprintf(char *t, int len, const char *s,...)
void SCIPheurSetExit(SCIP_HEUR *heur,)
void SCIPheurEnableOrDisableClocks(SCIP_HEUR *heur, SCIP_Bool enable)
SCIP_RETCODE SCIPdivesetIsAvailable(SCIP_DIVESET *diveset, SCIP_SET *set, SCIP_Bool *available)
void SCIPheurSetPriority(SCIP_HEUR *heur, SCIP_SET *set, int priority)
SCIP_RETCODE SCIPheurInit(SCIP_HEUR *heur, SCIP_SET *set)
static SCIP_RETCODE heurAddDiveset(SCIP_HEUR *heur, SCIP_DIVESET *diveset)
SCIP_RETCODE SCIPdivesetReset(SCIP_DIVESET *diveset, SCIP_SET *set)
void SCIPdivesetUpdateLPStats(SCIP_DIVESET *diveset, SCIP_STAT *stat, SCIP_Longint niterstoadd, SCIP_DIVECONTEXT divecontext)
static void divesetFree(SCIP_DIVESET **divesetptr, BMS_BLKMEM *blkmem)
static SCIP_DIVESETSTATS * divesetGetStats(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
static SCIP_RETCODE doHeurCreate(SCIP_HEUR **heur, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, SCIP_HEURTIMING timingmask, SCIP_Bool usessubscip, SCIP_DECL_HEURCOPY((*heurcopy)), SCIP_DECL_HEURFREE((*heurfree)), SCIP_DECL_HEURINIT((*heurinit)), SCIP_DECL_HEUREXIT((*heurexit)), SCIP_DECL_HEURINITSOL((*heurinitsol)), SCIP_DECL_HEUREXITSOL((*heurexitsol)), SCIP_DECL_HEUREXEC((*heurexec)), SCIP_HEURDATA *heurdata)
SCIP_RETCODE SCIPheurExec(SCIP_HEUR *heur, SCIP_SET *set, SCIP_PRIMAL *primal, int depth, int lpstateforkdepth, SCIP_HEURTIMING heurtiming, SCIP_Bool nodeinfeasible, int *ndelayedheurs, SCIP_RESULT *result)
static void resetDivesetStats(SCIP_DIVESETSTATS *divesetstats)
SCIP_RETCODE SCIPheurCreate(SCIP_HEUR **heur, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, SCIP_HEURTIMING timingmask, SCIP_Bool usessubscip, SCIP_DECL_HEURCOPY((*heurcopy)), SCIP_DECL_HEURFREE((*heurfree)), SCIP_DECL_HEURINIT((*heurinit)), SCIP_DECL_HEUREXIT((*heurexit)), SCIP_DECL_HEURINITSOL((*heurinitsol)), SCIP_DECL_HEUREXITSOL((*heurexitsol)), SCIP_DECL_HEUREXEC((*heurexec)), SCIP_HEURDATA *heurdata)
SCIP_RETCODE SCIPheurCopyInclude(SCIP_HEUR *heur, SCIP_SET *set)
void SCIPheurSetInit(SCIP_HEUR *heur,)
void SCIPdivesetUpdateStats(SCIP_DIVESET *diveset, SCIP_STAT *stat, int depth, int nprobingnodes, int nbacktracks, SCIP_Longint nsolsfound, SCIP_Longint nbestsolsfound, SCIP_Longint nconflictsfound, SCIP_Bool leavesol, SCIP_DIVECONTEXT divecontext)
SCIP_RETCODE SCIPheurInitsol(SCIP_HEUR *heur, SCIP_SET *set)
void SCIPheurSetFree(SCIP_HEUR *heur,)
SCIP_RETCODE SCIPheurExitsol(SCIP_HEUR *heur, SCIP_SET *set)
static void updateDivesetstats(SCIP_DIVESETSTATS *divesetstats, int depth, int nprobingnodes, int nbacktracks, SCIP_Longint nsolsfound, SCIP_Longint nbestsolsfound, SCIP_Longint nconflictsfound, SCIP_Bool leavesol)
void SCIPheurSetCopy(SCIP_HEUR *heur,)
SCIP_Bool SCIPheurShouldBeExecuted(SCIP_HEUR *heur, int depth, int lpstateforkdepth, SCIP_HEURTIMING heurtiming, SCIP_Bool *delayed)
void SCIPheurSetInitsol(SCIP_HEUR *heur,)
SCIP_HEUR * SCIPdivesetGetHeur(SCIP_DIVESET *diveset)
SCIP_SOL * SCIPdivesetGetWorkSolution(SCIP_DIVESET *diveset)
SCIP_RETCODE SCIPdivesetGetScore(SCIP_DIVESET *diveset, SCIP_SET *set, SCIP_DIVETYPE divetype, SCIP_VAR *divecand, SCIP_Real divecandsol, SCIP_Real divecandfrac, SCIP_Real *candscore, SCIP_Bool *roundup)
void SCIPdivesetSetWorkSolution(SCIP_DIVESET *diveset, SCIP_SOL *sol)
SCIP_RETCODE SCIPdivesetCreate(SCIP_DIVESET **divesetptr, SCIP_HEUR *heur, const char *name, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_Real minreldepth, SCIP_Real maxreldepth, SCIP_Real maxlpiterquot, SCIP_Real maxdiveubquot, SCIP_Real maxdiveavgquot, SCIP_Real maxdiveubquotnosol, SCIP_Real maxdiveavgquotnosol, SCIP_Real lpresolvedomchgquot, int lpsolvefreq, int maxlpiterofs, unsigned int initialseed, SCIP_Bool backtrack, SCIP_Bool onlylpbranchcands, SCIP_Bool ispublic, SCIP_DIVETYPE divetypemask, SCIP_DECL_DIVESETGETSCORE((*divesetgetscore)),)
void SCIPheurSetExitsol(SCIP_HEUR *heur,)
static void updateDivesetstatsLP(SCIP_DIVESETSTATS *divesetstats, SCIP_Longint niterstoadd)
static SCIP_RETCODE fillVariableGraph(SCIP *scip, SCIP_VGRAPH *vargraph, SCIP_Bool relaxdenseconss, SCIP_Real relaxdensity, int *nrelaxedconstraints)
SCIP_RETCODE SCIPheurFree(SCIP_HEUR **heur, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPheurExit(SCIP_HEUR *heur, SCIP_SET *set)
internal methods for primal heuristics
static SCIP_DIVESET * diveset
assert(minobj< SCIPgetCutoffbound(scip))
static const char * paramname[]
#define BMSfreeMemory(ptr)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSclearMemory(ptr)
#define BMSallocMemoryArray(ptr, num)
#define BMSfreeMemoryArray(ptr)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPrandomFree(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPrandomCreate(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem, unsigned int initialseed)
void SCIPrandomSetSeed(SCIP_RANDNUMGEN *randnumgen, unsigned int initseed)
internal miscellaneous methods
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
SCIP_PARAMDATA * SCIPparamGetData(SCIP_PARAM *param)
int SCIPparamGetInt(SCIP_PARAM *param)
internal methods for handling parameter settings
internal methods for collecting primal CIP solutions and primal informations
public methods for message output
public data structures and miscellaneous methods
SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPsetAddBoolParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPsetAddRealParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
unsigned int SCIPsetInitializeRandomSeed(SCIP_SET *set, unsigned int initialseedvalue)
internal methods for global SCIP settings
SCIP_Longint nlpiterations
SCIP_Longint totalsoldepth
SCIP_Longint totalnbacktracks
SCIP_Longint nconflictsfound
SCIP_Longint nbestsolsfound
SCIP_RANDNUMGEN * randnumgen
SCIP_DIVETYPE divetypemask
SCIP_Real maxdiveavgquotnosol
SCIP_Real maxdiveubquotnosol
SCIP_DIVESETSTATS * divesetstats[4]
SCIP_Real lpresolvedomchgquot
SCIP_Bool onlylpbranchcands
SCIP_HEURTIMING timingmask
SCIP_Longint nbestsolsfound
SCIP_Longint nbestsolsfound
SCIP_Longint ndivesetlpiterations
SCIP_Longint totaldivesetdepth
SCIP_HASHTABLE * visitedconss
datastructures for primal heuristics
#define SCIP_DECL_DIVESETAVAILABLE(x)
#define SCIP_DECL_HEURINITSOL(x)
#define SCIP_DECL_HEURCOPY(x)
enum SCIP_DiveContext SCIP_DIVECONTEXT
struct SCIP_HeurData SCIP_HEURDATA
#define SCIP_DECL_HEURINIT(x)
#define SCIP_DECL_HEUREXIT(x)
unsigned int SCIP_DIVETYPE
#define SCIP_DECL_HEURFREE(x)
#define SCIP_DECL_DIVESETGETSCORE(x)
#define SCIP_DECL_HEUREXITSOL(x)
#define SCIP_DECL_HEUREXEC(x)
@ SCIP_DIVECONTEXT_SINGLE
@ SCIP_DIVECONTEXT_ADAPTIVE
@ SCIP_DIVECONTEXT_SCHEDULER
#define SCIP_DECL_SORTPTRCOMP(x)
struct SCIP_ParamData SCIP_PARAMDATA
#define SCIP_DECL_PARAMCHGD(x)
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
#define SCIP_HEURTIMING_BEFOREPRESOL
#define SCIP_HEURTIMING_AFTERPSEUDONODE
unsigned int SCIP_HEURTIMING
#define SCIP_HEURTIMING_DURINGPRESOLLOOP
#define SCIP_HEURTIMING_AFTERLPPLUNGE
#define SCIP_HEURTIMING_AFTERPSEUDOPLUNGE
#define SCIP_HEURTIMING_AFTERLPNODE