本文整理汇总了C++中SCIPheurGetName函数的典型用法代码示例。如果您正苦于以下问题:C++ SCIPheurGetName函数的具体用法?C++ SCIPheurGetName怎么用?C++ SCIPheurGetName使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SCIPheurGetName函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SCIP_DECL_HEUREXEC
/** execution method of primal heuristic */
static
SCIP_DECL_HEUREXEC(heurExecRandrounding) /*lint --e{715}*/
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
SCIP_Bool propagate;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
assert(result != NULL);
assert(SCIPhasCurrentNodeLP(scip));
*result = SCIP_DIDNOTRUN;
/* only call heuristic, if an optimal LP solution is at hand or if relaxation solution is available */
if( SCIPgetLPSolstat(scip) != SCIP_LPSOLSTAT_OPTIMAL && ! SCIPisRelaxSolValid(scip) )
return SCIP_OKAY;
/* only call heuristic, if the LP objective value is smaller than the cutoff bound */
if( SCIPisGE(scip, SCIPgetLPObjval(scip), SCIPgetCutoffbound(scip)) )
return SCIP_OKAY;
/* get heuristic data */
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
/* don't call heuristic, if we have already processed the current LP solution but no relaxation solution is available */
if ( SCIPgetNLPs(scip) == heurdata->lastlp && ! SCIPisRelaxSolValid(scip) )
return SCIP_OKAY;
propagate = (!heurdata->propagateonlyroot || SCIPgetDepth(scip) == 0);
/* try to round LP solution */
SCIP_CALL( performLPRandRounding(scip, heurdata, heurtiming, propagate, result) );
return SCIP_OKAY;
}
示例2: SCIP_DECL_HEUREXITSOL
/** solving process deinitialization method of primal heuristic (called before branch and bound process data is freed) */
static
SCIP_DECL_HEUREXITSOL(heurExitsolOneopt)
{
assert(heur != NULL);
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
/* reset the timing mask to its default value */
SCIPheurSetTimingmask(heur, HEUR_TIMING);
return SCIP_OKAY;
}
示例3: SCIP_DECL_HEURCOPY
/** copy method for primal heuristic plugins (called when SCIP copies plugins) */
static
SCIP_DECL_HEURCOPY(heurCopyMutation)
{ /*lint --e{715}*/
assert(scip != NULL);
assert(heur != NULL);
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
/* call inclusion method of primal heuristic */
SCIP_CALL( SCIPincludeHeurMutation(scip) );
return SCIP_OKAY;
}
示例4: SCIP_DECL_HEURINITSOL
/** solving process initialization method of primal heuristic (called when branch and bound process is about to begin) */
static
SCIP_DECL_HEURINITSOL(heurInitsolSimplerounding)
{
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
heurdata->lastlp = -1;
return SCIP_OKAY;
}
示例5: SCIP_DECL_HEUREXIT
/** deinitialization method of primal heuristic (called before transformed problem is freed) */
static
SCIP_DECL_HEUREXIT(heurExitRandrounding) /*lint --e{715}*/
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
/* free heuristic data */
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
SCIP_CALL( SCIPfreeSol(scip, &heurdata->sol) );
return SCIP_OKAY;
}
示例6: SCIP_DECL_HEURINIT
/** initialization method of primal heuristic (called after problem was transformed) */
static
SCIP_DECL_HEURINIT(heurInitZirounding)
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
/* create working solution */
SCIP_CALL( SCIPcreateSol(scip, &heurdata->sol, heur) );
return SCIP_OKAY;
}
示例7: SCIP_DECL_HEURFREE
/** destructor of primal heuristic to free user data (called when SCIP is exiting) */
static
SCIP_DECL_HEURFREE(heurFreeZirounding)
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
/* free heuristic data */
SCIPfreeMemory(scip, &heurdata);
SCIPheurSetData(heur, NULL);
return SCIP_OKAY;
}
示例8: SCIP_DECL_HEURINIT
/** initialization method of primal heuristic (called after problem was transformed) */
static
SCIP_DECL_HEURINIT(heurInitRandrounding) /*lint --e{715}*/
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
/* create heuristic data */
SCIP_CALL( SCIPcreateSol(scip, &heurdata->sol, heur) );
heurdata->lastlp = -1;
heurdata->randseed = DEFAULT_RANDSEED;
return SCIP_OKAY;
}
示例9: SCIPheurCopyInclude
/** copies the given primal heuristic to a new scip */
SCIP_RETCODE SCIPheurCopyInclude(
SCIP_HEUR* heur, /**< primal heuristic */
SCIP_SET* set /**< SCIP_SET of SCIP to copy to */
)
{
assert(heur != NULL);
assert(set != NULL);
assert(set->scip != NULL);
if( heur->heurcopy != NULL )
{
SCIPdebugMessage("including heur %s in subscip %p\n", SCIPheurGetName(heur), (void*)set->scip);
SCIP_CALL( heur->heurcopy(set->scip, heur) );
}
return SCIP_OKAY;
}
示例10: SCIP_DECL_HEURINITSOL
/** solving process initialization method of primal heuristic (called when branch and bound process is about to begin) */
static
SCIP_DECL_HEURINITSOL(heurInitsolOneopt)
{
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
/* create heuristic data */
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
/* if the heuristic is called at the root node, we may want to be called during the cut-and-price loop and even before the first LP solve */
if( heurdata->duringroot && SCIPheurGetFreqofs(heur) == 0 )
SCIPheurSetTimingmask(heur, SCIP_HEURTIMING_DURINGLPLOOP | SCIP_HEURTIMING_BEFORENODE);
return SCIP_OKAY;
}
示例11: SCIP_DECL_HEURINIT
/** initialization method of primal heuristic (called after problem was transformed) */
static
SCIP_DECL_HEURINIT(heurInitSimplerounding) /*lint --e{715}*/
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
assert(SCIPheurGetData(heur) == NULL);
/* create heuristic data */
SCIP_CALL( SCIPallocMemory(scip, &heurdata) );
SCIP_CALL( SCIPcreateSol(scip, &heurdata->sol, heur) );
heurdata->lastlp = -1;
heurdata->nroundablevars = -1;
SCIPheurSetData(heur, heurdata);
return SCIP_OKAY;
}
示例12: SCIP_DECL_HEURINITSOL
/** solving process initialization method of primal heuristic (called when branch and bound process is about to begin) */
static
SCIP_DECL_HEURINITSOL(heurInitsolRandrounding)
{
SCIP_HEURDATA* heurdata;
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
heurdata->lastlp = -1;
/* change the heuristic's timingmask, if it should be called only once per node */
if( heurdata->oncepernode )
SCIPheurSetTimingmask(heur, SCIP_HEURTIMING_AFTERLPNODE);
return SCIP_OKAY;
}
示例13: SCIP_DECL_HEUREXIT
/** deinitialization method of primal heuristic (called before transformed problem is freed) */
static
SCIP_DECL_HEUREXIT(heurExitActconsdiving) /*lint --e{715}*/
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
assert(heur != NULL);
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
/* get heuristic data */
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
/* free working solution */
SCIP_CALL( SCIPfreeSol(scip, &heurdata->sol) );
return SCIP_OKAY;
}
示例14: SCIP_DECL_HEUREXEC
/** execution method of primal heuristic */
static
SCIP_DECL_HEUREXEC(heurExecDistributiondiving)
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
SCIP_DIVESET* diveset;
int nlprows;
assert(heur != NULL);
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
assert(scip != NULL);
assert(result != NULL);
assert(SCIPhasCurrentNodeLP(scip));
*result = SCIP_DIDNOTRUN;
/* get heuristic's data */
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
nlprows = SCIPgetNLPRows(scip);
if( nlprows == 0 )
return SCIP_OKAY;
/* terminate if there are no integer variables (note that, e.g., SOS1 variables may be present) */
if( SCIPgetNBinVars(scip) + SCIPgetNIntVars(scip) == 0 )
return SCIP_OKAY;
/* select and store the scoring parameter for this call of the heuristic */
if( heurdata->scoreparam == 'r' )
heurdata->score = SCOREPARAM_VALUES[SCIPheurGetNCalls(heur) % SCOREPARAM_VALUESLEN];
else
heurdata->score = heurdata->scoreparam;
SCIP_CALL( heurdataEnsureArraySize(scip, heurdata, nlprows) );
assert(SCIPheurGetNDivesets(heur) > 0);
assert(SCIPheurGetDivesets(heur) != NULL);
diveset = SCIPheurGetDivesets(heur)[0];
assert(diveset != NULL);
SCIP_CALL( SCIPperformGenericDivingAlgorithm(scip, diveset, heurdata->sol, heur, result, nodeinfeasible) );
SCIP_CALL( heurdataFreeArrays(scip, heurdata) );
return SCIP_OKAY;
}
示例15: SCIP_DECL_HEUREXEC
/** execution method of primal heuristic */
static
SCIP_DECL_HEUREXEC(heurExecGuideddiving) /*lint --e{715}*/
{ /*lint --e{715}*/
SCIP_HEURDATA* heurdata;
SCIP_DIVESET* diveset;
assert(heur != NULL);
assert(strcmp(SCIPheurGetName(heur), HEUR_NAME) == 0);
assert(scip != NULL);
assert(result != NULL);
assert(SCIPhasCurrentNodeLP(scip));
*result = SCIP_DIDNOTRUN;
/* don't dive, if no feasible solutions exist */
if( SCIPgetNSols(scip) == 0 )
return SCIP_OKAY;
/* get best solution that should guide the search; if this solution lives in the original variable space,
* we cannot use it since it might violate the global bounds of the current problem
*/
if( SCIPsolIsOriginal(SCIPgetBestSol(scip)) )
return SCIP_OKAY;
/* get heuristic's data */
heurdata = SCIPheurGetData(heur);
assert(heurdata != NULL);
/* if there are no integer variables (note that, e.g., SOS1 variables may be present) */
if ( SCIPgetNBinVars(scip) + SCIPgetNIntVars(scip) == 0 )
return SCIP_OKAY;
assert(SCIPheurGetNDivesets(heur) > 0);
assert(SCIPheurGetDivesets(heur) != NULL);
diveset = SCIPheurGetDivesets(heur)[0];
assert(diveset != NULL);
/* call generic diving algorithm */
SCIP_CALL( SCIPperformGenericDivingAlgorithm(scip, diveset, heurdata->sol, heur, result, nodeinfeasible) );
return SCIP_OKAY;
}