30 #define HEUR_NAME "reoptsols" 31 #define HEUR_DESC "primal heuristic updating solutions found in a previous optimization round" 32 #define HEUR_DISPCHAR 'J' 33 #define HEUR_PRIORITY 40000 35 #define HEUR_FREQOFS 0 36 #define HEUR_MAXDEPTH 0 37 #define HEUR_TIMING SCIP_HEURTIMING_BEFORENODE 38 #define HEUR_USESSUBSCIP FALSE 105 assert(heur !=
NULL);
121 assert(heur !=
NULL );
124 assert(heurdata !=
NULL );
139 assert(heur !=
NULL );
142 assert(heurdata !=
NULL );
144 heurdata->ncheckedsols = 0;
145 heurdata->nimprovingsols = 0;
162 #ifdef SCIP_MORE_DEBUG 168 assert(heur !=
NULL);
177 assert(heurdata !=
NULL);
180 nchecksols = heurdata->maxsols == -1 ? INT_MAX : heurdata->maxsols;
196 #ifdef SCIP_MORE_DEBUG 201 if( objsimsol == -1 )
209 if( sim >= objsimsol )
217 if( nsols >= allocmem )
224 assert(nsols <= allocmem);
229 for( s = 0; s < nsols && nchecksols > 0; s++ )
253 #ifdef SCIP_MORE_DEBUG 256 heurdata->nimprovingsols++;
261 heurdata->ncheckedsols++;
264 #ifdef SCIP_MORE_DEBUG 265 printf(
">> heuristic <%s> found %d of %d improving solutions from run %d.\n",
HEUR_NAME, nsolsaddedrun, nsols, run);
298 assert(scip !=
NULL);
301 assert(heur !=
NULL);
304 assert(heurdata !=
NULL);
306 return heurdata->ncheckedsols;
317 assert(scip !=
NULL);
320 assert(heur !=
NULL);
323 assert(heurdata !=
NULL);
325 return heurdata->nimprovingsols;
344 assert(heur !=
NULL);
353 &heurdata->maxsols,
TRUE, 1000, -1, INT_MAX,
NULL,
NULL) );
355 &heurdata->maxruns,
TRUE, -1, -1, INT_MAX,
NULL,
NULL) );
SCIP_Bool SCIPisFeasLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPgetCutoffbound(SCIP *scip)
SCIP_RETCODE SCIPgetRealParam(SCIP *scip, const char *name, SCIP_Real *value)
SCIP_RETCODE SCIPrecomputeSolObj(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_HeurData SCIP_HEURDATA
#define SCIPfreeBlockMemory(scip, ptr)
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)
void SCIPresetReoptSolMarks(SCIP *scip)
#define SCIPfreeBufferArray(scip, ptr)
static SCIP_DECL_HEURINIT(heurInitReoptsols)
void SCIPheurSetData(SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
#define SCIPallocBlockMemory(scip, ptr)
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)
static SCIP_DECL_HEUREXEC(heurExecReoptsols)
const char * SCIPheurGetName(SCIP_HEUR *heur)
SCIP_HEUR * SCIPfindHeur(SCIP *scip, const char *name)
int SCIPreoptsolsGetNCheckedsols(SCIP *scip)
SCIP_RETCODE SCIPsetHeurFree(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURFREE((*heurfree)))
SCIP_RETCODE SCIPgetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
static SCIP_RETCODE createNewSol(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol, SCIP_Bool *success)
SCIP_RETCODE SCIPgetReoptSolsRun(SCIP *scip, int run, SCIP_SOL **sols, int solssize, int *nsols)
SCIP_Bool SCIPisReoptEnabled(SCIP *scip)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *value)
SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
SCIP_RETCODE SCIPincludeHeurReoptsols(SCIP *scip)
int SCIPreoptsolsGetNImprovingsols(SCIP *scip)
data structures and methods for collecting reoptimization information
#define SCIPallocBufferArray(scip, ptr, num)
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)
static SCIP_DECL_HEURCOPY(heurCopyReoptsols)
SCIP_Real SCIPgetReoptSimilarity(SCIP *scip, int run1, int run2)
reoptsols primal heuristic
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
int SCIPgetNReoptRuns(SCIP *scip)
SCIP_RETCODE SCIPsetHeurInit(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURINIT((*heurinit)))
static SCIP_DECL_HEURFREE(heurFreeReoptsols)
SCIP_RETCODE SCIPsetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
SCIP_RETCODE SCIPsetHeurCopy(SCIP *scip, SCIP_HEUR *heur, SCIP_DECL_HEURCOPY((*heurcopy)))
SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)
SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
#define SCIPreallocBufferArray(scip, ptr, num)