32 #define HEUR_NAME "sync" 33 #define HEUR_DESC "heuristic for synchronizing solution" 34 #define HEUR_DISPCHAR '$' 35 #define HEUR_PRIORITY -3000000 37 #define HEUR_FREQOFS 0 38 #define HEUR_MAXDEPTH -1 39 #define HEUR_TIMING SCIP_HEURTIMING_DURINGLPLOOP | SCIP_HEURTIMING_BEFOREPRESOL | SCIP_HEURTIMING_BEFORENODE 40 #define HEUR_USESSUBSCIP FALSE 67 assert( heur !=
NULL );
75 assert(heurdata !=
NULL);
76 assert(heurdata->nsols == 0);
91 assert( heur !=
NULL );
99 assert(heurdata !=
NULL);
102 for( i = 0; i < heurdata->nsols; ++i )
119 assert(heur !=
NULL);
122 assert(result !=
NULL);
129 assert(heurdata !=
NULL);
130 assert(heurdata->nsols > 0);
134 for( i = 0; i < heurdata->nsols; ++i )
169 assert(heur !=
NULL);
189 assert(scip !=
NULL);
190 assert(heur !=
NULL);
196 assert(heurdata !=
NULL);
204 if( heurdata->nsols < heurdata->maxnsols )
208 i = heurdata->nsols++;
212 heurdata->sols[i] = heurdata->sols[i - 1];
215 heurdata->sols[i] = sol;
229 heurdata->sols[i - 1] = heurdata->sols[i];
242 heurdata->sols[i-1] = sol;
250 assert(heurdata->nsols > 0);
251 assert(heurdata->nsols <= heurdata->maxnsols);
SCIP_RETCODE SCIPsetHeurExit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEUREXIT((*heurexit)))
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_HeurData SCIP_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)
static SCIP_DECL_HEUREXITSOL(heurExitSync)
void SCIPheurSetFreq(SCIP_HEUR *heur, int freq)
const char * SCIPheurGetName(SCIP_HEUR *heur)
#define SCIPallocMemory(scip, ptr)
static SCIP_DECL_HEURFREE(heurFreeSync)
SCIP_RETCODE SCIPsetHeurFree(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURFREE((*heurfree)))
SCIP_RETCODE SCIPincludeHeurSync(SCIP *scip)
SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
int SCIPheurGetFreq(SCIP_HEUR *heur)
primal heuristic that adds given solutions
SCIP_RETCODE SCIPgetIntParam(SCIP *scip, const char *name, int *value)
SCIP_RETCODE SCIPheurSyncPassSol(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol)
void SCIPsolSetHeur(SCIP_SOL *sol, SCIP_HEUR *heur)
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 SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
#define SCIPfreeMemoryArray(scip, ptr)
#define SCIPallocMemoryArray(scip, ptr, num)
#define SCIPfreeMemory(scip, ptr)
static SCIP_DECL_HEUREXEC(heurExecSync)
SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)