HEUR_NAME " heuristic"
159assert(newdecomp !=
NULL);
160assert(vars !=
NULL);
161assert(conss !=
NULL);
162assert(varlabels !=
NULL);
163assert(conslabels !=
NULL);
170newlabel = varlabels[nvars - 1];
171assert(newlabel >= 0);
172 for( v = 0; v < nlinkvars; v++ )
193 if( nlinkvars >= 1 )
198 for( v = 0; v < nlinkvars; v++ )
225assert(subscip !=
NULL);
288assert(subscip !=
NULL);
289assert(vars !=
NULL);
290assert(conss !=
NULL);
291assert(varsmap !=
NULL);
292assert(conssmap !=
NULL);
293assert(success !=
NULL);
301 for( i = 0; i < nvars; ++i )
316 for( i = 0; i < nconss; ++i )
318assert(conss[i] !=
NULL);
378assert(blockproblem !=
NULL);
379assert(conss !=
NULL);
380assert(vars !=
NULL);
395nvars, nconss, success) );
410 for( v = 0; v < nvars; v++ )
424 for( c = 0; c < nlinking; c++ )
426 const char* conshdlrname;
436assert(linkingconss[c] !=
NULL);
440#ifdef SCIP_MORE_DEBUG 449 if( !( (strcmp(conshdlrname,
"linear") == 0) || (strcmp(conshdlrname,
"setppc") == 0)
450|| (strcmp(conshdlrname,
"logicor") == 0) || (strcmp(conshdlrname,
"knapsack") == 0)
451|| (strcmp(conshdlrname,
"varbound") == 0) ) )
463 if( nconsvars > maxnconsvars )
472maxnconsvars = newsize;
485 for( v = 0; v < nconsvars; v++ )
490blockvals[nblockvars] = consvals[v];
502blockvars[nblockvars] = negblockvar;
503blockvals[nblockvars] = consvals[v];
510 if( nblockvars == 0 )
539 if( linkings[c]->
hasrhs)
546blockvals[nblockvars] = -1.0;
548#ifdef SCIP_MORE_DEBUG 551linkings[c]->
slacks[linkings[c]->
nslacks] = blockvars[nblockvars];
559 if( linkings[c]->
haslhs)
566blockvals[nblockvars] = 1.0;
568#ifdef SCIP_MORE_DEBUG 571linkings[c]->
slacks[linkings[c]->
nslacks] = blockvars[nblockvars];
582#ifdef SCIP_MORE_DEBUG 595mininfinite =
FALSE;
596maxinfinite =
FALSE;
597 for( v = 0; v < nblockvars - linkings[c]->
nslacksperblock&& (!mininfinite || !maxinfinite); v++ )
604 if( blockvals[v] >= 0.0 )
609minact += blockvals[v] * lb;
611maxact += blockvals[v] * ub;
618minact += blockvals[v] * ub;
620maxact += blockvals[v] * lb;
644assert(blockproblem->
nlinking<= nlinking);
678assert(heurdata !=
NULL);
679assert(vars !=
NULL);
680assert(conss !=
NULL);
686assert(0 == nvarsblock[0]);
691 for( i = 0; i < heurdata->nblocks; i++)
693conssoffset += nconssblock[i];
694varsoffset += nvarsblock[i];
697heurdata->linkingconss, heurdata->nlinking, i, success) );
733assert(linking !=
NULL);
734assert(blockproblem !=
NULL);
773 for( i = 0; i < length; i++ )
808 for( i = 0; i < linking->
nblocks- nnonintblocks; i++ )
809sumafter += 1 - fracPart[nnonintblocks + i];
811 for( i = 0; i < linking->
nblocks- nnonintblocks; i++ )
813sumbefor += fracPart[nnonintblocks + i];
814sumafter -= 1 - fracPart[nnonintblocks + i];
816 if( sumbefor >= sumafter )
818 for( k = 0; k <= i; k++ )
819fracPart[nnonintblocks + k] = -fracPart[nnonintblocks + k];
821 for( k = i + 1; k < linking->
nblocks- nnonintblocks; k++ )
822fracPart[nnonintblocks + k] = 1 - fracPart[nnonintblocks + k];
828diff = sumbefor - sumafter;
832 for( i = nnonintblocks - 1; i >= 0; i-- )
846assert(nnonintblocks == 0);
847fracPart[idx] += diff;
893assert(linkings !=
NULL);
894assert(blockproblem !=
NULL);
895assert(nlinking > 0);
900 for( c = 0; c < nlinking; c++ )
902linking = linkings[c];
941 if( origvar ==
NULL)
947lpvalue += varlpvalue * consvals[i];
977residual = goalvalue - part;
995residual = goalvalue - part;
1009goalvalue = residualrhs / (linking->
nblocks-
b);
1020goalvalue = residuallhs / (linking->
nblocks-
b);
1042#ifdef SCIP_MORE_DEBUG 1051#ifdef SCIP_MORE_DEBUG 1069 int* nviolatedblocksrhs,
1070 int* nviolatedblockslhs,
1074 int* nonviolatedblocksrhs;
1075 int* nonviolatedblockslhs;
1089 for( v = 0; v < linking->
nblocks; v++ )
1108(*nviolatedblocksrhs)++;
1110(*shift)[v] += slackval;
1111sumviols += slackval;
1115nonviolatedblocksrhs[v - *nviolatedblocksrhs] = v;
1125(*nviolatedblockslhs)++;
1127(*shift)[v] -= slackval;
1128sumviols -= slackval;
1132nonviolatedblockslhs[v - *nviolatedblockslhs] = v;
1138 if( *nviolatedblocksrhs + *nviolatedblockslhs == 0 ||
1139linking->
nblocks== *nviolatedblocksrhs || linking->
nblocks== *nviolatedblockslhs )
1158assert(linking->
hasrhs);
1159assert(*nviolatedblocksrhs != 0);
1164 for( v = 0; v < linking->
nblocks- *nviolatedblocksrhs; v++ )
1167part = linking->
currentrhs[nonviolatedblocksrhs[v]] - residual/(linking->
nblocks- *nviolatedblocksrhs - v);
1169shift_tmp = part - linking->
currentrhs[nonviolatedblocksrhs[v]];
1170residual += shift_tmp;
1171(*shift)[nonviolatedblocksrhs[v]] += shift_tmp;
1176 if( linking->
nblocks- *nviolatedblocksrhs == 1 )
1177(*shift)[nonviolatedblocksrhs[0] == 0 ? 1 : 0] -= residual;
1179(*shift)[nonviolatedblocksrhs[0]] -= residual;
1189assert(linking->
haslhs);
1190assert(*nviolatedblockslhs != 0);
1195 for( v = 0; v < linking->
nblocks- *nviolatedblockslhs; v++ )
1198part = linking->
currentlhs[nonviolatedblockslhs[v]] - residual/(linking->
nblocks- *nviolatedblockslhs - v);
1200shift_tmp = part - linking->
currentlhs[nonviolatedblockslhs[v]];
1201residual += shift_tmp;
1202(*shift)[nonviolatedblockslhs[v]] += shift_tmp;
1207 if( linking->
nblocks- *nviolatedblockslhs == 1 )
1208(*shift)[nonviolatedblockslhs[0] == 0 ? 1 : 0] -= residual;
1210(*shift)[nonviolatedblockslhs[0]] -= residual;
1231 int** nviolatedblocksrhs,
1232 int** nviolatedblockslhs,
1245assert(linkings !=
NULL);
1246assert(blockproblem !=
NULL);
1247assert(iteration >= 0);
1248assert(!*oneupdate);
1252 for( c = 0; c < nlinking; c++ )
1256linking = linkings[c];
1257(*nviolatedblocksrhs)[c] = 0;
1258(*nviolatedblockslhs)[c] = 0;
1263 SCIP_CALL(
calculateShift(
scip, blockproblem, linking, &shift, &(*nviolatedblocksrhs)[c], &(*nviolatedblockslhs)[c], &update) );
1273 for( v = 0; v < linking->
nblocks; v++ )
1279 for( v = 0; v < linking->
nblocks; v++)
1291 for( v = 0; v < linking->
nblocks; v++ )
1323 int* nviolatedblocksrhs,
1324 int* nviolatedblockslhs,
1335assert(linkings !=
NULL);
1336assert(blockproblem !=
NULL);
1338 for( c = 0; c < nlinking; c++ )
1340assert(nviolatedblocksrhs[c] >= 0);
1341assert(nviolatedblockslhs[c] >= 0);
1344 if( nviolatedblocksrhs[c] + nviolatedblockslhs[c] == 0 )
1351 for(
b= 0;
b< linkings[c]->
nblocks;
b++ )
1355assert(subscip !=
NULL);
1357 if( linkings[c]->
hasrhs&& (nviolatedblocksrhs[c] >= 1) && (linkings[c]->
lastviolations>= 1) )
1361new_obj = old_obj + heurdata->penalty * nviolatedblocksrhs[c];
1365 if( linkings[c]->
haslhs&& (nviolatedblockslhs[c] >= 1) && (linkings[c]->
lastviolations>= 1) )
1369new_obj = old_obj + heurdata->penalty * nviolatedblockslhs[c];
1402assert(linkings !=
NULL);
1403assert(blockproblem !=
NULL);
1418sol = sols[nsols - 1];
1432 for( c = 0; c < blockproblem[
b]->
nlinking; c++ )
1447assert(
SCIPisGE(subscip, rhs, lhs));
1454 for( i = 0; i < linking->
nblocks; i++ )
1460rvar = linking->
slacks[2 * i];
1461lvar = linking->
slacks[2 * i + 1];
1464activity = activitycons + rval - lval;
1468 else if( linking->
hasrhs)
1470rvar = linking->
slacks[i];
1472activity = activitycons + rval;
1477assert(linking->
haslhs);
1478lvar = linking->
slacks[i];
1480activity = activitycons - lval;
1492 SCIPdebugMsg(subscip,
"Correcting solution failed\n");
1494 SCIPdebugMsg(subscip,
"Correcting solution successful\n");
1522assert(heur !=
NULL);
1523assert(sol !=
NULL);
1524assert(blockproblem !=
NULL);
1554 for( v = 0; v < blockproblem[
b]->
nblockvars; v++ )
1560 for( v = blockproblem[
b]->nblockvars; v < nvars; v++ )
1604 if( timesubscip < time - 1.0 )
1664 for( v = 0; v < nblockvars; v++ )
1690assert(eventhdlr !=
NULL);
1691assert(eventdata !=
NULL);
1693assert(event !=
NULL);
1717assert(heur !=
NULL);
1732assert(heur !=
NULL);
1737assert(heurdata !=
NULL);
1759 int* sortedvarlabels;
1760 int* sortedconslabels;
1779assert( heur !=
NULL);
1781assert( result !=
NULL);
1784assert(heurdata !=
NULL);
1786assigneddecomp =
NULL;
1787blockproblem =
NULL;
1808 if( ndecomps == 0 )
1811decomp = alldecomps[0];
1812assert(decomp !=
NULL);
1820 if( nconss == 0 || nvars == 0 ||
nblocks<= 1 )
1822 SCIPdebugMsg(
scip,
"problem has no constraints, no variables or less than two blocks\n");
1858 SCIPsortIntPtr(sortedconslabels, (
void**)sortedconss, nconss);
1867decomp = assigneddecomp;
1892 if( heurdata->maxlinkscore != 1.0 )
1901 if( linkscore > heurdata->maxlinkscore )
1912 SCIPdebugMsg(
scip,
"Problem has linking variables or no linking constraints or less than two blocks\n");
1917heurdata->linkingconss = sortedconss;
1939 for( c = 0; c < heurdata->nlinking; c++ )
1948linkings[c]->
linkingcons= heurdata->linkingconss[c];
1967 for( c = 0; c < heurdata->nlinking; c++ )
1969 if( linkings[c]->
hasrhs)
1974 if( linkings[c]->
haslhs)
1992 for( k = 0; k < heurdata->maxit; k++ )
2001 for(
b= 0;
b< heurdata->nblocks;
b++ )
2013 if( eventhdlr ==
NULL)
2048 SCIPdebugMsg(
scip,
"Subproblem reached timelimit without optimal solution\n");
2052allslacksval += blocksolval;
2066 SCIPdebugMsg(
scip,
"Feasible solution found after %i iterations\n", k);
2070 for(
b= 0;
b< heurdata->nblocks;
b++ )
2085 for( c = 0; c < nblockvars; c++ )
2097 if( heurdata->reoptimize )
2100 SCIP_CALL(
reoptimize(
scip, heur, newsol, blockproblem, heurdata->nblocks, heurdata->reoptlimits, &improvedsol, &success) );
2101assert(improvedsol !=
NULL|| success ==
FALSE);
2139 int* nviolatedblocksrhs;
2140 int* nviolatedblockslhs;
2161 for(
b= 0;
b< heurdata->nblocks;
b++ )
2169 if( heurdata->reuse )
2184 if( linkings !=
NULL)
2186 for( c = heurdata->nlinking - 1; c >= 0; c-- )
2195 for( c = heurdata->nlinking - 1; c >= 0; c-- )
2208 if( blockproblem !=
NULL)
2222 if( assigneddecomp !=
NULL)
2225 if( sortedconslabels !=
NULL)
2228 if( sortedvarlabels !=
NULL)
2231 if( sortedconss !=
NULL)
2234 if( sortedvars !=
NULL)
2265assert(heur !=
NULL);
2276 "maximal linking score of used decomposition (equivalent to percentage of linking constraints)",
2277&heurdata->maxlinkscore,
FALSE, 1.0, 0.0, 1.0,
NULL,
NULL) );
2280 "multiplier for absolute increase of penalty parameters (0: no increase)",
2284 "should the problem get reoptimized with the original objective function?", &heurdata->reoptimize,
FALSE,
FALSE,
NULL,
NULL) );
2287 "should solutions get reused in subproblems?", &heurdata->reuse,
FALSE,
FALSE,
NULL,
NULL) );
2290 "should strict limits for reoptimization be set?", &heurdata->reoptlimits,
FALSE,
TRUE,
NULL,
NULL) );
2293 "should the heuristic run before or after the processing of the node? (0: before, 1: after, 2: both)",
#define SCIP_CALL_ABORT(x)
SCIP_Real SCIPgetRhsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPchgRhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
SCIP_Real SCIPgetLhsLinear(SCIP *scip, SCIP_CONS *cons)
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_Real SCIPgetActivityLinear(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
SCIP_RETCODE SCIPchgLhsLinear(SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
SCIP_RETCODE SCIPgetConsCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_CONS *sourcecons, SCIP_CONS **targetcons, SCIP_CONSHDLR *sourceconshdlr, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name, 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_Bool global, SCIP_Bool *valid)
SCIP_RETCODE SCIPcopyLimits(SCIP *sourcescip, SCIP *targetscip)
SCIP_RETCODE SCIPgetVarCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR *sourcevar, SCIP_VAR **targetvar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *success)
SCIP_RETCODE SCIPcomputeDecompConsLabels(SCIP *scip, SCIP_DECOMP *decomp, SCIP_CONS **conss, int nconss)
void SCIPgetDecomps(SCIP *scip, SCIP_DECOMP ***decomps, int *ndecomps, SCIP_Bool original)
SCIP_RETCODE SCIPdecompSetVarsLabels(SCIP_DECOMP *decomp, SCIP_VAR **vars, int *labels, int nvars)
int SCIPdecompGetNBlocks(SCIP_DECOMP *decomp)
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)
SCIP_RETCODE SCIPcomputeDecompStats(SCIP *scip, SCIP_DECOMP *decomp, SCIP_Bool uselimits)
char * SCIPdecompPrintStats(SCIP_DECOMP *decomp, char *strbuf)
SCIP_RETCODE SCIPdecompGetConssSize(SCIP_DECOMP *decomp, int *consssize, int nlabels)
void SCIPdecompGetConsLabels(SCIP_DECOMP *decomp, SCIP_CONS **conss, int *labels, int nconss)
void SCIPdecompFree(SCIP_DECOMP **decomp, BMS_BLKMEM *blkmem)
int SCIPdecompGetNBorderVars(SCIP_DECOMP *decomp)
void SCIPdecompGetVarsLabels(SCIP_DECOMP *decomp, SCIP_VAR **vars, int *labels, int nvars)
SCIP_Bool SCIPdecompUseBendersLabels(SCIP_DECOMP *decomp)
int SCIPdecompGetNBorderConss(SCIP_DECOMP *decomp)
SCIP_Bool SCIPdecompIsOriginal(SCIP_DECOMP *decomp)
SCIP_RETCODE SCIPfree(SCIP **scip)
SCIP_RETCODE SCIPcreate(SCIP **scip)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
const char * SCIPgetProbName(SCIP *scip)
SCIP_VAR ** SCIPgetOrigVars(SCIP *scip)
SCIP_CONS ** SCIPgetConss(SCIP *scip)
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNConss(SCIP *scip)
SCIP_VAR ** SCIPgetVars(SCIP *scip)
int SCIPgetNOrigVars(SCIP *scip)
SCIP_RETCODE SCIPcreateProb(SCIP *scip, const char *name, SCIP_DECL_PROBDELORIG((*probdelorig)), SCIP_DECL_PROBTRANS((*probtrans)), SCIP_DECL_PROBDELTRANS((*probdeltrans)), SCIP_DECL_PROBINITSOL((*probinitsol)), SCIP_DECL_PROBEXITSOL((*probexitsol)), SCIP_DECL_PROBCOPY((*probcopy)), SCIP_PROBDATA *probdata)
SCIP_VAR * SCIPfindVar(SCIP *scip, const char *name)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *value)
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 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 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 SCIPgetIntParam(SCIP *scip, const char *name, int *value)
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)
SCIP_RETCODE SCIPincludeHeurDps(SCIP *scip)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_RETCODE SCIPgetConsNVars(SCIP *scip, SCIP_CONS *cons, int *nvars, SCIP_Bool *success)
SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
SCIP_RETCODE SCIPgetConsVars(SCIP *scip, SCIP_CONS *cons, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
SCIP_Bool SCIPconsIsEnforced(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsActive(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsPropagated(SCIP_CONS *cons)
const char * SCIPconsGetName(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsModifiable(SCIP_CONS *cons)
SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
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 SCIPdropEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
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 SCIPheurGetNCalls(SCIP_HEUR *heur)
const char * SCIPheurGetName(SCIP_HEUR *heur)
void SCIPheurSetData(SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
SCIP_Longint SCIPgetMemExternEstim(SCIP *scip)
SCIP_Longint SCIPgetMemUsed(SCIP *scip)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBufferArray(scip, ptr, num)
#define SCIPreallocBufferArray(scip, ptr, num)
#define SCIPfreeBufferArray(scip, ptr)
#define SCIPduplicateBufferArray(scip, ptr, source, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
SCIP_RETCODE SCIPaddSolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool *stored)
int SCIPgetNSols(SCIP *scip)
SCIP_RETCODE SCIPcreateOrigSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
SCIP_RETCODE SCIPgetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_RETCODE SCIPsetSolVals(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_Real SCIPgetSolOrigObj(SCIP *scip, SCIP_SOL *sol)
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 SCIPfreeTransform(SCIP *scip)
SCIP_RETCODE SCIPinterruptSolve(SCIP *scip)
SCIP_RETCODE SCIPsolve(SCIP *scip)
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
SCIP_Real SCIPgetDualbound(SCIP *scip)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
SCIP_Real SCIPgetTotalTime(SCIP *scip)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisIntegral(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisPositive(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisFeasZero(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisFeasGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_RETCODE SCIPchgVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_VARTYPE SCIPvarGetType(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
SCIP_Real SCIPvarGetLPSol(SCIP_VAR *var)
SCIP_RETCODE SCIPgetNegatedVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **negvar)
SCIP_VAR * SCIPvarGetNegationVar(SCIP_VAR *var)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPcreateVarBasic(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype)
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
void SCIPsortIntPtr(int *intarray, void **ptrarray, int len)
void SCIPsortIntReal(int *intarray, SCIP_Real *realarray, int len)
void SCIPsortRealInt(SCIP_Real *realarray, int *intarray, int len)
void SCIPsortIntIntReal(int *intarray1, int *intarray2, SCIP_Real *realarray, int len)
int SCIPsnprintf(char *t, int len, const char *s,...)
static SCIP_RETCODE updateLambda(SCIP *scip, SCIP_HEURDATA *heurdata, LINKING **linkings, BLOCKPROBLEM **blockproblem, int *nviolatedblocksrhs, int *nviolatedblockslhs, int nlinking)
static SCIP_DECL_HEURCOPY(heurCopyDps)
static SCIP_RETCODE assignLinking(SCIP *scip, SCIP_DECOMP *newdecomp, SCIP_VAR **vars, SCIP_CONS **conss, int *varlabels, int *conslabels, int nvars, int nconss, int nlinkvars)
static SCIP_RETCODE roundPartition(SCIP *scip, LINKING *linking, BLOCKPROBLEM **blockproblem, SCIP_Bool roundbyrhs)
static SCIP_RETCODE updatePartition(SCIP *scip, LINKING **linkings, BLOCKPROBLEM **blockproblem, int **nviolatedblocksrhs, int **nviolatedblockslhs, int nlinking, int nblocks, int iteration, SCIP_Bool *oneupdate)
static SCIP_RETCODE createSubscip(SCIP *scip, SCIP **subscip)
static SCIP_RETCODE initCurrent(SCIP *scip, LINKING **linkings, BLOCKPROBLEM **blockproblem, SCIP_HEURTIMING heurtiming, int nlinking, SCIP_Bool *success)
static SCIP_DECL_EVENTEXEC(eventExecDps)
static SCIP_RETCODE reuseSolution(LINKING **linkings, BLOCKPROBLEM **blockproblem, int nblocks)
static SCIP_RETCODE createBlockproblem(SCIP *scip, BLOCKPROBLEM *blockproblem, LINKING **linkings, SCIP_CONS **conss, SCIP_VAR **vars, int nconss, int nvars, SCIP_CONS **linkingconss, int nlinking, int blocknumber, SCIP_Bool *success)
static SCIP_RETCODE reoptimize(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol, BLOCKPROBLEM **blockproblem, int nblocks, SCIP_Bool limits, SCIP_SOL **newsol, SCIP_Bool *success)
static SCIP_RETCODE createAndSplitProblem(SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_DECOMP *decomp, BLOCKPROBLEM **blockproblem, LINKING **linkings, SCIP_VAR **vars, SCIP_CONS **conss, SCIP_Bool *success)
static SCIP_DECL_HEUREXEC(heurExecDps)
static SCIP_RETCODE calculateShift(SCIP *scip, BLOCKPROBLEM **blockproblem, LINKING *linking, SCIP_Real **shift, int *nviolatedblocksrhs, int *nviolatedblockslhs, SCIP_Bool *update)
static SCIP_RETCODE copyToSubscip(SCIP *scip, SCIP *subscip, const char *name, SCIP_VAR **vars, SCIP_CONS **conss, SCIP_HASHMAP *varsmap, SCIP_HASHMAP *conssmap, int nvars, int nconss, SCIP_Bool *success)
static SCIP_DECL_HEURFREE(heurFreeDps)
#define BMSclearMemoryArray(ptr, num)
SCIP_Real SCIPconsGetLhs(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
SCIP_RETCODE SCIPgetConsVals(SCIP *scip, SCIP_CONS *cons, SCIP_Real *vals, int varssize, SCIP_Bool *success)
SCIP_Real SCIPconsGetRhs(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
public methods for decompositions
public methods for primal heuristics
#define SCIPdebugPrintCons(x, y, z)
public data structures and miscellaneous methods
public methods for constraint handler plugins and constraints
public methods for decompositions
public methods for primal heuristic plugins and divesets
public methods for memory management
public methods for message handling
public methods for SCIP parameter handling
public methods for global and local (sub)problems
SCIP_RETCODE SCIPincludeDefaultPlugins(SCIP *scip)
SCIP_CONS ** linkingconss
#define SCIP_DECOMP_LINKVAR
#define SCIP_DECOMP_LINKCONS
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_LPSOLVED
struct SCIP_HeurData SCIP_HEURDATA
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STATUS_BESTSOLLIMIT
enum SCIP_Status SCIP_STATUS
unsigned int SCIP_HEURTIMING
#define SCIP_HEURTIMING_AFTERNODE
#define SCIP_HEURTIMING_BEFORENODE
@ SCIP_VARTYPE_CONTINUOUS
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