nseriousnlpierror;
107 intmaxpresolverounds;
108 intpresolveemphasis;
119 intnnlpsolvesiterlim;
120 intnnlpsolvesinfeas;
142assert(runheur !=
NULL);
178assert(heurdata !=
NULL);
180assert(heurdata->subscip !=
NULL);
183assert(nsubvars == heurdata->nsubvars);
188 for( i = 0; i < heurdata->nsubvars; ++i )
191assert(subvar !=
NULL);
195assert(var !=
NULL);
208heurdata->nsubvars = 0;
235assert(heurdata !=
NULL);
236assert(heurdata->subscip ==
NULL);
238heurdata->triedsetupsubscip =
TRUE;
270 SCIPdebugMsg(
scip,
"failed to copy some plugins to sub-SCIP, continue anyway\n");
276 SCIPdebugMsg(
scip,
"none of the NLPIs from main SCIP copied into sub-SCIP, give up heuristic.\n");
299 if( !heurdata->subscipisvalid )
301 SCIPdebugMsg(
scip,
"failed to copy some constraints to sub-SCIP, continue anyway\n");
313heurdata->nvars = nvars;
327assert(subvar !=
NULL);
343 for( i = 0; i < heurdata->nsubvars; ++i )
347var = heurdata->var_subscip2scip[i];
359 for( i = 0; i < heurdata->nvars; ++i )
363 for( i = 0; i < heurdata->nsubvars; ++i )
365assert(heurdata->var_subscip2scip[i] !=
NULL);
400 if( !heurdata->continuous )
410 if( !
SCIPisParamFixed(heurdata->subscip,
"constraints/components/maxprerounds") )
446 SCIPwarningMessage(
scip,
"Error while initializing subproblem in subnlp heuristic; sub-SCIP terminated with code <%d>\n", retcode);
476assert(event !=
NULL);
477assert(eventdata !=
NULL);
478assert(eventhdlr !=
NULL);
481assert(heurdata !=
NULL);
484assert(var !=
NULL);
494assert(idx < heurdata->nvars);
496subvar = heurdata->var_scip2subscip[idx];
500 for( idx = 0; idx < heurdata->nsubvars; ++idx )
502 if( heurdata->var_subscip2scip[idx] == var )
505assert(idx < heurdata->nsubvars);
508assert(subvar !=
NULL);
541assert(heur !=
NULL);
542assert(sol !=
NULL);
545assert(heurdata !=
NULL);
559assert(nvars >= heurdata->nvars);
560 for( i = 0; i < heurdata->nvars; ++i )
563assert(var !=
NULL);
566subvar = heurdata->var_scip2subscip[i];
567 if( subvar ==
NULL)
576 for( ; i < nvars; ++i )
579assert(var !=
NULL);
602assert(heur !=
NULL);
603assert(result !=
NULL);
606assert(heurdata !=
NULL);
610 if( resultsol ==
NULL)
622heurdata->lastsol = sol;
633 if( heurdata->nlpverblevel >= 1 )
646 if( heurdata->nlpverblevel >= 1 )
652 SCIPdebugMsg(
scip,
"solution reported by NLP solver not stored by SCIP\n");
656 else if( heurdata->nlpverblevel >= 1 )
669heurdata->lastsol = resultsol;
679 if( heurdata->nlpverblevel >= 1 )
685 SCIPdebugMsg(
scip,
"solution reported by NLP solver feasible for SCIP\n");
691 if( heurdata->nlpverblevel >= 1 )
697 SCIPdebugMsg(
scip,
"solution reported by NLP solver not feasible for SCIP\n");
724assert(heur !=
NULL);
725assert(sol !=
NULL);
726assert(subsol !=
NULL);
729assert(heurdata !=
NULL);
742assert(nvars >= heurdata->nvars);
743 for( i = 0; i < heurdata->nvars; ++i )
746assert(var !=
NULL);
749subvar = heurdata->var_scip2subscip[i];
750 if( subvar ==
NULL)
759 for( ; i < nvars; ++i )
762assert(var !=
NULL);
782 if( heurdata->nnlpsolvesiterlim > heurdata->nnlpsolvesokay )
783 return MAX(heurdata->itermin, 2 * heurdata->iterusediterlim);
786 if( heurdata->nnlpsolvesokay >= heurdata->ninitsolves )
787 return MAX(heurdata->itermin, 2 * heurdata->iterusedokay / heurdata->nnlpsolvesokay);
790 if( heurdata->nnlpsolvesokay > 0 )
791 return MAX3(heurdata->itermin, heurdata->iterinit, 2 * heurdata->iterusedokay / heurdata->nnlpsolvesokay);
794 return MAX(heurdata->itermin, heurdata->iterinit);
819assert(heur !=
NULL);
820assert(heurdata !=
NULL);
821assert(result !=
NULL);
829 if( timelimit <= 0.0 )
846 if( !heurdata->continuous )
908 SCIPwarningMessage(
scip,
"Error while solving subproblem in subnlp heuristic; sub-SCIP terminated with code <%d>\n", retcode);
919 for( i = 0; i <
SCIPgetNSols(heurdata->subscip); ++i )
921 if( resultsol ==
NULL)
929heurdata->lastsol = sol;
933 if( heurdata->nlpverblevel >= 1 )
946 if( heurdata->nlpverblevel >= 1 )
962heurdata->lastsol = resultsol;
966 if( heurdata->nlpverblevel >= 1 )
972 SCIPdebugMsg(
scip,
"SCIP solution from sub-SCIP root node is feasible\n");
979 if( heurdata->nlpverblevel >= 1 )
985 SCIPdebugMsg(
scip,
"SCIP solution from sub-SCIP root node is not feasible\n");
994 if( heurdata->nlpverblevel >= 1 )
1053 if( heurdata->nlpverblevel >= 3 )
1069 if( subvar ==
NULL)
1071startpoint[i] = constant;
1073 if( heurdata->nlpverblevel >= 3 && !
SCIPisZero(heurdata->subscip, startpoint[i]) )
1090 if( heurdata->nlpverblevel >= 3 && !
SCIPisZero(heurdata->subscip, startpoint[i]) )
1102expectinfeas =
FALSE;
1103 if( heurdata->expectinfeas == 0.0 )
1104expectinfeas =
TRUE;
1105 else if( heurdata->nnlpsolvesokay > heurdata->ninitsolves && heurdata->nnlpsolvesinfeas > heurdata->expectinfeas * heurdata->nnlpsolvesokay )
1106expectinfeas =
TRUE;
1112.opttol = heurdata->opttol,
1113.feastol = heurdata->feastol,
1114.verblevel = (
unsigned short)heurdata->nlpverblevel,
1115.expectinfeas = expectinfeas
1118 SCIPdebugMsg(
scip,
"NLP solver returned with termination status %d and solution status %d, objective value is %g\n",
1130 if( heurdata->nlpverblevel >= 1 )
1132 SCIPinfoMessage(
scip,
NULL,
"NLP solver in subNLP heuristic for problem <%s> returned with bad termination status %d.\n",
1136++(heurdata->nseriousnlpierror);
1138 "NLP solver in subNLP heuristic for problem <%s> returned with bad termination status %d. This was the %d%s successive time.\n",
1140heurdata->nseriousnlpierror == 1 ?
"st": heurdata->nseriousnlpierror == 2 ?
"nd": heurdata->nseriousnlpierror == 3 ?
"rd":
"th");
1141 if( heurdata->nseriousnlpierror >= 5 )
1148heurdata->nseriousnlpierror = 0;
1152 SCIPdebugMsg(
scip,
"NLP solver used %d iterations and %g seconds; violation cons %g, bounds %g\n",
1155heurdata->iterused += nlpstatistics.
niterations;
1156++heurdata->nnlpsolves;
1159++heurdata->nnlpsolvesokay;
1160heurdata->iterusedokay += nlpstatistics.
niterations;
1163++heurdata->nnlpsolvesinfeas;
1167++heurdata->nnlpsolvesiterlim;
1168heurdata->iterusediterlim =
MAX(heurdata->iterusediterlim, nlpstatistics.
niterations);
1191 if( heurdata->tighterfeastolfailed )
1195 if( heurdata->feastolfactor == 1.0 )
1203 if( heurdata->continuous )
1207 if(
MAX(nlpstatistics.
consviol, nlpstatistics.
boundviol) <= heurdata->feastolfactor * heurdata->feastol )
1215.iterlimit =
MAX(heurdata->itermin, nlpstatistics.
niterations),
1216.opttol = heurdata->opttol,
1217.feastol = heurdata->feastolfactor * heurdata->feastol,
1218.verblevel = (
unsigned short)heurdata->nlpverblevel,
1222 SCIPdebugMsg(
scip,
"NLP solver returned with termination status %d and solution status %d, objective value is %g\n",
1233 SCIPdebugMsg(
scip,
"NLP solver used %d iterations and %g seconds; violation cons %g, bounds %g\n",
1237heurdata->iterused += nlpstatistics.
niterations;
1250heurdata->feastol *= heurdata->feastolfactor;
1252heurdata->tighterfeastolfailed =
TRUE;
1281assert(nsubvars == heurdata->nsubvars);
1283 if( nsubbinvars == 0 && nsubintvars == 0 )
1286 SCIPdebugMsg(
scip,
"heur_subnlp found subCIP infeasible after fixing no variables, something is strange here...\n");
1300 if( nsubintvars == 0 )
1309 for( i = nsubbinvars - 1; i >= 0; --i )
1311subvar = subvars[i];
1314var = heurdata->var_subscip2scip[i];
1321assert(fixval == 0.0 || fixval == 1.0);
1323 if( fixval == 0.0 )
1326consvars[nconsvars] = var;
1362 for( i = nsubbinvars + nsubintvars - 1; i >= 0; --i )
1364subvar = subvars[i];
1367var = heurdata->var_subscip2scip[i];
1380assert(nconsvars < nsubbinvars + 2*nsubintvars);
1384bounds[nconsvars] = fixval - 1.0;
1385consvars[nconsvars] = var;
1391assert(nconsvars < nsubbinvars + 2*nsubintvars);
1395bounds[nconsvars] = fixval + 1.0;
1396consvars[nconsvars] = var;
1413 SCIPdebugMsg(
scip,
"adding constraint to forbid fixation in main problem\n");
1435assert(heur !=
NULL);
1450assert(heur !=
NULL);
1453assert(heurdata !=
NULL);
1454assert(heurdata->subscip ==
NULL);
1455assert(heurdata->var_subscip2scip ==
NULL);
1456assert(heurdata->var_scip2subscip ==
NULL);
1457assert(heurdata->startcand ==
NULL);
1471assert(heur !=
NULL);
1474assert(heurdata !=
NULL);
1475assert(heurdata->subscip ==
NULL);
1479heurdata->tighterfeastolfailed =
FALSE;
1480heurdata->triedsetupsubscip =
FALSE;
1481heurdata->nseriousnlpierror = 0;
1482heurdata->iterused = 0;
1483heurdata->iterusedokay = 0;
1484heurdata->iterusediterlim = 0;
1485heurdata->nnlpsolves = 0;
1486heurdata->nnlpsolvesokay = 0;
1487heurdata->nnlpsolvesiterlim = 0;
1488heurdata->nnlpsolvesinfeas = 0;
1498assert(heur !=
NULL);
1513assert(heur !=
NULL);
1517assert(heurdata !=
NULL);
1519 if( heurdata->subscip !=
NULL)
1522heurdata->triedsetupsubscip =
FALSE;
1526 if( heurdata->startcand !=
NULL)
1546assert(heur !=
NULL);
1553assert(heurdata !=
NULL);
1560 if( heurdata->subscip ==
NULL&& heurdata->keepcopy && heurdata->triedsetupsubscip )
1571 if( heurdata->startcand ==
NULL)
1576 if( nodeinfeasible )
1592 SCIPdebugMsg(
scip,
"LP is unbounded in root node, so we are quite desperate; run NLP heuristic and pray\n");
1599 SCIPdebugMsg(
scip,
"NLP heuristic delayed because no start candidate given and current LP solution is fractional\n");
1605 SCIPdebugMsg(
scip,
"NLP heuristic delayed because lower and upper bound coincide in current node\n");
1620itercontingent = heurdata->nodesfactor * (
SCIPgetNNodes(
scip) + heurdata->nodesoffset);
1625 if( heurdata->successrateexp > 0.0 &&
SCIPheurGetNCalls(heur) - heurdata->nnlpsolvesiterlim >= heurdata->ninitsolves )
1628itercontingent -= heurdata->iterused;
1634 SCIPdebugMsg(
scip,
"skip NLP heuristic; contingent=%f; iterlimit=%d; success ratio=%g\n",
1642 if( heurdata->nlpverblevel >= 1 )
1654 if( heurdata->startcand !=
NULL)
1684heurdata->eventhdlr =
NULL;
1686processVarEvent,
NULL) );
1687assert(heurdata->eventhdlr !=
NULL);
1694assert(heur !=
NULL);
1705 "verbosity level of NLP solver",
1706&heurdata->nlpverblevel,
FALSE, 0, 0, USHRT_MAX,
NULL,
NULL) );
1709 "number of nodes added to the current number of nodes when computing itercontingent (higher value runs heuristic more often in early search)",
1710&heurdata->nodesoffset,
FALSE, 1600, 0, INT_MAX,
NULL,
NULL) );
1713 "factor on number of nodes in SCIP (plus nodesoffset) to compute itercontingent (higher value runs heuristics more frequently)",
1717 "exponent for power of success rate to be multiplied with itercontingent (lower value decreases impact of success rate)",
1718&heurdata->successrateexp,
FALSE, 1.0, 0.0, DBL_MAX,
NULL,
NULL) );
1721 "number of iterations used for initial NLP solves",
1722&heurdata->iterinit,
FALSE, 300, 0, INT_MAX,
NULL,
NULL) );
1725 "number of successful NLP solves until switching to iterlimit guess and using success rate",
1726&heurdata->ninitsolves,
FALSE, 2, 0, INT_MAX,
NULL,
NULL) );
1729 "minimal number of iterations for NLP solves",
1730&heurdata->itermin,
FALSE, 20, 0, INT_MAX,
NULL,
NULL) );
1733 "absolute optimality tolerance to use for NLP solves",
1737 "factor on SCIP feasibility tolerance for NLP solves if resolving when NLP solution not feasible in CIP",
1738&heurdata->feastolfactor,
FALSE, 0.1, 0.0, 1.0,
NULL,
NULL) );
1741 "limit on number of presolve rounds in sub-SCIP (-1 for unlimited, 0 for no presolve)",
1742&heurdata->maxpresolverounds,
FALSE, -1, -1, INT_MAX,
NULL,
NULL) );
1745 "presolve emphasis in sub-SCIP (0: default, 1: aggressive, 2: fast, 3: off)",
1749 "whether to set cutoff in sub-SCIP to current primal bound",
1753 "whether to add constraints that forbid specific fixings that turned out to be infeasible",
1757 "whether to keep SCIP copy or to create new copy each time heuristic is applied",
1761 "percentage of NLP solves with infeasible status required to tell NLP solver to expect an infeasible NLP",
1762&heurdata->expectinfeas,
FALSE, 0.0, 0.0, 1.0,
NULL,
NULL) );
1783assert(heur !=
NULL);
1787assert(heurdata !=
NULL);
1790 if( heurdata->subscip ==
NULL&& !heurdata->triedsetupsubscip )
1798 if( heurdata->subscip ==
NULL)
1801assert(heurdata->nsubvars > 0);
1802assert(heurdata->var_subscip2scip !=
NULL);
1805 if( !heurdata->continuous )
1820assert(nsubvars == heurdata->nsubvars);
1823 for( i = nsubbinvars + nsubintvars - 1; i >= 0; --i )
1825subvar = subvars[i];
1828var = heurdata->var_subscip2scip[i];
1829assert(var !=
NULL);
1842 SCIPdebugMsg(
scip,
"skip NLP heuristic because start candidate not integer feasible: var <%s> has value %g\n",
SCIPvarGetName(var), fixval);
1870 SCIPdebugMsg(
scip,
"skip NLP heuristic because start candidate not feasible: fixing var <%s> to value %g is infeasible\n",
SCIPvarGetName(var), fixval);
1897 if( heurdata->subscip ==
NULL)
1922 if( !heurdata->continuous )
1933heurdata->triedsetupsubscip =
FALSE;
1953assert(heur !=
NULL);
1955assert(solcand !=
NULL);
1963assert(heurdata !=
NULL);
1965 if( heurdata->subscip ==
NULL)
1969 if( heurdata->triedsetupsubscip )
1981 if( heurdata->lastsol == solcand )
1984 SCIPdebugMsg(
scip,
"consider solution candidate with violation %g and objective %g from %s\n",
1988 if( heurdata->startcand ==
NULL|| violation < heurdata->startcandviol ||
1991 if( heurdata->startcand !=
NULL)
1997heurdata->startcandviol = violation;
2015assert(heur !=
NULL);
2019assert(heurdata !=
NULL);
2021 returnheurdata->startcand;
constraint handler for bound disjunction constraints
Constraint handler for the set partitioning / packing / covering constraints .
SCIP_RETCODE SCIPcreateConsBounddisjunction(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds, 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 SCIPcreateConsSetcover(SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, 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)
void SCIPmergeNLPIStatistics(SCIP *sourcescip, SCIP *targetscip, SCIP_Bool reset)
SCIP_RETCODE SCIPcopyVars(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool global)
SCIP_RETCODE SCIPcopyPlugins(SCIP *sourcescip, SCIP *targetscip, SCIP_Bool copyreaders, SCIP_Bool copypricers, SCIP_Bool copyconshdlrs, SCIP_Bool copyconflicthdlrs, SCIP_Bool copypresolvers, SCIP_Bool copyrelaxators, SCIP_Bool copyseparators, SCIP_Bool copycutselectors, SCIP_Bool copypropagators, SCIP_Bool copyheuristics, SCIP_Bool copyeventhdlrs, SCIP_Bool copynodeselectors, SCIP_Bool copybranchrules, SCIP_Bool copydisplays, SCIP_Bool copydialogs, SCIP_Bool copytables, SCIP_Bool copyexprhdlrs, SCIP_Bool copynlpis, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
SCIP_RETCODE SCIPcopyProb(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, const char *name)
SCIP_RETCODE SCIPcopyConss(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool *valid)
SCIP_RETCODE SCIPcopyParamSettings(SCIP *sourcescip, SCIP *targetscip)
SCIP_Bool SCIPisTransformed(SCIP *scip)
SCIP_RETCODE SCIPfree(SCIP **scip)
SCIP_RETCODE SCIPcreate(SCIP **scip)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNIntVars(SCIP *scip)
SCIP_RETCODE SCIPgetOrigVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
const char * SCIPgetProbName(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)
int SCIPgetNConss(SCIP *scip)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
int SCIPgetNBinVars(SCIP *scip)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void * SCIPhashmapEntryGetImage(SCIP_HASHMAPENTRY *entry)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
int SCIPhashmapGetNEntries(SCIP_HASHMAP *hashmap)
SCIP_HASHMAPENTRY * SCIPhashmapGetEntry(SCIP_HASHMAP *hashmap, int entryidx)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
void * SCIPhashmapEntryGetOrigin(SCIP_HASHMAPENTRY *entry)
SCIP_Real SCIPgetLocalDualbound(SCIP *scip)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_SOL * SCIPgetStartCandidateHeurSubNlp(SCIP *scip, SCIP_HEUR *heur)
SCIP_RETCODE SCIPapplyHeurSubNlp(SCIP *scip, SCIP_HEUR *heur, SCIP_RESULT *result, SCIP_SOL *refpoint, SCIP_SOL *resultsol)
SCIP_RETCODE SCIPupdateStartpointHeurSubNlp(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *solcand, SCIP_Real violation)
SCIP_Bool SCIPisParamFixed(SCIP *scip, const char *name)
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 SCIPgetRealParam(SCIP *scip, const char *name, SCIP_Real *value)
SCIP_RETCODE SCIPresetParam(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetPresolving(SCIP *scip, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
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 SCIPincludeHeurSubNlp(SCIP *scip)
int SCIPgetNLPBranchCands(SCIP *scip)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
SCIP_RETCODE SCIPcatchVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPdropVarEvent(SCIP *scip, SCIP_VAR *var, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)
SCIP_Real SCIPeventGetNewbound(SCIP_EVENT *event)
SCIP_RETCODE SCIPsetHeurExitsol(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXITSOL((*heurexitsol)))
SCIP_RETCODE SCIPsetHeurCopy(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURCOPY((*heurcopy)))
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_RETCODE SCIPsetHeurFree(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURFREE((*heurfree)))
SCIP_Longint SCIPheurGetNSolsFound(SCIP_HEUR *heur)
void SCIPheurSetTimingmask(SCIP_HEUR *heur, SCIP_HEURTIMING timingmask)
SCIP_Longint SCIPheurGetNCalls(SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetHeurInitsol(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINITSOL((*heurinitsol)))
int SCIPheurGetFreqofs(SCIP_HEUR *heur)
SCIP_RETCODE SCIPsetHeurInit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINIT((*heurinit)))
int SCIPheurGetFreq(SCIP_HEUR *heur)
const char * SCIPheurGetName(SCIP_HEUR *heur)
SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPallocClearBlockMemoryArray(scip, ptr, num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBufferArrayNull(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
int SCIPgetNNlpis(SCIP *scip)
SCIP_RETCODE SCIPhasNLPContinuousNonlinearity(SCIP *scip, SCIP_Bool *result)
SCIP_Bool SCIPisNLPConstructed(SCIP *scip)
SCIP_NLPSOLSTAT SCIPgetNLPSolstat(SCIP *scip)
#define SCIPsolveNLP(...)
SCIP_RETCODE SCIPsetNLPInitialGuess(SCIP *scip, SCIP_Real *initialguess)
SCIP_Real SCIPgetNLPObjval(SCIP *scip)
int SCIPgetNNLPVars(SCIP *scip)
SCIP_VAR ** SCIPgetNLPVars(SCIP *scip)
SCIP_Bool SCIPhasNLPSolution(SCIP *scip)
SCIP_NLPTERMSTAT SCIPgetNLPTermstat(SCIP *scip)
SCIP_RETCODE SCIPgetNLPStatistics(SCIP *scip, SCIP_NLPSTATISTICS *statistics)
int SCIPgetNPresolRounds(SCIP *scip)
int SCIPgetNActivePricers(SCIP *scip)
SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPcreateSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
SCIP_HEUR * SCIPgetSolHeur(SCIP *scip, SCIP_SOL *sol)
int SCIPgetNSols(SCIP *scip)
SCIP_HEUR * SCIPsolGetHeur(SCIP_SOL *sol)
SCIP_RETCODE SCIPunlinkSol(SCIP *scip, SCIP_SOL *sol)
SCIP_SOL ** SCIPgetSols(SCIP *scip)
SCIP_RETCODE SCIPcheckSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *feasible)
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_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
void SCIPsolSetHeur(SCIP_SOL *sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPtransformProb(SCIP *scip)
SCIP_RETCODE SCIPpresolve(SCIP *scip)
SCIP_RETCODE SCIPfreeTransform(SCIP *scip)
SCIP_RETCODE SCIPsolve(SCIP *scip)
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
SCIP_Real SCIPgetUpperbound(SCIP *scip)
SCIP_Longint SCIPgetNNodes(SCIP *scip)
SCIP_RETCODE SCIPprintStatistics(SCIP *scip, FILE *file)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisRelGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisPositive(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPround(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPfeastol(SCIP *scip)
SCIP_Real SCIPdualfeastol(SCIP *scip)
SCIP_Real SCIPceil(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPvarGetOrigvarSum(SCIP_VAR **var, SCIP_Real *scalar, SCIP_Real *constant)
SCIP_Bool SCIPvarIsActive(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPtightenVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_RETCODE SCIPchgVarLbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarUbGlobal(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_Real SCIPvarGetNLPSol(SCIP_VAR *var)
SCIP_RETCODE SCIPcaptureVar(SCIP *scip, SCIP_VAR *var)
int SCIPsnprintf(char *t, int len, const char *s,...)
static SCIP_RETCODE processNLPSol(SCIP *scip, SCIP_HEUR *heur, SCIP_HEUR *authorheur, SCIP_RESULT *result, SCIP_SOL *resultsol)
static SCIP_DECL_HEURINITSOL(heurInitsolSubNlp)
static SCIP_DECL_HEUREXITSOL(heurExitsolSubNlp)
static SCIP_RETCODE createSolFromNLP(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL **sol, SCIP_HEUR *authorheur)
static SCIP_RETCODE forbidFixation(SCIP *scip, SCIP_HEURDATA *heurdata)
static SCIP_RETCODE createSolFromSubScipSol(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL **sol, SCIP_SOL *subsol, SCIP_HEUR *authorheur)
static SCIP_DECL_EVENTEXEC(processVarEvent)
static SCIP_DECL_HEURFREE(heurFreeSubNlp)
static int calcIterLimit(SCIP *scip, SCIP_HEURDATA *heurdata)
static SCIP_DECL_HEURCOPY(heurCopySubNlp)
static SCIP_RETCODE solveSubNLP(SCIP *scip, SCIP_HEUR *heur, SCIP_RESULT *result, SCIP_SOL *refpoint, SCIP_SOL *resultsol)
static SCIP_RETCODE runHeuristic(SCIP *scip, SCIP_Bool *runheur)
static SCIP_RETCODE createSubSCIP(SCIP *scip, SCIP_HEURDATA *heurdata)
static SCIP_DECL_HEUREXEC(heurExecSubNlp)
static SCIP_RETCODE freeSubSCIP(SCIP *scip, SCIP_HEURDATA *heurdata)
static SCIP_DECL_HEURINIT(heurInitSubNlp)
NLP local search primal heuristic using sub-SCIPs.
memory allocation routines
#define BMSclearMemory(ptr)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
public methods for managing events
public methods for primal heuristics
public methods for message output
public data structures and miscellaneous methods
public methods for primal CIP solutions
public methods for problem variables
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 nonlinear relaxation
public methods for NLPI solver interfaces
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for presolving plugins
public methods for variable pricer plugins
public methods for global and local (sub)problems
public methods for solutions
public methods for querying solving statistics
public methods for timing
public methods for SCIP variables
#define SCIP_EVENTTYPE_GUBCHANGED
#define SCIP_EVENTTYPE_GBDCHANGED
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_GLBCHANGED
struct SCIP_HeurData SCIP_HEURDATA
enum SCIP_BoundType SCIP_BOUNDTYPE
@ SCIP_LPSOLSTAT_UNBOUNDEDRAY
@ SCIP_NLPTERMSTAT_ITERLIMIT
@ SCIP_NLPTERMSTAT_OUTOFMEMORY
@ SCIP_NLPSOLSTAT_GLOBINFEASIBLE
@ SCIP_NLPSOLSTAT_LOCINFEASIBLE
@ SCIP_NLPSOLSTAT_FEASIBLE
@ SCIP_PARAMSETTING_DEFAULT
enum SCIP_ParamSetting SCIP_PARAMSETTING
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STATUS_TOTALNODELIMIT
@ SCIP_STATUS_BESTSOLLIMIT
@ SCIP_STATUS_USERINTERRUPT
@ SCIP_STATUS_STALLNODELIMIT
#define SCIP_HEURTIMING_DURINGLPLOOP
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4