Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods for primal heuristic plugins

Modules

 Special Methods
 methods commonly used by primal heuristics
 

Functions

 SCIP_DECL_SORTPTRCOMP (SCIPheurComp)
 
 SCIP_DECL_SORTPTRCOMP (SCIPheurCompName)
 
SCIP_HEURDATASCIPheurGetData (SCIP_HEUR *heur)
 
void SCIPheurSetData (SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
 
const char * SCIPheurGetName (SCIP_HEUR *heur)
 
const char * SCIPheurGetDesc (SCIP_HEUR *heur)
 
char SCIPheurGetDispchar (SCIP_HEUR *heur)
 
SCIP_HEURTIMING SCIPheurGetTimingmask (SCIP_HEUR *heur)
 
void SCIPheurSetTimingmask (SCIP_HEUR *heur, SCIP_HEURTIMING timingmask)
 
SCIP_Bool SCIPheurUsesSubscip (SCIP_HEUR *heur)
 
int SCIPheurGetPriority (SCIP_HEUR *heur)
 
int SCIPheurGetFreq (SCIP_HEUR *heur)
 
void SCIPheurSetFreq (SCIP_HEUR *heur, int freq)
 
int SCIPheurGetFreqofs (SCIP_HEUR *heur)
 
int SCIPheurGetMaxdepth (SCIP_HEUR *heur)
 
SCIP_Longint SCIPheurGetNCalls (SCIP_HEUR *heur)
 
SCIP_Longint SCIPheurGetNSolsFound (SCIP_HEUR *heur)
 
SCIP_Longint SCIPheurGetNBestSolsFound (SCIP_HEUR *heur)
 
SCIP_Bool SCIPheurIsInitialized (SCIP_HEUR *heur)
 
SCIP_Real SCIPheurGetSetupTime (SCIP_HEUR *heur)
 
SCIP_Real SCIPheurGetTime (SCIP_HEUR *heur)
 
SCIP_DIVESET ** SCIPheurGetDivesets (SCIP_HEUR *heur)
 
int SCIPheurGetNDivesets (SCIP_HEUR *heur)
 
SCIP_RETCODE SCIPincludeHeur (SCIP *scip, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, SCIP_HEURTIMING timingmask, SCIP_Bool usessubscip, SCIP_DECL_HEURCOPY((*heurcopy)), SCIP_DECL_HEURFREE((*heurfree)), SCIP_DECL_HEURINIT((*heurinit)), SCIP_DECL_HEUREXIT((*heurexit)), SCIP_DECL_HEURINITSOL((*heurinitsol)), SCIP_DECL_HEUREXITSOL((*heurexitsol)), SCIP_DECL_HEUREXEC((*heurexec)), SCIP_HEURDATA *heurdata)
 
SCIP_RETCODE 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 SCIPsetHeurCopy (SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURCOPY((*heurcopy)))
 
SCIP_RETCODE SCIPsetHeurFree (SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURFREE((*heurfree)))
 
SCIP_RETCODE SCIPsetHeurInit (SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINIT((*heurinit)))
 
SCIP_RETCODE SCIPsetHeurExit (SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXIT((*heurexit)))
 
SCIP_RETCODE SCIPsetHeurInitsol (SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINITSOL((*heurinitsol)))
 
SCIP_RETCODE SCIPsetHeurExitsol (SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXITSOL((*heurexitsol)))
 
SCIP_HEURSCIPfindHeur (SCIP *scip, const char *name)
 
SCIP_HEUR ** SCIPgetHeurs (SCIP *scip)
 
int SCIPgetNHeurs (SCIP *scip)
 
SCIP_RETCODE SCIPsetHeurPriority (SCIP *scip, SCIP_HEUR *heur, int priority)
 

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP() [1/2]

SCIP_DECL_SORTPTRCOMP ( SCIPheurComp  )

compares two heuristics w. r. to their priority

compares two heuristics w. r. to their delay positions and their priority

Definition at line 40 of file heur.c.

References SCIP_Heur::delaypos, SCIP_Heur::freq, SCIP_Heur::ncalls, NULL, and SCIP_Heur::priority.

◆ SCIP_DECL_SORTPTRCOMP() [2/2]

SCIP_DECL_SORTPTRCOMP ( SCIPheurCompName  )

comparison method for sorting heuristics w.r.t. to their name

Definition at line 64 of file heur.c.

References SCIPheurGetName().

◆ SCIPheurGetData()

◆ SCIPheurSetData()

void SCIPheurSetData ( SCIP_HEUR heur,
SCIP_HEURDATA heurdata 
)

sets user data of primal heuristic; user has to free old data in advance!

Parameters
heurprimal heuristic
heurdatanew primal heuristic user data

Definition at line 1102 of file heur.c.

References SCIP_Heur::heurdata, and NULL.

Referenced by presolveTwoOpt(), SCIP_DECL_HEUREXIT(), SCIP_DECL_HEUREXITSOL(), SCIP_DECL_HEURFREE(), SCIP_DECL_HEURINIT(), and SCIP_DECL_HEURINITSOL().

◆ SCIPheurGetName()

◆ SCIPheurGetDesc()

const char* SCIPheurGetDesc ( SCIP_HEUR heur)

gets description of primal heuristic

Parameters
heurprimal heuristic

Definition at line 1191 of file heur.c.

References SCIP_Heur::desc, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPheurGetDispchar()

char SCIPheurGetDispchar ( SCIP_HEUR heur)

gets display character of primal heuristic

Parameters
heurprimal heuristic

Definition at line 1201 of file heur.c.

References SCIP_Heur::dispchar, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIP_DECL_DISPOUTPUT().

◆ SCIPheurGetTimingmask()

SCIP_HEURTIMING SCIPheurGetTimingmask ( SCIP_HEUR heur)

returns the timing mask of the heuristic

Parameters
heurprimal heuristic

Definition at line 1211 of file heur.c.

References NULL, and SCIP_Heur::timingmask.

◆ SCIPheurSetTimingmask()

void SCIPheurSetTimingmask ( SCIP_HEUR heur,
SCIP_HEURTIMING  timingmask 
)

sets new timing mask for heuristic

Parameters
heurprimal heuristic
timingmasknew timing mask of heuristic

Definition at line 1221 of file heur.c.

References NULL, and SCIP_Heur::timingmask.

Referenced by SCIP_DECL_HEUREXEC(), SCIP_DECL_HEUREXITSOL(), SCIP_DECL_HEURINIT(), and SCIP_DECL_HEURINITSOL().

◆ SCIPheurUsesSubscip()

SCIP_Bool SCIPheurUsesSubscip ( SCIP_HEUR heur)

does the heuristic use a secondary SCIP instance?

Parameters
heurprimal heuristic

Definition at line 1232 of file heur.c.

References NULL, and SCIP_Heur::usessubscip.

Referenced by SCIPparamsetSetEmphasis(), and SCIPparamsetSetToSubscipsOff().

◆ SCIPheurGetPriority()

int SCIPheurGetPriority ( SCIP_HEUR heur)

gets priority of primal heuristic

Parameters
heurprimal heuristic

Definition at line 1242 of file heur.c.

References NULL, and SCIP_Heur::priority.

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIPprimalHeuristics().

◆ SCIPheurGetFreq()

int SCIPheurGetFreq ( SCIP_HEUR heur)

gets frequency of primal heuristic

Parameters
heurprimal heuristic

Definition at line 1266 of file heur.c.

References SCIP_Heur::freq, and NULL.

Referenced by checkParameters(), SCIP_DECL_DIALOGEXEC(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEURINIT(), and SCIP_DECL_HEURINITSOL().

◆ SCIPheurSetFreq()

void SCIPheurSetFreq ( SCIP_HEUR heur,
int  freq 
)

sets frequency of primal heuristic

Parameters
heurprimal heuristic
freqnew frequency of heuristic

Definition at line 1276 of file heur.c.

References SCIP_Heur::freq, and NULL.

Referenced by SCIP_DECL_HEUREXEC(), SCIPheurSyncPassSol(), and storeSolution().

◆ SCIPheurGetFreqofs()

int SCIPheurGetFreqofs ( SCIP_HEUR heur)

gets frequency offset of primal heuristic

Parameters
heurprimal heuristic

Definition at line 1287 of file heur.c.

References SCIP_Heur::freqofs, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIP_DECL_HEURINIT(), and SCIP_DECL_HEURINITSOL().

◆ SCIPheurGetMaxdepth()

int SCIPheurGetMaxdepth ( SCIP_HEUR heur)

gets maximal depth level for calling primal heuristic (returns -1, if no depth limit exists)

Parameters
heurprimal heuristic

Definition at line 1297 of file heur.c.

References SCIP_Heur::maxdepth, and NULL.

◆ SCIPheurGetNCalls()

SCIP_Longint SCIPheurGetNCalls ( SCIP_HEUR heur)

gets the number of times, the heuristic was called and tried to find a solution

Parameters
heurprimal heuristic

Definition at line 1307 of file heur.c.

References SCIP_Heur::ncalls, and NULL.

Referenced by applyVbounds(), calcNodeLimit(), printHeuristicStatistics(), SCIP_DECL_HEUREXEC(), and SCIPapplyZeroobj().

◆ SCIPheurGetNSolsFound()

SCIP_Longint SCIPheurGetNSolsFound ( SCIP_HEUR heur)

gets the number of primal feasible solutions found by this heuristic

Parameters
heurprimal heuristic

Definition at line 1317 of file heur.c.

References SCIP_Heur::nsolsfound, and NULL.

Referenced by printHeuristicStatistics(), and SCIP_DECL_HEUREXEC().

◆ SCIPheurGetNBestSolsFound()

SCIP_Longint SCIPheurGetNBestSolsFound ( SCIP_HEUR heur)

gets the number of new best primal feasible solutions found by this heuristic

Parameters
heurprimal heuristic

Definition at line 1327 of file heur.c.

References SCIP_Heur::nbestsolsfound, and NULL.

Referenced by applyVbounds(), determineLimits(), printHeuristicStatistics(), and SCIP_DECL_HEUREXEC().

◆ SCIPheurIsInitialized()

SCIP_Bool SCIPheurIsInitialized ( SCIP_HEUR heur)

is primal heuristic initialized?

Parameters
heurprimal heuristic

Definition at line 1337 of file heur.c.

References SCIP_Heur::initialized, and NULL.

Referenced by SCIPsetIncludeConcsolverType().

◆ SCIPheurGetSetupTime()

SCIP_Real SCIPheurGetSetupTime ( SCIP_HEUR heur)

gets time in seconds used in this heuristic for setting up for next stages

Parameters
heurprimal heuristic

Definition at line 1359 of file heur.c.

References NULL, SCIPclockGetTime(), and SCIP_Heur::setuptime.

Referenced by printHeuristicStatistics().

◆ SCIPheurGetTime()

SCIP_Real SCIPheurGetTime ( SCIP_HEUR heur)

gets time in seconds used in this heuristic

Parameters
heurprimal heuristic

Definition at line 1369 of file heur.c.

References SCIP_Heur::heurclock, NULL, and SCIPclockGetTime().

Referenced by printHeuristicStatistics().

◆ SCIPheurGetDivesets()

SCIP_DIVESET** SCIPheurGetDivesets ( SCIP_HEUR heur)

returns array of divesets of this primal heuristic, or NULL if it has no divesets

Parameters
heurprimal heuristic

Definition at line 1379 of file heur.c.

References SCIP_Heur::divesets, and NULL.

Referenced by printHeuristicStatistics().

◆ SCIPheurGetNDivesets()

int SCIPheurGetNDivesets ( SCIP_HEUR heur)

returns the number of divesets of this primal heuristic

Parameters
heurprimal heuristic

Definition at line 1389 of file heur.c.

References SCIP_Heur::ndivesets, and NULL.

Referenced by printHeuristicStatistics().

◆ SCIPincludeHeur()

SCIP_RETCODE SCIPincludeHeur ( SCIP scip,
const char *  name,
const char *  desc,
char  dispchar,
int  priority,
int  freq,
int  freqofs,
int  maxdepth,
SCIP_HEURTIMING  timingmask,
SCIP_Bool  usessubscip,
SCIP_DECL_HEURCOPY((*heurcopy))  ,
SCIP_DECL_HEURFREE((*heurfree))  ,
SCIP_DECL_HEURINIT((*heurinit))  ,
SCIP_DECL_HEUREXIT((*heurexit))  ,
SCIP_DECL_HEURINITSOL((*heurinitsol))  ,
SCIP_DECL_HEUREXITSOL((*heurexitsol))  ,
SCIP_DECL_HEUREXEC((*heurexec))  ,
SCIP_HEURDATA heurdata 
)

creates a primal heuristic and includes it in SCIP.

Note
method has all heuristic callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludeHeurBasic() and setter functions if you seek for a method which is less likely to change in future releases
Returns
SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
namename of primal heuristic
descdescription of primal heuristic
dispchardisplay character of primal heuristic
prioritypriority of the primal heuristic
freqfrequency for calling primal heuristic
freqofsfrequency offset for calling primal heuristic
maxdepthmaximal depth level to call heuristic at (-1: no limit)
timingmaskpositions in the node solving loop where heuristic should be executed; see definition of SCIP_HEURTIMING for possible values
usessubscipdoes the heuristic use a secondary SCIP instance?
heurdataprimal heuristic data

Definition at line 7984 of file scip.c.

References checkStage(), FALSE, Scip::mem, Scip::messagehdlr, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPfindHeur(), SCIPheurCreate(), SCIPsetIncludeHeur(), Scip::set, SCIP_Mem::setmem, and TRUE.

Referenced by SCIPincludeObjHeur().

◆ SCIPincludeHeurBasic()

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 
)

creates a primal heuristic and includes it in SCIP with its most fundamental callbacks. All non-fundamental (or optional) callbacks as, e. g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter functions, see SCIPsetHeurCopy(), SCIPsetHeurFree(), SCIPsetHeurInit(), SCIPsetHeurExit(), SCIPsetHeurInitsol(), and SCIPsetHeurExitsol()

Note
if you want to set all callbacks with a single method call, consider using SCIPincludeHeur() instead
Parameters
scipSCIP data structure
heurpointer to primal heuristic
namename of primal heuristic
descdescription of primal heuristic
dispchardisplay character of primal heuristic
prioritypriority of the primal heuristic
freqfrequency for calling primal heuristic
freqofsfrequency offset for calling primal heuristic
maxdepthmaximal depth level to call heuristic at (-1: no limit)
timingmaskpositions in the node solving loop where heuristic should be executed; see definition of SCIP_HEURTIMING for possible values
usessubscipdoes the heuristic use a secondary SCIP instance?
heurdataprimal heuristic data

Definition at line 8034 of file scip.c.

References checkStage(), FALSE, Scip::mem, Scip::messagehdlr, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPfindHeur(), SCIPheurCreate(), SCIPsetIncludeHeur(), Scip::set, SCIP_Mem::setmem, and TRUE.

Referenced by SCIPincludeHeurActconsdiving(), SCIPincludeHeurBound(), SCIPincludeHeurCoefdiving(), SCIPincludeHeurCompletesol(), SCIPincludeHeurCrossover(), SCIPincludeHeurDins(), SCIPincludeHeurDualval(), SCIPincludeHeurFixandinfer(), SCIPincludeHeurFracdiving(), SCIPincludeHeurGuideddiving(), SCIPincludeHeurIndicator(), SCIPincludeHeurIntdiving(), SCIPincludeHeurIntshifting(), SCIPincludeHeurLinesearchdiving(), SCIPincludeHeurLocalbranching(), SCIPincludeHeurLpface(), SCIPincludeHeurMultistart(), SCIPincludeHeurMutation(), SCIPincludeHeurObjpscostdiving(), SCIPincludeHeurOctane(), SCIPincludeHeurOfins(), SCIPincludeHeurOneopt(), SCIPincludeHeurProximity(), SCIPincludeHeurPscostdiving(), SCIPincludeHeurRandrounding(), SCIPincludeHeurRens(), SCIPincludeHeurReoptsols(), SCIPincludeHeurRins(), SCIPincludeHeurRootsoldiving(), SCIPincludeHeurRounding(), SCIPincludeHeurShiftandpropagate(), SCIPincludeHeurShifting(), SCIPincludeHeurSimplerounding(), SCIPincludeHeurSubNlp(), SCIPincludeHeurSync(), SCIPincludeHeurTrivial(), SCIPincludeHeurTrivialnegation(), SCIPincludeHeurTrySol(), SCIPincludeHeurTwoopt(), SCIPincludeHeurUndercover(), SCIPincludeHeurVbounds(), SCIPincludeHeurVeclendiving(), SCIPincludeHeurZeroobj(), and SCIPincludeHeurZirounding().

◆ SCIPsetHeurCopy()

SCIP_RETCODE SCIPsetHeurCopy ( SCIP scip,
SCIP_HEUR heur,
SCIP_DECL_HEURCOPY((*heurcopy))   
)

◆ SCIPsetHeurFree()

◆ SCIPsetHeurInit()

◆ SCIPsetHeurExit()

◆ SCIPsetHeurInitsol()

◆ SCIPsetHeurExitsol()

SCIP_RETCODE SCIPsetHeurExitsol ( SCIP scip,
SCIP_HEUR heur,
SCIP_DECL_HEUREXITSOL((*heurexitsol))   
)

◆ SCIPfindHeur()

SCIP_HEUR* SCIPfindHeur ( SCIP scip,
const char *  name 
)

returns the primal heuristic of the given name, or NULL if not existing

Parameters
scipSCIP data structure
namename of primal heuristic

Definition at line 8175 of file scip.c.

References NULL, SCIPsetFindHeur(), and Scip::set.

Referenced by checkSystemGF2(), extendToCover(), SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA(), SCIP_DECL_CONSINIT(), SCIPcopyConcurrentSolvingStats(), SCIPcreateConcurrent(), SCIPdeleteSubproblemProximity(), SCIPfindObjHeur(), SCIPincludeHeur(), SCIPincludeHeurBasic(), SCIPreoptsolsGetNCheckedsols(), SCIPreoptsolsGetNImprovingsols(), and solveComponent().

◆ SCIPgetHeurs()

SCIP_HEUR** SCIPgetHeurs ( SCIP scip)

returns the array of currently available primal heuristics

Parameters
scipSCIP data structure

Definition at line 8188 of file scip.c.

References SCIP_Set::heurs, NULL, SCIPsetSortHeurs(), and Scip::set.

Referenced by checkParameters(), SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPgetNHeurs()

int SCIPgetNHeurs ( SCIP scip)

returns the number of currently available primal heuristics

Parameters
scipSCIP data structure

Definition at line 8201 of file scip.c.

References SCIP_Set::nheurs, NULL, and Scip::set.

Referenced by checkParameters(), SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPsetHeurPriority()

SCIP_RETCODE SCIPsetHeurPriority ( SCIP scip,
SCIP_HEUR heur,
int  priority 
)

sets the priority of a primal heuristic

Parameters
scipSCIP data structure
heurprimal heuristic
prioritynew priority of the primal heuristic

Definition at line 8212 of file scip.c.

References NULL, SCIP_OKAY, SCIPheurSetPriority(), and Scip::set.

Referenced by SCIP_DECL_PARAMCHGD().