77 scip->concurrent->concsolver = concsolver;
79 scip->concurrent->solidx =
scip->stat->solindex;
80 scip->stat->subscipdepth = 0;
84 scip->concurrent->dettime = 0.0;
103 scip->concurrent->eventglobalbnd =
NULL;
106 if(
scip->set->concurrent_commvarbnds )
123 return scip->set->nconcsolvers;
134 return scip->set->concsolvers;
164 if(
scip->concurrent->mainscip !=
scip )
168 scip->concurrent->mainscip->stat->detertimecnt +=
scip->stat->detertimecnt;
169 scip->stat->detertimecnt = 0;
175 if(
scip->concurrent->wallclock !=
NULL )
204 wallclock =
scip->concurrent->wallclock;
205 mainscip =
scip->concurrent->mainscip;
207 if( wallclock ==
NULL )
209 scip->concurrent->dettime += val;
211 if(
scip->concurrent->dettime >= syncfreq )
215 scip->concurrent->dettime = 0.0;
223 SCIP_Real timesincelastsync;
226 if( timesincelastsync >= syncfreq )
254 scip->concurrent->mainscip->concurrent->solidx =
scip->concurrent->mainscip->stat->solindex;
256 if(
scip->concurrent->eventglobalbnd !=
NULL )
270 if(
scip->concurrent->eventglobalbnd !=
NULL )
282 if(
scip->concurrent->eventglobalbnd !=
NULL )
458 if(
scip->concurrent->eventglobalbnd !=
NULL )
498 concsolvers =
scip->set->concsolvers;
499 nconcsolvers =
scip->set->nconcsolvers;
511 for(
i = 0;
i < nconcsolvers; ++
i )
527 assert(idx >= 0 && idx < nconcsolvers);
566 for(
i = 0;
i < nheurs; ++
i )
589 for(
i = 0;
i < nprops; ++
i )
625 for(
i = 0;
i < npresols; ++
i )
659 for(
i = 0;
i < nsepas; ++
i )
688 target->primal->nsolsfound =
source->primal->nsolsfound;
689 target->primal->nbestsolsfound =
source->primal->nbestsolsfound;
690 target->primal->nlimsolsfound =
source->primal->nlimsolsfound;
700 target->stat->nlpiterations =
source->stat->nlpiterations;
701 target->stat->nrootlpiterations =
source->stat->nrootlpiterations;
702 target->stat->nrootfirstlpiterations =
source->stat->nrootfirstlpiterations;
703 target->stat->nprimallpiterations =
source->stat->nprimallpiterations;
704 target->stat->nduallpiterations =
source->stat->nduallpiterations;
705 target->stat->nlexduallpiterations =
source->stat->nlexduallpiterations;
706 target->stat->nbarrierlpiterations =
source->stat->nbarrierlpiterations;
707 target->stat->nprimalresolvelpiterations =
source->stat->nprimalresolvelpiterations;
708 target->stat->ndualresolvelpiterations =
source->stat->ndualresolvelpiterations;
709 target->stat->nlexdualresolvelpiterations =
source->stat->nlexdualresolvelpiterations;
710 target->stat->nnodelpiterations =
source->stat->nnodelpiterations;
711 target->stat->ninitlpiterations =
source->stat->ninitlpiterations;
712 target->stat->ndivinglpiterations =
source->stat->ndivinglpiterations;
713 target->stat->ndivesetlpiterations =
source->stat->ndivesetlpiterations;
714 target->stat->nsbdivinglpiterations =
source->stat->nsbdivinglpiterations;
715 target->stat->nsblpiterations =
source->stat->nsblpiterations;
716 target->stat->nrootsblpiterations =
source->stat->nrootsblpiterations;
717 target->stat->nconflictlpiterations =
source->stat->nconflictlpiterations;
719 target->stat->ninternalnodes =
source->stat->ninternalnodes;
722 target->stat->ninfeasleaves =
source->stat->ninfeasleaves;
724 target->stat->ntotalinternalnodes =
source->stat->ntotalinternalnodes;
725 target->stat->ncreatednodes =
source->stat->ncreatednodes;
726 target->stat->ncreatednodesrun =
source->stat->ncreatednodesrun;
727 target->stat->nactivatednodes =
source->stat->nactivatednodes;
728 target->stat->ndeactivatednodes =
source->stat->ndeactivatednodes;
729 target->stat->nearlybacktracks =
source->stat->nearlybacktracks;
730 target->stat->nnodesaboverefbound =
source->stat->nnodesaboverefbound;
732 target->stat->ndelayedcutoffs =
source->stat->ndelayedcutoffs;
734 target->stat->nrepropboundchgs =
source->stat->nrepropboundchgs;
735 target->stat->nrepropcutoffs =
source->stat->nrepropcutoffs;
736 target->stat->nlpsolsfound =
source->stat->nlpsolsfound;
737 target->stat->npssolsfound =
source->stat->npssolsfound;
738 target->stat->nsbsolsfound =
source->stat->nsbsolsfound;
739 target->stat->nlpbestsolsfound =
source->stat->nlpbestsolsfound;
740 target->stat->npsbestsolsfound =
source->stat->npsbestsolsfound;
741 target->stat->nsbbestsolsfound =
source->stat->nsbbestsolsfound;
742 target->stat->nexternalsolsfound =
source->stat->nexternalsolsfound;
743 target->stat->lastdispnode =
source->stat->lastdispnode;
744 target->stat->lastdivenode =
source->stat->lastdivenode;
745 target->stat->lastconflictnode =
source->stat->lastconflictnode;
750 target->stat->nprobboundchgs =
source->stat->nprobboundchgs;
751 target->stat->nprobholechgs =
source->stat->nprobholechgs;
752 target->stat->nsbdowndomchgs =
source->stat->nsbdowndomchgs;
753 target->stat->nsbupdomchgs =
source->stat->nsbupdomchgs;
754 target->stat->nsbtimesiterlimhit =
source->stat->nsbtimesiterlimhit;
755 target->stat->nnodesbeforefirst =
source->stat->nnodesbeforefirst;
756 target->stat->ninitconssadded =
source->stat->ninitconssadded;
761 target->stat->firstprimaltime =
source->stat->firstprimaltime;
764 target->stat->primalzeroittime =
source->stat->primalzeroittime;
765 target->stat->dualzeroittime =
source->stat->dualzeroittime;
766 target->stat->barrierzeroittime =
source->stat->barrierzeroittime;
770 target->stat->lastbranchvalue =
source->stat->lastbranchvalue;
771 target->stat->dualrefintegral =
source->stat->dualrefintegral;
772 target->stat->primalrefintegral =
source->stat->primalrefintegral;
773 target->stat->primaldualintegral =
source->stat->primaldualintegral;
775 target->stat->previousdualrefgap =
source->stat->previousdualrefgap;
776 target->stat->previousprimalrefgap =
source->stat->previousprimalrefgap;
777 target->stat->previntegralevaltime =
source->stat->previntegralevaltime;
782 target->stat->rootlpbestestimate =
source->stat->rootlpbestestimate;
783 target->stat->referencebound =
source->stat->referencebound;
858 heur =
source->stat->firstprimalheur;
864 target->stat->lastbranchdir =
source->stat->lastbranchdir;
865 target->stat->lastsblpsolstats[0] =
source->stat->lastsblpsolstats[0];
866 target->stat->lastsblpsolstats[1] =
source->stat->lastsblpsolstats[1];
872 target->stat->nprimalzeroitlps =
source->stat->nprimalzeroitlps;
874 target->stat->ndualzeroitlps =
source->stat->ndualzeroitlps;
877 target->stat->nbarrierzeroitlps =
source->stat->nbarrierzeroitlps;
878 target->stat->nprimalresolvelps =
source->stat->nprimalresolvelps;
879 target->stat->ndualresolvelps =
source->stat->ndualresolvelps;
880 target->stat->nlexdualresolvelps =
source->stat->nlexdualresolvelps;
885 target->stat->nsbdivinglps =
source->stat->nsbdivinglps;
886 target->stat->nstrongbranchs =
source->stat->nstrongbranchs;
887 target->stat->nrootstrongbranchs =
source->stat->nrootstrongbranchs;
888 target->stat->nconflictlps =
source->stat->nconflictlps;
890 target->stat->nisstoppedcalls =
source->stat->nisstoppedcalls;
891 target->stat->totaldivesetdepth =
source->stat->totaldivesetdepth;
892 target->stat->ndivesetcalls =
source->stat->ndivesetcalls;
894 target->stat->nconfrestarts =
source->stat->nconfrestarts;
895 target->stat->nrootboundchgs =
source->stat->nrootboundchgs;
896 target->stat->nrootboundchgsrun =
source->stat->nrootboundchgsrun;
897 target->stat->nrootintfixings =
source->stat->nrootintfixings;
898 target->stat->nrootintfixingsrun =
source->stat->nrootintfixingsrun;
899 target->stat->prevrunnvars =
source->stat->prevrunnvars;
900 target->stat->npricerounds =
source->stat->npricerounds;
903 target->stat->maxtotaldepth =
source->stat->maxtotaldepth;
905 target->stat->npresolrounds +=
source->stat->npresolrounds;
906 target->stat->npresolroundsfast +=
source->stat->npresolroundsfast;
907 target->stat->npresolroundsmed +=
source->stat->npresolroundsmed;
908 target->stat->npresolroundsext +=
source->stat->npresolroundsext;
909 target->stat->npresolfixedvars +=
source->stat->npresolfixedvars;
910 target->stat->npresolaggrvars +=
source->stat->npresolaggrvars;
911 target->stat->npresolchgvartypes +=
source->stat->npresolchgvartypes;
912 target->stat->npresolchgbds +=
source->stat->npresolchgbds;
913 target->stat->npresoladdholes +=
source->stat->npresoladdholes;
914 target->stat->npresoldelconss +=
source->stat->npresoldelconss;
915 target->stat->npresoladdconss +=
source->stat->npresoladdconss;
916 target->stat->npresolupgdconss +=
source->stat->npresolupgdconss;
917 target->stat->npresolchgcoefs +=
source->stat->npresolchgcoefs;
918 target->stat->npresolchgsides +=
source->stat->npresolchgsides;
919 target->stat->nrunsbeforefirst =
source->stat->nrunsbeforefirst;
920 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)
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 SCIPtpiCollectJobs(int jobid)
SCIP_RETCODE SCIPtpiSumbitJob(SCIP_JOB *job, SCIP_SUBMITSTATUS *status)
int SCIPtpiGetThreadNum(void)
int SCIPtpiGetNewJobID(void)
enum SCIP_BoundType SCIP_BOUNDTYPE
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_PARA_DETERMINISTIC
enum SCIP_Submitstatus SCIP_SUBMITSTATUS