76#define HEUR_NAME "scheduler"
77#define HEUR_DESC "Adaptive heuristic to schedule LNS and diving heuristics"
78#define HEUR_DISPCHAR SCIP_HEURDISPCHAR_LNS
79#define HEUR_PRIORITY -30000
82#define HEUR_MAXDEPTH -1
83#define HEUR_TIMING SCIP_HEURTIMING_AFTERNODE
84#define HEUR_USESSUBSCIP TRUE
86#define NNEIGHBORHOODS 9
87#define DIVINGHEURS_INITIALSIZE 10
92#define DEFAULT_NODESQUOT 0.1
93#define DEFAULT_NODESQUOTMIN 0.0
94#define DEFAULT_NODESOFFSET 500LL
95#define DEFAULT_NSOLSLIM 3
96#define DEFAULT_MINNODES 50LL
97#define DEFAULT_MAXNODES 500LL
98#define DEFAULT_WAITINGNODES 0LL
99#define DEFAULT_INITLNSNODELIMIT 50
100#define DEFAULT_INITDIVINGNODELIMIT 500LL
101#define DEFAULT_TARGETNODEFACTOR 1.05
104#define DEFAULT_INITDURINGROOT FALSE
105#define DEFAULT_MAXCALLSSAMESOL -1
110#define DEFAULT_BESTSOLWEIGHT 1
111#define DEFAULT_BANDITALGO 'i'
112#define DEFAULT_RESETWEIGHTS FALSE
113#define DEFAULT_SUBSCIPRANDSEEDS FALSE
114#define DEFAULT_FIXTOL 0.1
115#define DEFAULT_UNFIXTOL 0.1
116#define DEFAULT_BETA 0.0
117#define DEFAULT_NSELECTIONS 5
122#define DEFAULT_USEREDCOST TRUE
123#define DEFAULT_USEPSCOST TRUE
124#define DEFAULT_USEDISTANCES TRUE
125#define DEFAULT_USELOCALREDCOST FALSE
130#define DEFAULT_EFFORTREWARDWEIGHT 0.2
131#define DEFAULT_SOLREWARDWEIGHT 0.3
132#define DEFAULT_QUALREWARDWEIGHT 0.3
133#define DEFAULT_CONFLICTREWARDWEIGHT 0.2
139#define DEFAULT_EPS 0.4685844
140#define DEFAULT_ALPHA 0.0016
141#define DEFAULT_GAMMA 0.07041455
146#define SOLVEFREQ_DECAY 0.75
147#define SOLVEFREQ_STARTINC 0.2
148#define MAXSOLVEFREQ 0.3
149#define MINSOLVEFREQ 0.05
154#define FIXINGRATE_DECAY 0.75
155#define FIXINGRATE_STARTINC 0.2
156#define DEFAULT_USESUBSCIPHEURS FALSE
157#define DEFAULT_COPYCUTS FALSE
160#define DEFAULT_SEED 113
161#define MUTATIONSEED 121
162#define CROSSOVERSEED 321
165#define DEFAULT_MINFIXINGRATE_RENS 0.3
166#define DEFAULT_MAXFIXINGRATE_RENS 0.9
167#define DEFAULT_ACTIVE_RENS TRUE
169#define DEFAULT_PRIORITY_RENS -1100000
171#define DEFAULT_MINFIXINGRATE_RINS 0.3
172#define DEFAULT_MAXFIXINGRATE_RINS 0.9
173#define DEFAULT_ACTIVE_RINS TRUE
175#define DEFAULT_PRIORITY_RINS -1101000
177#define DEFAULT_MINFIXINGRATE_MUTATION 0.3
178#define DEFAULT_MAXFIXINGRATE_MUTATION 0.9
179#define DEFAULT_ACTIVE_MUTATION TRUE
181#define DEFAULT_PRIORITY_MUTATION -1103010
183#define DEFAULT_MINFIXINGRATE_LOCALBRANCHING 0.3
184#define DEFAULT_MAXFIXINGRATE_LOCALBRANCHING 0.9
185#define DEFAULT_ACTIVE_LOCALBRANCHING TRUE
187#define DEFAULT_PRIORITY_LOCALBRANCHING -1102000
189#define DEFAULT_MINFIXINGRATE_PROXIMITY 0.3
190#define DEFAULT_MAXFIXINGRATE_PROXIMITY 0.9
191#define DEFAULT_ACTIVE_PROXIMITY TRUE
193#define DEFAULT_PRIORITY_PROXIMITY -2000000
195#define DEFAULT_MINFIXINGRATE_CROSSOVER 0.3
196#define DEFAULT_MAXFIXINGRATE_CROSSOVER 0.9
197#define DEFAULT_ACTIVE_CROSSOVER TRUE
199#define DEFAULT_PRIORITY_CROSSOVER -1104000
201#define DEFAULT_MINFIXINGRATE_ZEROOBJECTIVE 0.3
202#define DEFAULT_MAXFIXINGRATE_ZEROOBJECTIVE 0.9
203#define DEFAULT_ACTIVE_ZEROOBJECTIVE TRUE
205#define DEFAULT_PRIORITY_ZEROOBJECTIVE 100
207#define DEFAULT_MINFIXINGRATE_DINS 0.3
208#define DEFAULT_MAXFIXINGRATE_DINS 0.9
209#define DEFAULT_ACTIVE_DINS TRUE
211#define DEFAULT_PRIORITY_DINS -1105000
213#define DEFAULT_MINFIXINGRATE_TRUSTREGION 0.3
214#define DEFAULT_MAXFIXINGRATE_TRUSTREGION 0.9
215#define DEFAULT_ACTIVE_TRUSTREGION FALSE
217#define DEFAULT_PRIORITY_TRUSTREGION -1102010
220#define DEFAULT_NSOLS_CROSSOVER 2
221#define DEFAULT_NPOOLSOLS_DINS 5
222#define DEFAULT_VIOLPENALTY_TRUSTREGION 100.0
225#define EVENTHDLR_NAME "Scheduler"
226#define EVENTHDLR_DESC "LP event handler for " HEUR_NAME " heuristic"
227#define SCIP_EVENTTYPE_SCHEDULER (SCIP_EVENTTYPE_LPSOLVED | SCIP_EVENTTYPE_SOLFOUND | SCIP_EVENTTYPE_BESTSOLFOUND)
230#define TABLE_NAME_NEIGHBORHOOD "scheduler"
231#define TABLE_DESC_NEIGHBORHOOD "scheduler heuristics statistics"
232#define TABLE_POSITION_NEIGHBORHOOD 12500
233#define TABLE_EARLIEST_STAGE_NEIGHBORHOOD SCIP_STAGE_TRANSFORMED
264 #define DECL_VARFIXINGS(x) SCIP_RETCODE x ( \
270 SCIP_RESULT* result \
281#define DECL_CHANGESUBSCIP(x) SCIP_RETCODE x ( \
285 SCIP_VAR** subvars, \
293#define DECL_NHINIT(x) SCIP_RETCODE x ( \
299#define DECL_NHEXIT(x) SCIP_RETCODE x ( \
305#define DECL_NHFREE(x) SCIP_RETCODE x ( \
318#define DECL_NHREFSOL(x) SCIP_RETCODE x ( \
322 SCIP_RESULT* result \
326#define DECL_NHDEACTIVATE(x) SCIP_RETCODE x (\
328 SCIP_Bool* deactivate \
343#define NHISTENTRIES 7
502 int nactiveneighborhoods;
503 int ninitneighborhoods;
506 int currneighborhood;
511 int initlnsnodelimit;
623 switch (subscipstatus)
746 (*neighborhood)->changesubscip = changesubscip;
747 (*neighborhood)->varfixings = varfixings;
748 (*neighborhood)->nhinit = nhinit;
749 (*neighborhood)->nhexit = nhexit;
750 (*neighborhood)->nhfree = nhfree;
751 (*neighborhood)->nhrefsol = nhrefsol;
752 (*neighborhood)->nhdeactivate = nhdeactivate;
754 (*neighborhood)->rootnodepriority = priority;
759 &(*neighborhood)->fixingrate.minfixingrate,
TRUE, minfixingrate, 0.0, 1.0,
NULL,
NULL) );
762 &(*neighborhood)->fixingrate.maxfixingrate,
TRUE, maxfixingrate, 0.0, 1.0,
NULL,
NULL) );
768 &(*neighborhood)->priority,
TRUE, 1.0, 1e-2, 1.0,
NULL,
NULL) );
787 nhptr = *neighborhood;
793 if( nhptr->nhfree !=
NULL )
802 *neighborhood =
NULL;
818 if( neighborhood->nhinit !=
NULL )
836 if( neighborhood->nhexit !=
NULL )
865 sourcescip = eventdata->sourcescip;
866 subvars = eventdata->subvars;
867 heur = eventdata->heur;
868 runstats = eventdata->runstats;
870 assert(sourcescip != subscip);
906 divingheurptr = *divingheur;
997 switch (subscipstatus)
1029 SCIPinfoMessage(
scip, file,
"LNS (Scheduler) : %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %4s %4s %4s %4s %4s %4s %4s %4s\n",
1030 "Calls",
"SetupTime",
"SolveTime",
"SolveNodes",
"Sols",
"Best",
"Exp3",
"Exp3-IX",
"EpsGreedy",
"UCB",
"TgtFixRate",
1031 "Opt",
"Inf",
"Node",
"Stal",
"Sol",
"Usr",
"Othr",
"Actv");
1042 neighborhood =
heurdata->neighborhoods[
i];
1054 epsgreedyweight = -1.0;
1103 const char* statusnames[] = {
"optimal",
"infeasible",
"nodelimit",
"stallnodelimit",
"sollimit",
"userinterrupt",
"other"};
1118 const char* statusname;
1167 statusname = statusnames[j];
1188 SCIPinfoMessage(
scip, file,
"Diving (Scheduler) : %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s \n",
1189 "Calls",
"SetupTime",
"SolveTime",
"SolveNodes",
"Sols",
"Best",
"Exp3",
"Exp3-IX",
"EpsGreedy",
"UCB",
"LPResolveQuot",
"MaxDiveDepth");
1212 epsgreedyweight = -1.0;
1328 stats = divingheur->
stats;
1361 stats = &neighborhood->
stats;
1422 else if( dist1 > dist2 )
1478 if( ! uselocalredcost )
1503 score = redcost * (refsolval - bestbound);
1506 if( ! uselocalredcost )
1507 score =
MAX(score, 0.0);
1566 varbuf[*nfixings] =
var;
1567 valbuf[*nfixings] = val;
1628 nvarstoadd = ntargetfixings - *nfixings;
1629 if( nvarstoadd == 0 )
1662 for(
b = 0;
b < *nfixings; ++
b )
1671 isfixed[probindex] =
TRUE;
1693 unfixedvars[nunfixedvars] =
var;
1694 perm[nunfixedvars] = nunfixedvars;
1698 solvals[nunfixedvars] = solvals[
b];
1699 distances[nunfixedvars] = distances[
b];
1715 if( nvarstoadd < nunfixedvars )
1716 SCIPselectInd(perm, sortIndCompScheduler, &varprio, nvarstoadd, nunfixedvars);
1718 nvarstoadd = nunfixedvars;
1721 for(
b = 0;
b < nvarstoadd; ++
b )
1723 int permindex = perm[
b];
1725 assert(permindex < nunfixedvars);
1751 unsigned int initseed
1762 heurdata->ucb_alpha, nactions, initseed) );
1818 if( neighborhood->nhrefsol !=
NULL )
1859 int* fixeddistances;
1892 for(
i = 0;
i < *nfixings; ++
i )
1898 isfixedvar[probindex] =
TRUE;
1906 if( ! isfixedvar[
i] )
1907 unfixedvars[nunfixed++] =
vars[
i];
1917 for(
i = 0;
i < *nfixings; ++
i )
1920 if( probindex >= 0 )
1921 fixeddistances[
i] = distances[probindex];
1931 for(
i = 0;
i < *nfixings; ++
i )
1955 SCIPselectDownInd(perm, sortIndCompScheduler, &varprio, ntargetfixings, *nfixings);
1958 for(
i = 0;
i < ntargetfixings; ++
i )
1960 valbuf[
i] = valbufcpy[perm[
i]];
1961 varbuf[
i] = varbufcpy[perm[
i]];
1964 *nfixings = ntargetfixings;
2012 if( neighborhood->varfixings !=
NULL )
2014 SCIP_CALL( neighborhood->varfixings(
scip, neighborhood, varbuf, valbuf, nfixings,
result) );
2019 else if( ntargetfixings == 0 )
2030 nminfixings =
MAX(nminfixings, 0);
2034 SCIPdebugMsg(
scip,
"Neighborhood Fixings/Target: %d / %d <= %d <= %d\n",*nfixings, nminfixings, ntargetfixings, nmaxfixings);
2046 if( refsol !=
NULL )
2060 SCIPdebugMsg(
scip,
"After additional fixings: %d / %d\n",*nfixings, ntargetfixings);
2062 else if( (
SCIP_Real)(*nfixings) > nmaxfixings )
2070 SCIPdebugMsg(
scip,
"Unfixed variables, fixed variables remaining: %d\n", ntargetfixings);
2108 if( neighborhood->changesubscip !=
NULL )
2110 SCIP_CALL( neighborhood->changesubscip(sourcescip, targetscip, neighborhood, targetvars, ndomchgs, nchgobjs, naddedconss, success) );
2178 SCIPdebugMsg(
scip,
"Aborting LNS heuristic call: Not enough memory or time left.\n");
2210 effortsaved = (1.0 - effortsaved);
2211 assert(effortsaved >= 0.0 && effortsaved <= 1.0);
2219 conflictreward = 0.0;
2220 else if(
heurdata->maxnconflicts > 0 )
2223 conflictreward = 1.0;
2226 conflictreward = 0.0;
2227 assert(conflictreward >= 0.0 && conflictreward <= 1.0);
2236 bestsolreward = 1.0;
2243 closedgapreward = 1.0;
2249 bestsolreward = 0.0;
2250 closedgapreward = 0.0;
2254 totalreward =
heurdata->effortrewardweight * effortsaved +
heurdata->solrewardweight * bestsolreward
2255 +
heurdata->qualrewardweight * closedgapreward +
heurdata->conflictrewardweight * conflictreward;
2256 totalreward =
MIN( totalreward, 1.0);
2257 assert(totalreward >= 0.0 && totalreward <= 1.0);
2287#ifdef SCHEDULER_SUBSCIPOUTPUT
2510 int newsize = 2 *
heurdata->divingheurssize;
2512 heurdata->divingheurssize = newsize;
2605 divingheurs =
heurdata->divingheurs;
2648 SCIPdebugMsg(
scip,
"Finished executing diving heuristic %s (idx: %d) with %lld sols (%lld best sols), %lld conflicts, %lld backtracks and %lld probing nodes \n",
2738 SCIPdebugMsg(
scip,
"Aborting LNS heuristic call: Not enough variables fixed.\n");
2754 SCIP_CALL(
SCIPcopyLargeNeighborhoodSearch(
scip, subscip, varmapf, probnamesuffix, varbuf, valbuf, nfixings,
FALSE,
heurdata->copycuts, &success,
NULL) );
2757 for( v = 0; v <
nvars; ++v )
2770 SCIPdebugMsg(
scip,
"Aborting LNS heuristic call: Problems with creating subproblem.\n");
2778 eventdata.nodelimit = solvelimits.
nodelimit;
2779 eventdata.lplimfac =
heurdata->lplimfac;
2780 eventdata.heur = heur;
2781 eventdata.sourcescip =
scip;
2782 eventdata.subvars = subvars;
2783 eventdata.runstats = runstats;
2800 SCIPwarningMessage(
scip,
"Error while presolving subproblem in Scheduler heuristic; sub-SCIP terminated with code <%d>\n", retcode);
2810#ifdef SCHEDULER_SUBSCIPOUTPUT
2822 if( subscip !=
NULL )
2839 SCIPdebugMsg(
scip,
"Finished executing LNS heuristic %s (idx: %d) with %lld sols (%lld best sols) and %lld nodes used.\n",
2893 unsigned int initseed;
2900 priorities[
i] =
heurdata->divingheurs[
i]->priority;
2901 for(
i = 0;
i <
heurdata->nactiveneighborhoods; ++
i )
2954 for(
i = 0;
i <
heurdata->nactiveneighborhoods; ++
i )
2965 for(
i = 0;
i < nheurs; ++
i )
2999 SCIPdebugMsg(
scip,
"Calling heurExecScheduler: depth %d sols %d inf %u node %lld \n",
3012 if( nodeinfeasible )
3035 if(
heurdata->maxcallssamesol != -1 )
3143 int *fracidx =
NULL;
3165 if( nbinvars + nintvars == 0 )
3172 for( nfracs = 0,
i = 0;
i < nbinvars + nintvars; ++
i )
3187 fracidx[nfracs++] =
i;
3192 if( *nfixings < neighborhood->fixingrate.
targetfixingrate * (nbinvars + nintvars) && nfracs > 0 )
3227 for(
i = nbinvars;
i < nbinvars + nintvars; ++
i )
3232 if( subvars[
i] ==
NULL )
3295 for( v = 0; v <
nvars; ++v )
3306 for( s = 1; s < nsols; ++s )
3348 if( incumbent ==
NULL )
3358 if( nbinvars + nintvars == 0 )
3362 sols[1] = incumbent;
3433 nsols = data->
nsols;
3457 if( lastdraw == nsols )
3462 for( s = 0; s < nsols; ++s )
3463 sols[s] = scipsols[s];
3471 assert(nsols < lastdraw);
3477 sols[nsols - 1] = scipsols[nextdraw];
3479 lastdraw = nextdraw;
3585 if( incumbentsol ==
NULL )
3589 ntargetfixings = (int)(targetfixingrate *
nbinintvars) + 1;
3621 if( *nfixings == ntargetfixings )
3659 if( referencesol ==
NULL )
3663 rhs =
MAX(rhs, 2.0);
3668 for(
i = 0;
i < nbinvars; ++
i )
3671 if( subvars[
i] ==
NULL )
3723 if( referencesol ==
NULL )
3727 for(
i = 0;
i < nbinvars; ++
i )
3732 if( subvars[
i] ==
NULL )
3746 if( subvars[
i] ==
NULL )
3786 if( subvars[
i] ==
NULL )
3827 if(
REALABS(lpsol - mipsol) >= 0.5 )
3835 range = 2 * lpsol - mipsol;
3837 if( mipsol >= lpsol )
3840 *lbptr =
MAX(*lbptr, range);
3851 *ubptr =
MIN(*ubptr, range);
3861 *lbptr =
MAX(*lbptr, lbglobal);
3862 *ubptr =
MIN(*ubptr, ubglobal);
3867 *lbptr =
MAX(mipsol, lbglobal);
3868 *ubptr =
MIN(mipsol, ubglobal);
3903 if( nbinvars + nintvars == 0 )
3909 for( v = 0; v < nbinvars + nintvars; ++v )
3915 nsols = nmipsols + 2;
3919 sols[1] = rootlpsol;
3931 for( v = nbinvars; v < nintvars; ++v )
3965 for( v = nbinvars; v < nintvars; ++v )
3971 if( subvars[v] ==
NULL )
4112 varFixingsRens, changeSubscipRens,
NULL,
NULL,
NULL,
NULL, nhDeactivateDiscreteVars) );
4117 varFixingsRins,
NULL,
NULL,
NULL,
NULL, nhRefsolIncumbent, nhDeactivateDiscreteVars) );
4122 varFixingsMutation,
NULL, nhInitMutation, nhExitMutation,
NULL, nhRefsolIncumbent, nhDeactivateDiscreteVars) );
4127 NULL, changeSubscipLocalbranching,
NULL,
NULL,
NULL, nhRefsolIncumbent, nhDeactivateBinVars) );
4132 varFixingsCrossover,
NULL,
4133 nhInitCrossover, nhExitCrossover, nhFreeCrossover, nhRefsolCrossover, nhDeactivateDiscreteVars) );
4146 NULL, changeSubscipProximity,
NULL,
NULL,
NULL, nhRefsolIncumbent, nhDeactivateBinVars) );
4151 NULL, changeSubscipZeroobjective,
NULL,
NULL,
NULL, nhRefsolIncumbent, nhDeactivateObjVars) );
4156 varFixingsDins, changeSubscipDins,
NULL,
NULL, nhFreeDins, nhRefsolIncumbent, nhDeactivateBinVars) );
4163 "number of pool solutions where binary solution values must agree",
4169 NULL, changeSubscipTrustregion,
NULL,
NULL, nhFreeTrustregion, nhRefsolIncumbent, nhDeactivateBinVars) );
4175 "the penalty for each change in the binary variables from the candidate solution",
4216 for( j = 0; j <
heurdata->ndiving; ++j )
4241 unsigned int initseed;
4253 for(
i =
heurdata->nneighborhoods - 1;
i >= 0; --
i )
4261 if( deactivate || ! neighborhood->
active )
4263 if(
heurdata->nactiveneighborhoods - 1 >
i )
4278 priorities[
i] =
heurdata->divingheurs[
i]->priority;
4281 for(
i = 0;
i <
heurdata->nactiveneighborhoods; ++
i )
4287 priorities[
i] = 1.0;
4309 for(
i = 0;
i < nheurs; ++
i )
4405 for( j = 0; j <
heurdata->ndiving; ++j )
4529 "maximum number of nodes to regard in the subproblem",
4533 "offset added to the nodes budget",
4537 "minimum number of nodes required to start a sub-SCIP",
4541 "number of nodes since last incumbent solution that the heuristic should wait",
4545 "initial node limit for LNS heuristics",
4549 "initial node limit for diving heuristics",
4553 "fraction of nodes compared to the main SCIP for budget computation",
4557 "lower bound fraction of nodes compared to the main SCIP for budget computation",
4561 "limit on the number of improving solutions in a sub-SCIP call",
4565 "the bandit algorithm: (u)pper confidence bounds, (e)xp.3, epsilon (g)reedy, exp.3-(i)x",
4569 "weight between uniform (gamma ~ 1) and weight driven (gamma ~ 0) probability distribution for exp3",
4573 "reward offset between 0 and 1 at every observation for Exp.3",
4577 "parameter to increase the confidence width in UCB",
4581 "distances from fixed variables be used for variable prioritization",
4585 "should reduced cost scores be used for variable prioritization?",
4589 "should pseudo cost scores be used for variable priorization?",
4593 "should local reduced costs be used for generic (un)fixing?",
4597 "should the heuristic activate other sub-SCIP heuristics during its search?",
4601 "factor by which target node number is eventually increased",
4605 "initial random seed for bandit algorithms and random decisions by neighborhoods",
4609 "number of allowed executions of the heuristic on the same incumbent solution (-1: no limit, 0: number of active neighborhoods)",
4613 "increase exploration in epsilon-greedy bandit algorithm",
4617 "TRUE if modified version of the epsilon-greedy bandit algorithm should be used",
4621 "weight by how much finding a new incumbent is rewarded in reward function",
4625 "weight by how much effort is rewarded in reward function",
4629 "weight by how much quality of a new incumbent is rewarded in reward function",
4633 "weight by how much number of conflicts found by diving is rewarded in reward function",
4637 "should the bandit algorithms be reset when a new problem is read?",
4641 "should random seeds of sub-SCIPs be altered to increase diversification?",
4645 "should cutting planes be copied to the sub-SCIP?",
4649 "tolerance by which the fixing rate may be missed without generic fixing",
4653 "tolerance by which the fixing rate may be exceeded without generic unfixing",
4657 "should the heuristic be executed multiple times during the root node?",
4661 "should the default priorities be used at the root node?",
4665 "number of heuristics picked by the scheduler in one call (-1: number of controlled heuristics, 0: until new incumbent is found)",
static GRAPHNODE ** active
Constraint handler for linear constraints in their most general form, .
#define SCIP_CALL_ABORT(x)
#define SCIP_LONGINT_FORMAT
SCIP_RETCODE SCIPaddCoefLinear(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_RETCODE SCIPcreateConsBasicLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs)
SCIP_RETCODE SCIPcreateConsLinear(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPtranslateSubSol(SCIP *scip, SCIP *subscip, SCIP_SOL *subsol, SCIP_HEUR *heur, SCIP_VAR **subvars, SCIP_SOL **newsol)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_RETCODE SCIPfree(SCIP **scip)
SCIP_RETCODE SCIPcreate(SCIP **scip)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
int SCIPgetNObjVars(SCIP *scip)
int SCIPgetNIntVars(SCIP *scip)
SCIP_RETCODE SCIPsetObjlimit(SCIP *scip, SCIP_Real objlimit)
SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
int SCIPgetNBinVars(SCIP *scip)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *value)
SCIP_RETCODE SCIPaddLongintParam(SCIP *scip, const char *name, const char *desc, SCIP_Longint *valueptr, SCIP_Bool isadvanced, SCIP_Longint defaultvalue, SCIP_Longint minvalue, SCIP_Longint maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_Bool SCIPisParamFixed(SCIP *scip, const char *name)
SCIP_RETCODE SCIPaddCharParam(SCIP *scip, const char *name, const char *desc, char *valueptr, SCIP_Bool isadvanced, char defaultvalue, const char *allowedvalues, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
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)
SCIP_RETCODE SCIPsetLongintParam(SCIP *scip, const char *name, SCIP_Longint value)
SCIP_RETCODE SCIPaddRealParam(SCIP *scip, 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)
SCIP_RETCODE SCIPsetIntParam(SCIP *scip, const char *name, int value)
SCIP_RETCODE SCIPsetSubscipsOff(SCIP *scip, SCIP_Bool quiet)
SCIP_RETCODE SCIPgetRealParam(SCIP *scip, const char *name, SCIP_Real *value)
SCIP_RETCODE SCIPsetPresolving(SCIP *scip, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
SCIP_RETCODE SCIPsetCharParam(SCIP *scip, const char *name, char value)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPsetBoolParam(SCIP *scip, const char *name, SCIP_Bool value)
SCIP_RETCODE SCIPsetRealParam(SCIP *scip, const char *name, SCIP_Real value)
SCIP_RETCODE SCIPsetSeparating(SCIP *scip, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
void SCIPswapPointers(void **pointer1, void **pointer2)
SCIP_RETCODE SCIPincludeHeurScheduler(SCIP *scip)
SCIP_RETCODE SCIPresetBandit(SCIP *scip, SCIP_BANDIT *bandit, SCIP_Real *priorities, unsigned int seed)
SCIP_RETCODE SCIPbanditUpdate(SCIP_BANDIT *bandit, int action, SCIP_Real score)
int SCIPbanditGetNActions(SCIP_BANDIT *bandit)
SCIP_Real SCIPgetProbabilityExp3IX(SCIP_BANDIT *exp3ix, int action)
SCIP_Real * SCIPgetWeightsEpsgreedy(SCIP_BANDIT *epsgreedy)
SCIP_RANDNUMGEN * SCIPbanditGetRandnumgen(SCIP_BANDIT *bandit)
SCIP_RETCODE SCIPcreateBanditExp3(SCIP *scip, SCIP_BANDIT **exp3, SCIP_Real *priorities, SCIP_Real gammaparam, SCIP_Real beta, int nactions, unsigned int initseed)
SCIP_RETCODE SCIPcreateBanditEpsgreedy(SCIP *scip, SCIP_BANDIT **epsgreedy, SCIP_Real *priorities, SCIP_Real eps, SCIP_Bool usemodification, SCIP_Bool preferrecent, SCIP_Real decayfactor, int avglim, int nactions, unsigned int initseed)
SCIP_Real SCIPgetConfidenceBoundUcb(SCIP_BANDIT *ucb, int action)
SCIP_RETCODE SCIPcreateBanditExp3IX(SCIP *scip, SCIP_BANDIT **exp3ix, SCIP_Real *priorities, int nactions, unsigned int initseed)
SCIP_RETCODE SCIPbanditSelect(SCIP_BANDIT *bandit, int *action)
SCIP_RETCODE SCIPcreateBanditUcb(SCIP *scip, SCIP_BANDIT **ucb, SCIP_Real *priorities, SCIP_Real alpha, int nactions, unsigned int initseed)
SCIP_RETCODE SCIPfreeBandit(SCIP *scip, SCIP_BANDIT **bandit)
SCIP_Real SCIPgetProbabilityExp3(SCIP_BANDIT *exp3, int action)
SCIP_BRANCHRULE * SCIPfindBranchrule(SCIP *scip, const char *name)
SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
int SCIPconshdlrGetNActiveConss(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_RETCODE SCIPcreateDatatreeInTree(SCIP *scip, SCIP_DATATREE *datatree, SCIP_DATATREE **newtree, const char *name, int capacity)
SCIP_RETCODE SCIPinsertDatatreeBool(SCIP *scip, SCIP_DATATREE *datatree, const char *name, SCIP_Bool value)
SCIP_RETCODE SCIPinsertDatatreeInt(SCIP *scip, SCIP_DATATREE *datatree, const char *name, int value)
SCIP_RETCODE SCIPinsertDatatreeLong(SCIP *scip, SCIP_DATATREE *datatree, const char *name, SCIP_Longint value)
SCIP_RETCODE SCIPinsertDatatreeReal(SCIP *scip, SCIP_DATATREE *datatree, const char *name, SCIP_Real value)
SCIP_Bool SCIPdivesetIsPublic(SCIP_DIVESET *diveset)
SCIP_Longint SCIPdivesetGetNBacktracks(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Longint SCIPdivesetGetNSols(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_Longint SCIPdivesetGetNConflicts(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
const char * SCIPdivesetGetName(SCIP_DIVESET *diveset)
SCIP_Longint SCIPdivesetGetNProbingNodes(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
SCIP_RETCODE SCIPcatchEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPsetHeurFree(SCIP *scip, SCIP_HEUR *heur,)
SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)
SCIP_RETCODE SCIPincludeHeurBasic(SCIP *scip, SCIP_HEUR **heur, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, SCIP_HEURTIMING timingmask, SCIP_Bool usessubscip, SCIP_DECL_HEUREXEC((*heurexec)), SCIP_HEURDATA *heurdata)
SCIP_HEUR ** SCIPgetHeurs(SCIP *scip)
int SCIPheurGetPriority(SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetHeurInitsol(SCIP *scip, SCIP_HEUR *heur,)
SCIP_RETCODE SCIPsetHeurCopy(SCIP *scip, SCIP_HEUR *heur,)
int SCIPgetNHeurs(SCIP *scip)
SCIP_Longint SCIPheurGetNCalls(SCIP_HEUR *heur)
SCIP_HEUR * SCIPfindHeur(SCIP *scip, const char *name)
int SCIPheurGetNDivesets(SCIP_HEUR *heur)
void SCIPheurMarkExact(SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetHeurExit(SCIP *scip, SCIP_HEUR *heur,)
SCIP_RETCODE SCIPsetHeurInit(SCIP *scip, SCIP_HEUR *heur,)
const char * SCIPheurGetName(SCIP_HEUR *heur)
SCIP_DIVESET ** SCIPheurGetDivesets(SCIP_HEUR *heur)
SCIP_Bool SCIPhasCurrentNodeLP(SCIP *scip)
SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
SCIP_Real SCIPgetLPObjval(SCIP *scip)
SCIP_Bool SCIPisLPSolBasic(SCIP *scip)
SCIP_Longint SCIPgetMemExternEstim(SCIP *scip)
#define SCIPfreeBuffer(scip, ptr)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
SCIP_Longint SCIPgetMemUsed(SCIP *scip)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPduplicateBufferArray(scip, ptr, source, num)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPallocBuffer(scip, ptr)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_NODESEL * SCIPfindNodesel(SCIP *scip, const char *name)
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
SCIP_SOLORIGIN SCIPsolGetOrigin(SCIP_SOL *sol)
SCIP_Longint SCIPsolGetNodenum(SCIP_SOL *sol)
int SCIPgetNSols(SCIP *scip)
SCIP_Bool SCIPsolIsOriginal(SCIP_SOL *sol)
SCIP_RETCODE SCIPgetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_SOL ** SCIPgetSols(SCIP *scip)
SCIP_RETCODE SCIPtrySolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
SCIP_RETCODE SCIPsetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real val)
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
SCIP_RETCODE SCIPtransformProb(SCIP *scip)
SCIP_RETCODE SCIPpresolve(SCIP *scip)
SCIP_RETCODE SCIPinterruptSolve(SCIP *scip)
SCIP_RETCODE SCIPsolve(SCIP *scip)
SCIP_Real SCIPgetUpperbound(SCIP *scip)
SCIP_Longint SCIPgetNNodes(SCIP *scip)
SCIP_RETCODE SCIPprintStatistics(SCIP *scip, FILE *file)
SCIP_Real SCIPgetLowerbound(SCIP *scip)
SCIP_Longint SCIPgetNLPs(SCIP *scip)
SCIP_Longint SCIPgetNBestSolsFound(SCIP *scip)
SCIP_Real SCIPgetCutoffbound(SCIP *scip)
SCIP_RETCODE SCIPcopyLargeNeighborhoodSearch(SCIP *sourcescip, SCIP *subscip, SCIP_HASHMAP *varmap, const char *suffix, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool uselprows, SCIP_Bool copycuts, SCIP_Bool *success, SCIP_Bool *valid)
SCIP_RETCODE SCIPaddTrustregionNeighborhoodConstraint(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR **subvars, SCIP_Real violpenalty)
SCIP_TABLE * SCIPfindTable(SCIP *scip, const char *name)
SCIP_RETCODE SCIPincludeTable(SCIP *scip, const char *name, const char *desc, SCIP_Bool active, SCIP_DECL_TABLECOPY((*tablecopy)), SCIP_DECL_TABLEFREE((*tablefree)), SCIP_DECL_TABLEINIT((*tableinit)), SCIP_DECL_TABLEEXIT((*tableexit)), SCIP_DECL_TABLEINITSOL((*tableinitsol)), SCIP_DECL_TABLEEXITSOL((*tableexitsol)), SCIP_DECL_TABLEOUTPUT((*tableoutput)), SCIP_DECL_TABLECOLLECT((*tablecollect)), SCIP_TABLEDATA *tabledata, int position, SCIP_STAGE earlieststage)
SCIP_RETCODE SCIPcreateClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_RETCODE SCIPresetClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPstopClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
SCIP_RETCODE SCIPfreeClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_Real SCIPgetClockTime(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPstartClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisDualfeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPfeasCeil(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisDualfeasPositive(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfloor(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfeasFloor(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPround(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfrac(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisDualfeasZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPsumepsilon(SCIP *scip)
SCIP_Bool SCIPisFeasPositive(SCIP *scip, SCIP_Real val)
int SCIPgetDepth(SCIP *scip)
SCIP_RETCODE SCIPvariablegraphBreadthFirst(SCIP *scip, SCIP_VGRAPH *vargraph, SCIP_VAR **startvars, int nstartvars, int *distances, int maxdistance, int maxvars, int maxbinintvars)
SCIP_Bool SCIPvarIsBinary(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Bool SCIPvarIsImpliedIntegral(SCIP_VAR *var)
SCIP_Real SCIPvarGetBestRootSol(SCIP_VAR *var)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
SCIP_Real SCIPvarGetRootSol(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarLbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPgetVarPseudocostVal(SCIP *scip, SCIP_VAR *var, SCIP_Real solvaldelta)
SCIP_Bool SCIPvarIsIntegral(SCIP_VAR *var)
SCIP_Real SCIPvarGetLPSol(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPgetVarRedcost(SCIP *scip, SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_Real SCIPvarGetBestRootRedcost(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
SCIP_Real SCIPrandomGetReal(SCIP_RANDNUMGEN *randnumgen, SCIP_Real minrandval, SCIP_Real maxrandval)
int SCIPrandomGetInt(SCIP_RANDNUMGEN *randnumgen, int minrandval, int maxrandval)
void SCIPselectInd(int *indarray, SCIP_DECL_SORTINDCOMP((*indcomp)), void *dataptr, int k, int len)
void SCIPselectDownInd(int *indarray, SCIP_DECL_SORTINDCOMP((*indcomp)), void *dataptr, int k, int len)
void SCIPsortRealInt(SCIP_Real *realarray, int *intarray, int len)
void SCIPsortDownRealInt(SCIP_Real *realarray, int *intarray, int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIPfreeSol(scip, &heurdata->sol))
static SCIP_DIVESET * diveset
SCIPcreateSol(scip, &heurdata->sol, heur))
SCIPfreeRandom(scip, &heurdata->randnumgen)
SCIPperformGenericDivingAlgorithm(scip, diveset, heurdata->sol, heur, result, nodeinfeasible, lpiterlimit, -1, -1.0, SCIP_DIVECONTEXT_ADAPTIVE))
#define DEFAULT_BESTSOLWEIGHT
#define DEFAULT_ACTIVE_MUTATION
#define DEFAULT_MINFIXINGRATE_ZEROOBJECTIVE
#define TABLE_POSITION_NEIGHBORHOOD
#define DEFAULT_NODESQUOT
#define DEFAULT_MAXCALLSSAMESOL
#define DECL_NHDEACTIVATE(x)
#define DEFAULT_PRIORITY_RENS
#define DEFAULT_ACTIVE_PROXIMITY
#define DEFAULT_NODESQUOTMIN
#define DEFAULT_MINFIXINGRATE_DINS
#define DEFAULT_ACTIVE_RINS
#define TABLE_NAME_NEIGHBORHOOD
#define DEFAULT_USEREDCOST
#define FIXINGRATE_STARTINC
#define DEFAULT_MAXFIXINGRATE_RENS
#define DEFAULT_PRIORITY_PROXIMITY
#define DEFAULT_ACTIVE_TRUSTREGION
#define DEFAULT_MINFIXINGRATE_RENS
#define DEFAULT_MAXFIXINGRATE_DINS
#define DEFAULT_MINFIXINGRATE_RINS
struct NH_FixingRate NH_FIXINGRATE
#define DEFAULT_PRIORITY_ZEROOBJECTIVE
#define DEFAULT_WAITINGNODES
struct data_mutation DATA_MUTATION
#define DEFAULT_NODESOFFSET
#define TABLE_DESC_NEIGHBORHOOD
#define DECL_CHANGESUBSCIP(x)
struct data_trustregion DATA_TRUSTREGION
#define DEFAULT_RESETWEIGHTS
#define DEFAULT_MAXFIXINGRATE_MUTATION
#define TABLE_EARLIEST_STAGE_NEIGHBORHOOD
#define DEFAULT_USELOCALREDCOST
#define DEFAULT_MAXFIXINGRATE_TRUSTREGION
#define DEFAULT_MAXFIXINGRATE_ZEROOBJECTIVE
#define DEFAULT_ACTIVE_RENS
#define DEFAULT_MINFIXINGRATE_CROSSOVER
#define DEFAULT_ACTIVE_ZEROOBJECTIVE
#define DEFAULT_MINFIXINGRATE_LOCALBRANCHING
#define DEFAULT_PRIORITY_CROSSOVER
#define DEFAULT_INITDURINGROOT
#define DEFAULT_VIOLPENALTY_TRUSTREGION
struct SolveLimits SOLVELIMITS
#define DEFAULT_ACTIVE_LOCALBRANCHING
#define DEFAULT_PRIORITY_MUTATION
#define DEFAULT_PRIORITY_RINS
#define DEFAULT_ACTIVE_DINS
#define DEFAULT_PRIORITY_TRUSTREGION
#define DEFAULT_MAXFIXINGRATE_LOCALBRANCHING
#define DEFAULT_SUBSCIPRANDSEEDS
#define DEFAULT_NPOOLSOLS_DINS
#define DEFAULT_MAXFIXINGRATE_RINS
#define DEFAULT_MINFIXINGRATE_MUTATION
#define DEFAULT_TARGETNODEFACTOR
#define DEFAULT_MAXFIXINGRATE_CROSSOVER
#define DEFAULT_NSOLS_CROSSOVER
#define DEFAULT_USEDISTANCES
struct data_dins DATA_DINS
struct data_crossover DATA_CROSSOVER
#define DEFAULT_ACTIVE_CROSSOVER
#define DEFAULT_USESUBSCIPHEURS
#define DEFAULT_PRIORITY_DINS
#define DEFAULT_MAXFIXINGRATE_PROXIMITY
#define DECL_VARFIXINGS(x)
#define DEFAULT_PRIORITY_LOCALBRANCHING
#define DEFAULT_MINFIXINGRATE_TRUSTREGION
#define DEFAULT_BANDITALGO
#define DEFAULT_MINFIXINGRATE_PROXIMITY
#define DEFAULT_USEPSCOST
SCIPcreateRandom(scip, &heurdata->randnumgen, DEFAULT_RANDSEED, TRUE))
assert(minobj< SCIPgetCutoffbound(scip))
static void tryAdd2variableBuffer(SCIP *scip, SCIP_VAR *var, SCIP_Real val, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, SCIP_Bool integer)
static SCIP_RETCODE includeDivingHeurs(SCIP *scip, SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
static void printDivingHeurStatistics(SCIP *scip, SCIP_HEURDATA *heurdata, FILE *file)
struct SolveFreq SOLVEFREQ
static SCIP_RETCODE initRest(SCIP *scip, SCIP_HEUR *heur)
static void increaseFixingRate(NH_FIXINGRATE *fx)
static SCIP_RETCODE updateSelectionStrategy(SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_Real reward, int selection)
#define DECL_NHDEACTIVATE(x)
struct Diving_Heur DIVING_HEUR
static void initRunStats(SCIP *scip, HEUR_STATS *stats)
static SCIP_RETCODE neighborhoodGetRefsol(SCIP *scip, NH *neighborhood, SCIP_SOL **solptr)
static void decreaseFixingRate(NH_FIXINGRATE *fx)
struct Heur_Stats HEUR_STATS
static void decreaseSolveFreq(SOLVEFREQ *solvefreqdata)
static SCIP_RETCODE executeLNSHeuristic(SCIP *scip, SCIP_HEUR *heur, int selection, HEUR_STATS *runstats, SCIP_STATUS *subscipstatus, SCIP_RESULT *result)
static void updateFixingRate(NH *neighborhood, SCIP_STATUS subscipstatus, HEUR_STATS *runstats)
#define SCIP_EVENTTYPE_SCHEDULER
#define DEFAULT_SOLREWARDWEIGHT
static void updateRunStats(HEUR_STATS *stats, SCIP *subscip)
static void resetTargetNodeLimit(SCIP_HEURDATA *heurdata)
#define SOLVEFREQ_STARTINC
static SCIP_RETCODE neighborhoodInit(SCIP *scip, NH *neighborhood)
static SCIP_Real getReward(SCIP *scip, SCIP_HEURDATA *heurdata, int selection, HEUR_STATS *runstats)
#define DEFAULT_INITLNSNODELIMIT
#define DECL_CHANGESUBSCIP(x)
#define DEFAULT_EFFORTREWARDWEIGHT
static SCIP_RETCODE selectHeuristic(SCIP *scip, SCIP_HEURDATA *heurdata, int *selection)
#define DEFAULT_QUALREWARDWEIGHT
static void increaseSolveFreq(SOLVEFREQ *solvefreqdata)
#define DEFAULT_CONFLICTREWARDWEIGHT
#define DIVINGHEURS_INITIALSIZE
static SCIP_RETCODE schedulerIncludeNeighborhood(SCIP *scip, SCIP_HEURDATA *heurdata, NH **neighborhood, const char *name, SCIP_Real minfixingrate, SCIP_Real maxfixingrate, SCIP_Bool active, int priority, DECL_VARFIXINGS((*varfixings)), DECL_CHANGESUBSCIP((*changesubscip)), DECL_NHINIT((*nhinit)), DECL_NHEXIT((*nhexit)), DECL_NHFREE((*nhfree)), DECL_NHREFSOL((*nhrefsol)),)
static void initSolveFreq(SOLVEFREQ *solvefreqdata)
static void updateFixingRateIncrement(NH_FIXINGRATE *fx)
#define DEFAULT_INITDIVINGNODELIMIT
static SCIP_RETCODE addLocalBranchingConstraint(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR **subvars, int distance, SCIP_Bool *success, int *naddedconss)
#define DEFAULT_NSELECTIONS
static SCIP_RETCODE collectNeighborhoodStatistics(SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_DATATREE *datatree)
static SCIP_RETCODE setLimits(SCIP *subscip, SOLVELIMITS *solvelimits)
static SCIP_RETCODE executeHeuristic(SCIP *scip, SCIP_HEUR *heur, int selection, HEUR_STATS *runstats, SCIP_STATUS *subscipstatus, SCIP_RESULT *result)
static SCIP_RETCODE resetFixingRate(SCIP *scip, NH_FIXINGRATE *fixingrate)
static SCIP_RETCODE collectDivingHeurStatistics(SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_DATATREE *datatree)
static SCIP_RETCODE fixMatchingSolutionValues(SCIP *scip, SCIP_SOL **sols, int nsols, SCIP_VAR **vars, int nvars, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings)
static SCIP_Real getVariablePscostScore(SCIP *scip, SCIP_VAR *var, SCIP_Real refsolval, SCIP_Bool uselocallpsol)
static int getHistIndex(SCIP_STATUS subscipstatus)
static void updateSolveFreqIncrement(SOLVEFREQ *solvefreqdata)
static void computeIntegerVariableBoundsDins(SCIP *scip, SCIP_VAR *var, SCIP_Real *lbptr, SCIP_Real *ubptr)
static SCIP_RETCODE includeNeighborhoods(SCIP *scip, SCIP_HEURDATA *heurdata)
static SCIP_RETCODE LNSUnfixVariables(SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, int ntargetfixings, SCIP_Bool *success)
static SCIP_RETCODE reinitBandit(SCIP *scip, SCIP_HEURDATA *heurdata, int nactions)
static void updateHeurStatsLNS(HEUR_STATS *runstats, NH *neighborhood, SCIP_STATUS *subscipstatus)
static void resetCurrentNeighborhood(SCIP_HEURDATA *heurdata)
static SCIP_Real getVariableRedcostScore(SCIP *scip, SCIP_VAR *var, SCIP_Real refsolval, SCIP_Bool uselocalredcost)
static void updateSolveFreq(DIVING_HEUR *divingheur, HEUR_STATS *stats)
static SCIP_RETCODE schedulerFreeDivingHeur(SCIP *scip, DIVING_HEUR **divingheur)
static void updateHeurStatsDiving(HEUR_STATS *runstats, DIVING_HEUR *divingheur)
static SCIP_RETCODE schedulerFreeNeighborhood(SCIP *scip, NH **neighborhood)
static SCIP_RETCODE neighborhoodExit(SCIP *scip, NH *neighborhood)
static SCIP_RETCODE executeDivingHeuristic(SCIP *scip, SCIP_HEUR *heur, int selection, HEUR_STATS *runstats, SCIP_RESULT *result)
static void printNeighborhoodStatistics(SCIP *scip, SCIP_HEURDATA *heurdata, FILE *file)
static SCIP_RETCODE setupSubScip(SCIP *scip, SCIP *subscip, SCIP_VAR **subvars, SOLVELIMITS *solvelimits, SCIP_HEUR *heur, SCIP_Bool objchgd)
static SCIP_RETCODE determineLimits(SCIP *scip, SCIP_HEUR *heur, int selection, SOLVELIMITS *solvelimits, SCIP_Bool *runagain)
static SCIP_RETCODE neighborhoodChangeSubscip(SCIP *sourcescip, SCIP *targetscip, NH *neighborhood, SCIP_VAR **targetvars, int *ndomchgs, int *nchgobjs, int *naddedconss, SCIP_Bool *success)
#define DECL_VARFIXINGS(x)
static SCIP_RETCODE heurStatsReset(SCIP *scip, HEUR_STATS *stats, SCIP_Bool usediving)
static SCIP_RETCODE LNSFixMoreVariables(SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_SOL *refsol, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, int ntargetfixings, SCIP_Bool *success)
static SCIP_RETCODE createBandit(SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_Real *priorities, unsigned int initseed)
static SCIP_RETCODE neighborhoodFixVariables(SCIP *scip, SCIP_HEURDATA *heurdata, NH *neighborhood, SCIP_VAR **varbuf, SCIP_Real *valbuf, int *nfixings, SCIP_RESULT *result)
static SCIP_RETCODE transferSolution(SCIP *subscip, SCIP_EVENTDATA *eventdata)
Adaptive heuristic to schedule LNS and diving heuristics.
methods commonly used by primal heuristics
static const char * paramname[]
memory allocation routines
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSclearMemory(ptr)
#define BMSfreeMemoryArray(ptr)
#define BMScopyMemoryArray(ptr, source, num)
#define BMSclearMemoryArray(ptr, num)
public methods for bandit algorithms
public methods for the epsilon greedy bandit selector
public methods for Exp.3-IX
public methods for UCB bandit selection
public methods for managing constraints
public methods for managing events
public methods for primal heuristics
public methods for message output
public data structures and miscellaneous methods
methods for selecting (weighted) k-medians
public methods for primal CIP solutions
public methods for problem variables
public methods for bandit algorithms
public methods for branching rule plugins and branching
public methods for constraint handler plugins and constraints
public methods for problem copies
public methods for event handler plugins and event handlers
public methods for primal heuristic plugins and divesets
public methods for the LP relaxation, rows and columns
public methods for memory management
public methods for message handling
public methods for node selector plugins
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for global and local (sub)problems
public methods for random numbers
public methods for solutions
public methods for querying solving statistics
public methods for statistics table plugins
public methods for timing
public methods for the branch-and-bound tree
public methods for SCIP variables
SOLVEFREQ * solvefreqdata
int statushist[NHISTENTRIES]
SCIP_Longint nbestsolsfound
SCIP_Real targetfixingrate
int statushist[NHISTENTRIES]
SCIP_Longint nbestsolsfound
DECL_CHANGESUBSCIP((*changesubscip))
union Nh::@134264243327243237357224041227301111216002025114 data
DATA_CROSSOVER * crossover
DECL_NHDEACTIVATE((*nhdeactivate))
DATA_TRUSTREGION * trustregion
DECL_VARFIXINGS((*varfixings))
DECL_NHREFSOL((*nhrefsol))
SCIP_Real currentsolvefreq
unsigned int usedistances
SCIP_Real * redcostscores
struct SCIP_Bandit SCIP_BANDIT
struct SCIP_Clock SCIP_CLOCK
struct SCIP_Cons SCIP_CONS
struct SCIP_Conshdlr SCIP_CONSHDLR
struct SCIP_Datatree SCIP_DATATREE
struct SCIP_Eventhdlr SCIP_EVENTHDLR
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_DECL_EVENTEXEC(x)
#define SCIP_EVENTTYPE_BESTSOLFOUND
#define SCIP_EVENTTYPE_SOLFOUND
#define SCIP_EVENTTYPE_LPSOLVED
#define SCIP_DECL_HEURINITSOL(x)
#define SCIP_DECL_HEURCOPY(x)
struct SCIP_HeurData SCIP_HEURDATA
struct SCIP_Heur SCIP_HEUR
#define SCIP_DECL_HEURINIT(x)
struct SCIP_Diveset SCIP_DIVESET
#define SCIP_DECL_HEUREXIT(x)
#define SCIP_DECL_HEURFREE(x)
#define SCIP_DECL_HEUREXEC(x)
@ SCIP_DIVECONTEXT_SCHEDULER
struct SCIP_HashMap SCIP_HASHMAP
#define SCIP_DECL_SORTINDCOMP(x)
struct SCIP_RandNumGen SCIP_RANDNUMGEN
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_SOLORIGIN_ORIGINAL
@ SCIP_STATUS_TOTALNODELIMIT
@ SCIP_STATUS_BESTSOLLIMIT
@ SCIP_STATUS_PRIMALLIMIT
@ SCIP_STATUS_USERINTERRUPT
@ SCIP_STATUS_STALLNODELIMIT
@ SCIP_STATUS_RESTARTLIMIT
enum SCIP_Status SCIP_STATUS
#define SCIP_DECL_TABLEOUTPUT(x)
#define SCIP_DECL_TABLECOLLECT(x)