57 assert(concsolver != NULL);
58 assert(varperm != NULL);
111 assert(scip != NULL);
112 assert(scip->
set != NULL);
122 assert(scip != NULL);
123 assert(scip->
set != NULL);
134 assert(scip != NULL);
146 assert(scip != NULL);
189 assert(scip != NULL);
198 if( wallclock == NULL )
209 NULL, NULL, NULL, mainscip->
eventfilter, &event) );
217 if( timesincelastsync >= syncfreq )
224 NULL, NULL, NULL, mainscip->
eventfilter, &event) );
240 assert(scip != NULL);
258 assert(scip != NULL);
270 assert(scip != NULL);
284 assert(scip != NULL);
291 return MAX(memtotal, concmemtotal);
302 assert(scip != NULL);
305 assert(syncstore != NULL);
317 assert(scip != NULL);
320 assert(syncstore != NULL);
367 assert(scip != NULL);
384 assert(scip != NULL);
400 assert(source != NULL);
401 assert(target != NULL);
418 assert(scip != NULL);
434 assert(scip != NULL);
446 assert(scip != NULL);
463 assert(args != NULL);
486 assert(scip != NULL);
502 for( i = 0; i < nconcsolvers; ++i )
518 assert(idx >= 0 && idx < nconcsolvers);
547 assert(source != NULL);
548 assert(target != NULL);
553 for( i = 0; i < nheurs; ++i )
576 for( i = 0; i < nprops; ++i )
612 for( i = 0; i < npresols; ++i )
646 for( i = 0; i < nsepas; ++i )
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
enum SCIP_BoundType SCIP_BOUNDTYPE
SCIP_Longint ndualresolvelpiterations
SCIP_Longint nsbdivinglps
SCIP_Longint ninfeasleaves
SCIP_Real firstlpdualbound
internal methods for managing events
SCIP_Longint nnodelpiterations
SCIP_Longint nlpsolsfound
SCIP_Longint nsbdowndomchgs
SCIP_Longint nlpiterations
SCIP_RETCODE SCIPsetIncludeConcsolver(SCIP_SET *set, SCIP_CONCSOLVER *concsolver)
SCIP_CONCSOLVER ** concsolvers
SCIP_Longint ndeactivatednodes
SCIP_RETCODE SCIPsetClockTime(SCIP *scip, SCIP_CLOCK *clck, SCIP_Real sec)
int SCIPgetNConcurrentSolvers(SCIP *scip)
SCIP_Longint nlexdualresolvelps
SCIP_Bool concurrent_commvarbnds
datastructures for presolvers
SCIP_PROP * SCIPfindProp(SCIP *scip, const char *name)
SCIP_RETCODE SCIPeventqueueAdd(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENT **event)
SCIP_Longint nbarrierlpiterations
SCIP_Longint SCIPpropSyncGetNTightenedBnds(SCIP_PROP *prop)
SCIP_Longint ninitconssadded
static SCIP_RETCODE execConcsolver(void *args)
SCIP_CLOCK * conflictlptime
SCIP_SEPA * SCIPfindSepa(SCIP *scip, const char *name)
SCIP_Real SCIPgetConcurrentPrimalbound(SCIP *scip)
enum SCIP_Submitstatus SCIP_SUBMITSTATUS
SCIP_Real previntegralevaltime
SCIP_Real lastbranchvalue
eventhdlr for storing all global bound changes
SCIP_Longint nrootfirstlpiterations
int SCIPgetNOrigVars(SCIP *scip)
SCIP_RETCODE SCIPeventCreateSync(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
SCIP_EVENTQUEUE * eventqueue
SCIP_Longint nsbtimesiterlimhit
void SCIPeventGlobalbndDisableBoundStorage(SCIP_EVENTHDLR *eventhdlr)
SCIP_BRANCHDIR lastbranchdir
SCIP_Longint nrootstrongbranchs
SCIP_CONCURRENT * concurrent
SCIP_Longint nstrongbranchs
SCIP_Longint nrootsblpiterations
SCIP_Longint ncreatednodes
SCIP_Longint SCIPgetConcurrentNTightenedBnds(SCIP *scip)
SCIP_Real primaldualintegral
SCIP_Real SCIPinfinity(SCIP *scip)
const char * SCIPsepaGetName(SCIP_SEPA *sepa)
enum SCIP_Retcode SCIP_RETCODE
SCIP_HEUR ** SCIPgetHeurs(SCIP *scip)
datastructures for concurrent solvers
SCIP_RETCODE SCIPconcsolverSync(SCIP_CONCSOLVER *concsolver, SCIP_SET *set)
#define SCIPfreeBlockMemory(scip, ptr)
SCIP_CLOCK * barrierlptime
SCIP_EVENTHDLR * SCIPfindEventhdlr(SCIP *scip, const char *name)
SCIP_Longint lastdispnode
SCIP_Longint nnodesaboverefbound
SCIP_RETCODE SCIPfreeClock(SCIP *scip, SCIP_CLOCK **clck)
int SCIPgetNPresols(SCIP *scip)
SCIP_Real rootlpbestestimate
#define SCIPallocBlockMemory(scip, ptr)
SCIP_Real SCIPsyncstoreGetLastUpperbound(SCIP_SYNCSTORE *syncstore)
SCIP_NODE * SCIPgetRootNode(SCIP *scip)
SCIP_Longint nlpbestsolsfound
SCIP_RETCODE SCIPconcurrentSolve(SCIP *scip)
SCIP_Longint nexternalsolsfound
SCIP_Real SCIPepsilon(SCIP *scip)
SCIP_Longint nsblpiterations
SCIP_Real primalzeroittime
SCIP_RETCODE SCIPcreateWallClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_Longint SCIPgetConcurrentMemTotal(SCIP *scip)
SCIP_Longint nlexduallpiterations
SCIP_CLOCK * strongpropclock
SCIP_Longint SCIPconcsolverGetMemTotal(SCIP_CONCSOLVER *concsolver)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
SCIP_Longint nrespropcalls
SCIP_Real barrierzeroittime
void SCIPdisableConcurrentBoundStorage(SCIP *scip)
SCIP_RETCODE SCIPconcsolverGetSolvingData(SCIP_CONCSOLVER *concsolver, SCIP *scip)
SCIP_Longint npssolsfound
SCIP_PROP ** SCIPgetProps(SCIP *scip)
const char * SCIPheurGetName(SCIP_HEUR *heur)
SCIP_HEUR * SCIPfindHeur(SCIP *scip, const char *name)
void SCIPconcsolverSetTimeSinceLastSync(SCIP_CONCSOLVER *concsolver, SCIP_Real time)
SCIP_RETCODE SCIPaddConcurrentBndchg(SCIP *scip, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE bndtype)
internal methods for storing and manipulating the main problem
SCIP_Real SCIPsyncstoreGetLastLowerbound(SCIP_SYNCSTORE *syncstore)
SCIP_Bool SCIPsyncstoreIsInitialized(SCIP_SYNCSTORE *syncstore)
SCIP_EVENTFILTER * eventfilter
SCIP_Longint lastsepanode
SCIP_Longint nbestsolsfound
the type definitions for the SCIP parallel interface
SCIP_Real SCIPconcsolverGetSyncFreq(SCIP_CONCSOLVER *concsolver)
SCIP_Longint nconflictlpiterations
SCIP_CLOCK * pseudosoltime
SCIP_RETCODE SCIPincludeEventHdlrGlobalbnd(SCIP *scip)
SCIP_Real SCIPgetDualbound(SCIP *scip)
int SCIPtpiGetNewJobID(void)
SCIP_Longint nsbupdomchgs
SCIP_HEUR * firstprimalheur
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
SCIP_LPSOLSTAT lastsblpsolstats[2]
SCIP_Longint ninitlpiterations
SCIP_CLOCK * solvingtimeoverall
SCIP_RETCODE SCIPtpiCollectJobs(int jobid)
SCIP_PRESOL * SCIPfindPresol(SCIP *scip, const char *name)
SCIP_RETCODE SCIPincludeHeurSync(SCIP *scip)
void SCIPeventGlobalbndClearBoundChanges(SCIP_EVENTHDLR *eventhdlr)
SCIP_Longint nsbdivinglpiterations
SCIP_Longint nprimalresolvelpiterations
void SCIPeventGlobalbndEnableBoundStorage(SCIP_EVENTHDLR *eventhdlr)
primal heuristic that adds given solutions
SCIP_RETCODE SCIPheurSyncPassSol(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol)
SCIP_Longint nconflictlps
internal methods for global SCIP settings
SCIP_RETCODE SCIPincludePropSync(SCIP *scip)
SCIP main data structure.
SCIP_RETCODE SCIPpropSyncAddBndchg(SCIP *scip, SCIP_PROP *prop, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE bndtype)
SCIP_Longint nsbbestsolsfound
SCIP_Longint nduallpiterations
SCIP_Longint nbarrierzeroitlps
SCIP_RETCODE SCIPaddConcurrentSol(SCIP *scip, SCIP_SOL *sol)
SCIP_Longint ncreatednodesrun
SCIP_RETCODE SCIPtpiCreateJob(SCIP_JOB **job, int jobid, SCIP_RETCODE(*jobfunc)(void *args), void *jobarg)
datastructures for storing primal CIP solutions
SCIP_Longint nprimalresolvelps
SCIP_CLOCK * divinglptime
SCIP_Longint nprobboundchgs
SCIP_CLOCK * presolvingtimeoverall
the function declarations for the synchronization store
SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)
datastructures for primal heuristics
SCIP_Longint nisstoppedcalls
SCIP_BOUNDSTORE * SCIPeventGlobalbndGetBoundChanges(SCIP_EVENTHDLR *eventhdlr)
SCIP_Real lastprimalbound
SCIP_Longint ndivesetlpiterations
SCIP_Longint ndualresolvelps
SCIP_Longint ndomredsfound
SCIP_CLOCK * presolvingtime
SCIP_Longint nearlybacktracks
SCIP_Longint nlexdualresolvelpiterations
SCIP_Real SCIPgetClockTime(SCIP *scip, SCIP_CLOCK *clck)
SCIP_SYNCSTORE * SCIPgetSyncstore(SCIP *scip)
int SCIPgetConcurrentVaridx(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPupdateNodeLowerbound(SCIP *scip, SCIP_NODE *node, SCIP_Real newbound)
void SCIPenableConcurrentBoundStorage(SCIP *scip)
SCIP_Longint nrepropcutoffs
SCIP_RETCODE SCIPfreeConcurrent(SCIP *scip)
SCIP_Longint lastdivenode
const char * SCIPpresolGetName(SCIP_PRESOL *presol)
propagator for applying global bound changes that were communicated by other concurrent solvers ...
int SCIPsyncstoreGetWinner(SCIP_SYNCSTORE *syncstore)
SCIP_RETCODE SCIPcopyConcurrentSolvingStats(SCIP *source, SCIP *target)
SCIP_RETCODE SCIPincrementConcurrentTime(SCIP *scip, SCIP_Real val)
datastructures for problem statistics
helper functions for concurrent scip solvers
const char * SCIPpropGetName(SCIP_PROP *prop)
SCIP_CLOCK * lexduallptime
SCIP_Longint nnodesbeforefirst
SCIP_Longint nrootlpiterations
SCIP_CLOCK * strongbranchtime
SCIP_PRESOL ** SCIPgetPresols(SCIP *scip)
int SCIPgetNHeurs(SCIP *scip)
SCIP_RETCODE SCIPcopySolStats(SCIP_SOL *source, SCIP_SOL *target)
SCIP_Longint SCIPgetMemTotal(SCIP *scip)
datastructures for propagators
SCIP_Real SCIPgetConcurrentGap(SCIP *scip)
SCIP_Longint lastconflictnode
SCIP_Real SCIPgetConcurrentDualbound(SCIP *scip)
SCIP_RETCODE SCIPconcsolverExec(SCIP_CONCSOLVER *concsolver)
SCIP_RETCODE SCIPresetClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPtpiSumbitJob(SCIP_JOB *job, SCIP_SUBMITSTATUS *status)
SCIP_Longint nprimalzeroitlps
SCIP_CLOCK * primallptime
SCIP_RETCODE SCIPaddConcurrentSolver(SCIP *scip, SCIP_CONCSOLVER *concsolver)
void SCIPsyncstoreSetSolveIsStopped(SCIP_SYNCSTORE *syncstore, SCIP_Bool stopped)
SCIP_Longint SCIPgetConcurrentNTightenedIntBnds(SCIP *scip)
SCIP_Longint npsbestsolsfound
SCIP_Longint ncutsapplied
SCIP_Longint ndomredsfound
SCIP_Longint SCIPpropSyncGetNTightenedIntBnds(SCIP_PROP *prop)
SCIP_Longint nbestsolsfound
internal methods for problem statistics
void SCIPprobSetDualbound(SCIP_PROB *prob, SCIP_Real dualbound)
SCIP_Real firstprimaltime
SCIP_Longint nrepropboundchgs
datastructures for separators
SCIP_Real firstprimalbound
datastructures for collecting primal CIP solutions and primal informations
SCIP_Longint ntotalinternalnodes
int SCIPtpiGetThreadNum(void)
SCIP_CLOCK * reoptupdatetime
SCIP_Bool SCIPIsConcurrentSolNew(SCIP *scip, SCIP_SOL *sol)
int SCIPvarGetIndex(SCIP_VAR *var)
SCIP_Longint nactivatednodes
SCIP_Longint nprimallpiterations
SCIP_BOUNDSTORE * SCIPgetConcurrentGlobalBoundChanges(SCIP *scip)
SCIP_Longint nsbsolsfound
SCIP_EVENTHDLR * eventglobalbnd
SCIP_CLOCK * nodeactivationtime
SCIP_Longint ndualzeroitlps
SCIP_SEPA ** SCIPgetSepas(SCIP *scip)
SCIP_Longint ninternalnodes
SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
int SCIPgetNSepas(SCIP *scip)
SCIP_CONCSOLVER ** SCIPgetConcurrentSolvers(SCIP *scip)
#define SCIP_CALL_ABORT(x)
SCIP_Longint nprobholechgs
int SCIPsyncstoreGetNSolvers(SCIP_SYNCSTORE *syncstore)
SCIP_Longint nlimsolsfound
SCIP_RETCODE SCIPstartClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_CONCSOLVER * concsolver
datastructures for global SCIP settings
int SCIPsolGetIndex(SCIP_SOL *sol)
int SCIPgetNProps(SCIP *scip)
SCIP_RETCODE SCIPsynchronize(SCIP *scip)
SCIP_Longint ndelayedcutoffs
SCIP_Real SCIPcomputeGap(SCIP_Real eps, SCIP_Real inf, SCIP_Real primalbound, SCIP_Real dualbound)
SCIP_Longint totaldivesetdepth
SCIP_RETCODE SCIPcreateConcurrent(SCIP *scip, SCIP_CONCSOLVER *concsolver, int *varperm)
SCIP_Longint ndivinglpiterations