78 scip->concurrent->concsolver = concsolver;
80 scip->concurrent->solidx =
scip->stat->solindex;
81 scip->stat->subscipdepth = 0;
85 scip->concurrent->dettime = 0.0;
104 scip->concurrent->eventglobalbnd =
NULL;
107 if(
scip->set->concurrent_commvarbnds )
124 return scip->set->nconcsolvers;
135 return scip->set->concsolvers;
165 if(
scip->concurrent->mainscip !=
scip )
169 scip->concurrent->mainscip->stat->detertimecnt +=
scip->stat->detertimecnt;
170 scip->stat->detertimecnt = 0;
176 if(
scip->concurrent->wallclock !=
NULL )
205 wallclock =
scip->concurrent->wallclock;
206 mainscip =
scip->concurrent->mainscip;
208 if( wallclock ==
NULL )
210 scip->concurrent->dettime += val;
212 if(
scip->concurrent->dettime >= syncfreq )
216 scip->concurrent->dettime = 0.0;
224 SCIP_Real timesincelastsync;
227 if( timesincelastsync >= syncfreq )
255 scip->concurrent->mainscip->concurrent->solidx =
scip->concurrent->mainscip->stat->solindex;
257 if(
scip->concurrent->eventglobalbnd !=
NULL )
271 if(
scip->concurrent->eventglobalbnd !=
NULL )
283 if(
scip->concurrent->eventglobalbnd !=
NULL )
459 if(
scip->concurrent->eventglobalbnd !=
NULL )
499 concsolvers =
scip->set->concsolvers;
500 nconcsolvers =
scip->set->nconcsolvers;
512 for(
i = 0;
i < nconcsolvers; ++
i )
528 assert(idx >= 0 && idx < nconcsolvers);
567 for(
i = 0;
i < nheurs; ++
i )
590 for(
i = 0;
i < nprops; ++
i )
626 for(
i = 0;
i < npresols; ++
i )
660 for(
i = 0;
i < nsepas; ++
i )
689 target->primal->nsolsfound =
source->primal->nsolsfound;
690 target->primal->nbestsolsfound =
source->primal->nbestsolsfound;
691 target->primal->nlimsolsfound =
source->primal->nlimsolsfound;
701 target->stat->nlpiterations =
source->stat->nlpiterations;
702 target->stat->nrootlpiterations =
source->stat->nrootlpiterations;
703 target->stat->nrootfirstlpiterations =
source->stat->nrootfirstlpiterations;
704 target->stat->nprimallpiterations =
source->stat->nprimallpiterations;
705 target->stat->nduallpiterations =
source->stat->nduallpiterations;
706 target->stat->nlexduallpiterations =
source->stat->nlexduallpiterations;
707 target->stat->nbarrierlpiterations =
source->stat->nbarrierlpiterations;
708 target->stat->nprimalresolvelpiterations =
source->stat->nprimalresolvelpiterations;
709 target->stat->ndualresolvelpiterations =
source->stat->ndualresolvelpiterations;
710 target->stat->nlexdualresolvelpiterations =
source->stat->nlexdualresolvelpiterations;
711 target->stat->nnodelpiterations =
source->stat->nnodelpiterations;
712 target->stat->ninitlpiterations =
source->stat->ninitlpiterations;
713 target->stat->ndivinglpiterations =
source->stat->ndivinglpiterations;
714 target->stat->ndivesetlpiterations =
source->stat->ndivesetlpiterations;
715 target->stat->nsbdivinglpiterations =
source->stat->nsbdivinglpiterations;
716 target->stat->nsblpiterations =
source->stat->nsblpiterations;
717 target->stat->nrootsblpiterations =
source->stat->nrootsblpiterations;
718 target->stat->nconflictlpiterations =
source->stat->nconflictlpiterations;
720 target->stat->ninternalnodes =
source->stat->ninternalnodes;
723 target->stat->ninfeasleaves =
source->stat->ninfeasleaves;
725 target->stat->ntotalinternalnodes =
source->stat->ntotalinternalnodes;
726 target->stat->ncreatednodes =
source->stat->ncreatednodes;
727 target->stat->ncreatednodesrun =
source->stat->ncreatednodesrun;
728 target->stat->nactivatednodes =
source->stat->nactivatednodes;
729 target->stat->ndeactivatednodes =
source->stat->ndeactivatednodes;
730 target->stat->nearlybacktracks =
source->stat->nearlybacktracks;
731 target->stat->nnodesaboverefbound =
source->stat->nnodesaboverefbound;
733 target->stat->ndelayedcutoffs =
source->stat->ndelayedcutoffs;
735 target->stat->nrepropboundchgs =
source->stat->nrepropboundchgs;
736 target->stat->nrepropcutoffs =
source->stat->nrepropcutoffs;
737 target->stat->nlpsolsfound =
source->stat->nlpsolsfound;
738 target->stat->npssolsfound =
source->stat->npssolsfound;
739 target->stat->nsbsolsfound =
source->stat->nsbsolsfound;
740 target->stat->nlpbestsolsfound =
source->stat->nlpbestsolsfound;
741 target->stat->npsbestsolsfound =
source->stat->npsbestsolsfound;
742 target->stat->nsbbestsolsfound =
source->stat->nsbbestsolsfound;
743 target->stat->nexternalsolsfound =
source->stat->nexternalsolsfound;
744 target->stat->lastdispnode =
source->stat->lastdispnode;
745 target->stat->lastdivenode =
source->stat->lastdivenode;
746 target->stat->lastconflictnode =
source->stat->lastconflictnode;
751 target->stat->nprobboundchgs =
source->stat->nprobboundchgs;
752 target->stat->nprobholechgs =
source->stat->nprobholechgs;
753 target->stat->nsbdowndomchgs =
source->stat->nsbdowndomchgs;
754 target->stat->nsbupdomchgs =
source->stat->nsbupdomchgs;
755 target->stat->nsbtimesiterlimhit =
source->stat->nsbtimesiterlimhit;
756 target->stat->nnodesbeforefirst =
source->stat->nnodesbeforefirst;
757 target->stat->ninitconssadded =
source->stat->ninitconssadded;
762 target->stat->firstprimaltime =
source->stat->firstprimaltime;
765 target->stat->primalzeroittime =
source->stat->primalzeroittime;
766 target->stat->dualzeroittime =
source->stat->dualzeroittime;
767 target->stat->barrierzeroittime =
source->stat->barrierzeroittime;
771 target->stat->lastbranchvalue =
source->stat->lastbranchvalue;
772 target->stat->dualrefintegral =
source->stat->dualrefintegral;
773 target->stat->primalrefintegral =
source->stat->primalrefintegral;
774 target->stat->primaldualintegral =
source->stat->primaldualintegral;
776 target->stat->previousdualrefgap =
source->stat->previousdualrefgap;
777 target->stat->previousprimalrefgap =
source->stat->previousprimalrefgap;
778 target->stat->previntegralevaltime =
source->stat->previntegralevaltime;
783 target->stat->rootlpbestestimate =
source->stat->rootlpbestestimate;
784 target->stat->referencebound =
source->stat->referencebound;
859 heur =
source->stat->firstprimalheur;
865 target->stat->lastbranchdir =
source->stat->lastbranchdir;
866 target->stat->lastsblpsolstats[0] =
source->stat->lastsblpsolstats[0];
867 target->stat->lastsblpsolstats[1] =
source->stat->lastsblpsolstats[1];
873 target->stat->nprimalzeroitlps =
source->stat->nprimalzeroitlps;
875 target->stat->ndualzeroitlps =
source->stat->ndualzeroitlps;
878 target->stat->nbarrierzeroitlps =
source->stat->nbarrierzeroitlps;
879 target->stat->nprimalresolvelps =
source->stat->nprimalresolvelps;
880 target->stat->ndualresolvelps =
source->stat->ndualresolvelps;
881 target->stat->nlexdualresolvelps =
source->stat->nlexdualresolvelps;
886 target->stat->nsbdivinglps =
source->stat->nsbdivinglps;
887 target->stat->nstrongbranchs =
source->stat->nstrongbranchs;
888 target->stat->nrootstrongbranchs =
source->stat->nrootstrongbranchs;
889 target->stat->nconflictlps =
source->stat->nconflictlps;
891 target->stat->nisstoppedcalls =
source->stat->nisstoppedcalls;
892 target->stat->totaldivesetdepth =
source->stat->totaldivesetdepth;
893 target->stat->ndivesetcalls =
source->stat->ndivesetcalls;
895 target->stat->nconfrestarts =
source->stat->nconfrestarts;
896 target->stat->nrootboundchgs =
source->stat->nrootboundchgs;
897 target->stat->nrootboundchgsrun =
source->stat->nrootboundchgsrun;
898 target->stat->nrootintfixings =
source->stat->nrootintfixings;
899 target->stat->nrootintfixingsrun =
source->stat->nrootintfixingsrun;
900 target->stat->prevrunnvars =
source->stat->prevrunnvars;
901 target->stat->npricerounds =
source->stat->npricerounds;
904 target->stat->maxtotaldepth =
source->stat->maxtotaldepth;
906 target->stat->npresolrounds +=
source->stat->npresolrounds;
907 target->stat->npresolroundsfast +=
source->stat->npresolroundsfast;
908 target->stat->npresolroundsmed +=
source->stat->npresolroundsmed;
909 target->stat->npresolroundsext +=
source->stat->npresolroundsext;
910 target->stat->npresolfixedvars +=
source->stat->npresolfixedvars;
911 target->stat->npresolaggrvars +=
source->stat->npresolaggrvars;
912 target->stat->npresolchgvartypes +=
source->stat->npresolchgvartypes;
913 target->stat->npresolchgbds +=
source->stat->npresolchgbds;
914 target->stat->npresoladdholes +=
source->stat->npresoladdholes;
915 target->stat->npresoldelconss +=
source->stat->npresoldelconss;
916 target->stat->npresoladdconss +=
source->stat->npresoladdconss;
917 target->stat->npresolupgdconss +=
source->stat->npresolupgdconss;
918 target->stat->npresolchgcoefs +=
source->stat->npresolchgcoefs;
919 target->stat->npresolchgsides +=
source->stat->npresolchgsides;
920 target->stat->nrunsbeforefirst =
source->stat->nrunsbeforefirst;
921 target->stat->firstprimaldepth =
source->stat->firstprimaldepth;
void SCIPconcsolverSetTimeSinceLastSync(SCIP_CONCSOLVER *concsolver, SCIP_Real time)
SCIP_RETCODE SCIPconcsolverExec(SCIP_CONCSOLVER *concsolver)
SCIP_Real SCIPconcsolverGetSyncFreq(SCIP_CONCSOLVER *concsolver)
SCIP_RETCODE SCIPconcsolverGetSolvingData(SCIP_CONCSOLVER *concsolver, SCIP *scip)
SCIP_RETCODE SCIPconcsolverSync(SCIP_CONCSOLVER *concsolver, SCIP_SET *set)
SCIP_Longint SCIPconcsolverGetMemTotal(SCIP_CONCSOLVER *concsolver)
datastructures for concurrent solvers
SCIP_Real SCIPgetConcurrentDualbound(SCIP *scip)
SCIP_RETCODE SCIPconcurrentSolve(SCIP *scip)
SCIP_Real SCIPgetConcurrentPrimalbound(SCIP *scip)
SCIP_RETCODE SCIPsynchronize(SCIP *scip)
SCIP_RETCODE SCIPincrementConcurrentTime(SCIP *scip, SCIP_Real val)
int SCIPgetConcurrentVaridx(SCIP *scip, SCIP_VAR *var)
SCIP_RETCODE SCIPfreeConcurrent(SCIP *scip)
SCIP_RETCODE SCIPaddConcurrentBndchg(SCIP *scip, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE bndtype)
SCIP_RETCODE SCIPcopySolStats(SCIP_SOL *source, SCIP_SOL *target)
SCIP_Longint SCIPgetConcurrentMemTotal(SCIP *scip)
SCIP_RETCODE SCIPcreateConcurrent(SCIP *scip, SCIP_CONCSOLVER *concsolver, int *varperm)
SCIP_BOUNDSTORE * SCIPgetConcurrentGlobalBoundChanges(SCIP *scip)
SCIP_RETCODE SCIPaddConcurrentSolver(SCIP *scip, SCIP_CONCSOLVER *concsolver)
static SCIP_RETCODE execConcsolver(void *args)
SCIP_CONCSOLVER ** SCIPgetConcurrentSolvers(SCIP *scip)
SCIP_Bool SCIPIsConcurrentSolNew(SCIP *scip, SCIP_SOL *sol)
SCIP_Longint SCIPgetConcurrentNTightenedBnds(SCIP *scip)
void SCIPenableConcurrentBoundStorage(SCIP *scip)
int SCIPgetNConcurrentSolvers(SCIP *scip)
SCIP_RETCODE SCIPcopyConcurrentSolvingStats(SCIP *source, SCIP *target)
SCIP_RETCODE SCIPaddConcurrentSol(SCIP *scip, SCIP_SOL *sol)
SCIP_Real SCIPgetConcurrentGap(SCIP *scip)
void SCIPdisableConcurrentBoundStorage(SCIP *scip)
SCIP_Longint SCIPgetConcurrentNTightenedIntBnds(SCIP *scip)
helper functions for concurrent scip solvers
#define SCIP_CALL_ABORT(x)
wrappers for OpenMP defines
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_RETCODE SCIPeventCreateSync(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
internal methods for managing events
void SCIPeventGlobalbndClearBoundChanges(SCIP_EVENTHDLR *eventhdlr)
SCIP_RETCODE SCIPincludeEventHdlrGlobalbnd(SCIP *scip)
void SCIPeventGlobalbndEnableBoundStorage(SCIP_EVENTHDLR *eventhdlr)
SCIP_BOUNDSTORE * SCIPeventGlobalbndGetBoundChanges(SCIP_EVENTHDLR *eventhdlr)
void SCIPeventGlobalbndDisableBoundStorage(SCIP_EVENTHDLR *eventhdlr)
eventhdlr for storing all global bound changes
int SCIPgetNOrigVars(SCIP *scip)
SCIP_RETCODE SCIPupdateNodeLowerbound(SCIP *scip, SCIP_NODE *node, SCIP_Real newbound)
SCIP_Real SCIPcomputeGap(SCIP_Real eps, SCIP_Real inf, SCIP_Real primalbound, SCIP_Real dualbound)
SCIP_RETCODE SCIPheurSyncPassSol(SCIP *scip, SCIP_HEUR *heur, SCIP_SOL *sol)
SCIP_Longint SCIPpropSyncGetNTightenedBnds(SCIP_PROP *prop)
SCIP_RETCODE SCIPpropSyncAddBndchg(SCIP *scip, SCIP_PROP *prop, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE bndtype)
SCIP_Longint SCIPpropSyncGetNTightenedIntBnds(SCIP_PROP *prop)
SCIP_RETCODE SCIPincludeHeurSync(SCIP *scip)
SCIP_RETCODE SCIPincludePropSync(SCIP *scip)
SCIP_EVENTHDLR * SCIPfindEventhdlr(SCIP *scip, const char *name)
SCIP_HEUR ** SCIPgetHeurs(SCIP *scip)
int SCIPgetNHeurs(SCIP *scip)
SCIP_HEUR * SCIPfindHeur(SCIP *scip, const char *name)
const char * SCIPheurGetName(SCIP_HEUR *heur)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
SCIP_Longint SCIPgetMemTotal(SCIP *scip)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
SCIP_SYNCSTORE * SCIPgetSyncstore(SCIP *scip)
SCIP_PRESOL ** SCIPgetPresols(SCIP *scip)
SCIP_PRESOL * SCIPfindPresol(SCIP *scip, const char *name)
int SCIPgetNPresols(SCIP *scip)
const char * SCIPpresolGetName(SCIP_PRESOL *presol)
SCIP_PROP * SCIPfindProp(SCIP *scip, const char *name)
int SCIPgetNProps(SCIP *scip)
const char * SCIPpropGetName(SCIP_PROP *prop)
SCIP_PROP ** SCIPgetProps(SCIP *scip)
int SCIPgetNSepas(SCIP *scip)
const char * SCIPsepaGetName(SCIP_SEPA *sepa)
SCIP_SEPA * SCIPfindSepa(SCIP *scip, const char *name)
SCIP_SEPA ** SCIPgetSepas(SCIP *scip)
int SCIPsolGetIndex(SCIP_SOL *sol)
SCIP_Real SCIPgetDualbound(SCIP *scip)
SCIP_RETCODE SCIPresetClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPfreeClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_RETCODE SCIPcreateWallClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_Real SCIPgetClockTime(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPstartClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPsetClockTime(SCIP *scip, SCIP_CLOCK *clck, SCIP_Real sec)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Real SCIPepsilon(SCIP *scip)
SCIP_NODE * SCIPgetRootNode(SCIP *scip)
int SCIPvarGetIndex(SCIP_VAR *var)
SCIP_Bool SCIPvarIsOriginal(SCIP_VAR *var)
assert(minobj< SCIPgetCutoffbound(scip))
primal heuristic that adds given solutions
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
void SCIPprobSetDualbound(SCIP_PROB *prob, SCIP_Real dualbound)
internal methods for storing and manipulating the main problem
propagator for applying global bound changes that were communicated by other concurrent solvers
SCIP_RETCODE SCIPsetIncludeConcsolver(SCIP_SET *set, SCIP_CONCSOLVER *concsolver)
internal methods for global SCIP settings
internal methods for problem statistics
SCIP_Longint nbestsolsfound
SCIP_Longint ndomredsfound
SCIP_Longint nrespropcalls
SCIP_Longint ncutsaddedviapool
SCIP_Longint ndomredsfound
SCIP_Longint lastsepanode
SCIP_Longint ncutsappliedviapool
SCIP_Longint ncutsapplieddirect
SCIP_Longint ncutsaddeddirect
SCIP_EVENTFILTER * eventfilter
SCIP_EVENTQUEUE * eventqueue
datastructures for primal heuristics
datastructures for presolvers
datastructures for collecting primal CIP solutions and primal informations
datastructures for propagators
SCIP main data structure.
datastructures for separators
datastructures for global SCIP settings
datastructures for storing primal CIP solutions
datastructures for problem statistics
SCIP_Real SCIPsyncstoreGetLastUpperbound(SCIP_SYNCSTORE *syncstore)
SCIP_Real SCIPsyncstoreGetLastLowerbound(SCIP_SYNCSTORE *syncstore)
int SCIPsyncstoreGetWinner(SCIP_SYNCSTORE *syncstore)
void SCIPsyncstoreSetSolveIsStopped(SCIP_SYNCSTORE *syncstore, SCIP_Bool stopped)
SCIP_Bool SCIPsyncstoreIsInitialized(SCIP_SYNCSTORE *syncstore)
int SCIPsyncstoreGetNSolvers(SCIP_SYNCSTORE *syncstore)
the function declarations for the synchronization store
the type definitions for the SCIP parallel interface
SCIP_RETCODE SCIPtpiCreateJob(SCIP_JOB **job, int jobid, SCIP_RETCODE(*jobfunc)(void *args), void *jobarg)
SCIP_RETCODE SCIPtpiSubmitJob(SCIP_JOB *job, SCIP_SUBMITSTATUS *status)
SCIP_RETCODE SCIPtpiCollectJobs(int jobid)
int SCIPtpiGetThreadNum(void)
int SCIPtpiGetNewJobID(void)
enum SCIP_BoundType SCIP_BOUNDTYPE
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_PARA_DETERMINISTIC
enum SCIP_Submitstatus SCIP_SUBMITSTATUS