SCIP Doxygen Documentation
 
Loading...
Searching...
No Matches
concurrent.h File Reference

Detailed Description

helper functions for concurrent scip solvers

Author
Leona Gottwald

Definition in file concurrent.h.

#include "scip/type_concurrent.h"
#include "scip/type_scip.h"
#include "scip/type_concsolver.h"
#include "scip/type_sol.h"
#include "scip/type_var.h"
#include "scip/type_syncstore.h"
#include "scip/type_retcode.h"
#include "scip/def.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPcreateConcurrent (SCIP *scip, SCIP_CONCSOLVER *concsolver, int *varperm)
 
int SCIPgetNConcurrentSolvers (SCIP *scip)
 
SCIP_CONCSOLVER ** SCIPgetConcurrentSolvers (SCIP *scip)
 
SCIP_RETCODE SCIPaddConcurrentSolver (SCIP *scip, SCIP_CONCSOLVER *concsolver)
 
SCIP_RETCODE SCIPfreeConcurrent (SCIP *scip)
 
SCIP_RETCODE SCIPincrementConcurrentTime (SCIP *scip, SCIP_Real val)
 
SCIP_RETCODE SCIPsynchronize (SCIP *scip)
 
SCIP_RETCODE SCIPaddConcurrentSol (SCIP *scip, SCIP_SOL *sol)
 
SCIP_RETCODE SCIPaddConcurrentBndchg (SCIP *scip, SCIP_VAR *var, SCIP_Real val, SCIP_BOUNDTYPE bndtype)
 
SCIP_RETCODE SCIPcopySolStats (SCIP_SOL *source, SCIP_SOL *target)
 
SCIP_RETCODE SCIPcopyConcurrentSolvingStats (SCIP *source, SCIP *target)
 
int SCIPgetConcurrentVaridx (SCIP *scip, SCIP_VAR *var)
 
SCIP_Bool SCIPIsConcurrentSolNew (SCIP *scip, SCIP_SOL *sol)
 
SCIP_BOUNDSTORESCIPgetConcurrentGlobalBoundChanges (SCIP *scip)
 
SCIP_RETCODE SCIPconcurrentSolve (SCIP *scip)
 
void SCIPdisableConcurrentBoundStorage (SCIP *scip)
 
void SCIPenableConcurrentBoundStorage (SCIP *scip)
 
SCIP_Longint SCIPgetConcurrentMemTotal (SCIP *scip)
 
SCIP_Real SCIPgetConcurrentDualbound (SCIP *scip)
 
SCIP_Real SCIPgetConcurrentPrimalbound (SCIP *scip)
 
SCIP_Real SCIPgetConcurrentGap (SCIP *scip)
 
SCIP_Longint SCIPgetConcurrentNTightenedBnds (SCIP *scip)
 
SCIP_Longint SCIPgetConcurrentNTightenedIntBnds (SCIP *scip)
 

Function Documentation

◆ SCIPcreateConcurrent()

SCIP_RETCODE SCIPcreateConcurrent ( SCIP * scip,
SCIP_CONCSOLVER * concsolver,
int * varperm )

create concurrent data

Parameters
scipSCIP datastructure
concsolverconcurrent solver of given SCIP instance
varpermpermutation of variables for communication

Definition at line 67 of file concurrent.c.

References assert(), NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIP_PARA_DETERMINISTIC, SCIPallocBlockMemory, SCIPcreateWallClock(), SCIPduplicateBlockMemoryArray, SCIPfindEventhdlr(), SCIPfindHeur(), SCIPfindProp(), SCIPgetNOrigVars(), SCIPincludeEventHdlrGlobalbnd(), SCIPincludeHeurSync(), SCIPincludePropSync(), and SCIPstartClock().

Referenced by initConcsolver().

◆ SCIPgetNConcurrentSolvers()

int SCIPgetNConcurrentSolvers ( SCIP * scip)

get number of initialized concurrent solvers

Parameters
scipSCIP datastructure

Definition at line 126 of file concurrent.c.

References assert(), and NULL.

Referenced by SCIPconcsolverCreateInstance(), SCIPprintConcsolverStatistics(), SCIPsolveConcurrent(), SCIPsolveIsStopped(), and SCIPsyncstoreInit().

◆ SCIPgetConcurrentSolvers()

SCIP_CONCSOLVER ** SCIPgetConcurrentSolvers ( SCIP * scip)

gets the concurrent solvers

gets the initialized concurrent solvers

Parameters
scipSCIP datastructure

Definition at line 137 of file concurrent.c.

References assert(), and NULL.

Referenced by SCIPprintConcsolverStatistics().

◆ SCIPaddConcurrentSolver()

SCIP_RETCODE SCIPaddConcurrentSolver ( SCIP * scip,
SCIP_CONCSOLVER * concsolver )

adds a concurrent solver

adds an initialized concurrent solver

Parameters
scipSCIP datastructure
concsolverconcurrent solver of given SCIP instance

Definition at line 148 of file concurrent.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPsetIncludeConcsolver().

Referenced by SCIPconcsolverCreateInstance().

◆ SCIPfreeConcurrent()

SCIP_RETCODE SCIPfreeConcurrent ( SCIP * scip)

frees concurrent data

Parameters
scipSCIP datastructure

Definition at line 161 of file concurrent.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPfreeClock(), and SCIPgetNOrigVars().

Referenced by SCIPfreeProb(), and SCIPsolveConcurrent().

◆ SCIPincrementConcurrentTime()

SCIP_RETCODE SCIPincrementConcurrentTime ( SCIP * scip,
SCIP_Real val )

increments the time counter for synchronization

Parameters
scipSCIP datastructure
valvalue by which the time counter for synchronization is incremented

Definition at line 199 of file concurrent.c.

References assert(), Scip::eventfilter, Scip::eventqueue, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPblkmem(), SCIPconcsolverGetSyncFreq(), SCIPconcsolverSetTimeSinceLastSync(), SCIPeventCreateSync(), SCIPeventqueueAdd(), SCIPgetClockTime(), SCIPresetClock(), SCIPstartClock(), and Scip::set.

◆ SCIPsynchronize()

SCIP_RETCODE SCIPsynchronize ( SCIP * scip)

synchronize with other concurrent solvers

Parameters
scipSCIP datastructure

Definition at line 255 of file concurrent.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconcsolverSync(), and SCIPeventGlobalbndClearBoundChanges().

Referenced by SCIP_DECL_EVENTEXEC().

◆ SCIPaddConcurrentSol()

SCIP_RETCODE SCIPaddConcurrentSol ( SCIP * scip,
SCIP_SOL * sol )

pass a solution to the given SCIP instance using that was received via synchronization by using the sync heuristic

Parameters
scipSCIP datastructure
solsolution

Definition at line 381 of file concurrent.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPheurSyncPassSol(), and sol.

Referenced by SCIP_DECL_CONCSOLVERSYNCREAD().

◆ SCIPaddConcurrentBndchg()

SCIP_RETCODE SCIPaddConcurrentBndchg ( SCIP * scip,
SCIP_VAR * var,
SCIP_Real val,
SCIP_BOUNDTYPE bndtype )

adds a global boundchange to the given SCIP, by passing it to the sync propagator

Parameters
scipSCIP data structure
varvariable for bound
valvalue of bound
bndtypetype of bound

Definition at line 396 of file concurrent.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPpropSyncAddBndchg(), and var.

Referenced by SCIP_DECL_CONCSOLVERSYNCREAD().

◆ SCIPcopySolStats()

SCIP_RETCODE SCIPcopySolStats ( SCIP_SOL * source,
SCIP_SOL * target )

copy the nodenumber, depth, time, and runnumber of one solution to another one

Parameters
sourcesource for solution statistics
targettarget for solution statistics

Definition at line 414 of file concurrent.c.

References assert(), SCIP_Sol::depth, SCIP_Sol::nodenum, NULL, SCIP_Sol::runnum, SCIP_OKAY, and SCIP_Sol::time.

Referenced by SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA().

◆ SCIPcopyConcurrentSolvingStats()

SCIP_RETCODE SCIPcopyConcurrentSolvingStats ( SCIP * source,
SCIP * target )

copy solving statistics

Parameters
sourceSCIP data structure
targettarget SCIP data structure

Definition at line 567 of file concurrent.c.

References assert(), SCIP_Stat::barrierlptime, SCIP_Stat::barrierzeroittime, SCIP_Stat::bestsolnode, SCIP_Stat::conflictlptime, SCIP_Stat::divinglptime, SCIP_Stat::domchgcount, SCIP_Stat::duallptime, SCIP_Stat::dualrefintegral, SCIP_Stat::dualzeroittime, SCIP_Node::estimate, SCIP_Stat::firstlpdualbound, SCIP_Stat::firstlptime, SCIP_Stat::firstprimalbound, SCIP_Stat::firstprimaldepth, SCIP_Stat::firstprimalheur, SCIP_Stat::firstprimaltime, SCIP_Stat::firstsolgap, SCIP_Heur::heurclock, i, SCIP_Stat::lastbranchdir, SCIP_Stat::lastbranchvalue, SCIP_Stat::lastconflictnode, SCIP_Stat::lastdispnode, SCIP_Stat::lastdivenode, SCIP_Stat::lastdualbound, SCIP_Stat::lastlowerbound, SCIP_Stat::lastprimalbound, SCIP_Stat::lastsblpsolstats, SCIP_Sepa::lastsepanode, SCIP_Stat::lastsolgap, SCIP_Stat::lastupperbound, SCIP_Stat::lexduallptime, SCIP_Node::lowerbound, SCIP_Stat::lpcount, SCIP_Stat::lpsoltime, MAX, SCIP_Sepa::maxbounddist, SCIP_Stat::maxcopytime, SCIP_Stat::maxdepth, SCIP_Stat::maxtotaldepth, MIN, SCIP_Stat::mincopytime, SCIP_Stat::nactivatednodes, SCIP_Presol::naddconss, SCIP_Presol::naddholes, SCIP_Presol::naggrvars, SCIP_Stat::nbacktracks, SCIP_Stat::nbarrierlpiterations, SCIP_Stat::nbarrierlps, SCIP_Stat::nbarrierzeroitlps, SCIP_Heur::nbestsolsfound, SCIP_Primal::nbestsolsfound, SCIP_Stat::nboundchgs, SCIP_Heur::ncalls, SCIP_Presol::ncalls, SCIP_Prop::ncalls, SCIP_Sepa::ncalls, SCIP_Presol::nchgbds, SCIP_Presol::nchgcoefs, SCIP_Presol::nchgsides, SCIP_Presol::nchgvartypes, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, SCIP_Stat::nconfrestarts, SCIP_Sepa::nconssfound, SCIP_Stat::ncopies, SCIP_Stat::ncreatednodes, SCIP_Stat::ncreatednodesrun, SCIP_Prop::ncutoffs, SCIP_Sepa::ncutoffs, SCIP_Sepa::ncutsaddeddirect, SCIP_Sepa::ncutsaddedviapool, SCIP_Sepa::ncutsapplieddirect, SCIP_Sepa::ncutsappliedviapool, SCIP_Sepa::ncutsfound, SCIP_Stat::ndeactivatednodes, SCIP_Stat::ndelayedcutoffs, SCIP_Presol::ndelconss, SCIP_Stat::ndivesetcalls, SCIP_Stat::ndivesetlpiterations, SCIP_Stat::ndivesetlps, SCIP_Stat::ndivinglpiterations, SCIP_Stat::ndivinglps, SCIP_Prop::ndomredsfound, SCIP_Sepa::ndomredsfound, SCIP_Stat::nduallpiterations, SCIP_Stat::nduallps, SCIP_Stat::ndualresolvelpiterations, SCIP_Stat::ndualresolvelps, SCIP_Stat::ndualzeroitlps, SCIP_Stat::nearlybacktracks, SCIP_Stat::nexternalsolsfound, SCIP_Stat::nfeasleaves, SCIP_Presol::nfixedvars, SCIP_Stat::nholechgs, SCIP_Stat::ninfeasleaves, SCIP_Stat::ninitconssadded, SCIP_Stat::ninitlpiterations, SCIP_Stat::ninitlps, SCIP_Stat::ninternalnodes, SCIP_Stat::nisstoppedcalls, SCIP_Stat::nlexduallpiterations, SCIP_Stat::nlexduallps, SCIP_Stat::nlexdualresolvelpiterations, SCIP_Stat::nlexdualresolvelps, SCIP_Primal::nlimsolsfound, SCIP_Stat::nlpbestsolsfound, SCIP_Stat::nlpiterations, SCIP_Stat::nlps, SCIP_Stat::nlpsolsfound, SCIP_Stat::nlpsoltime, SCIP_Stat::nnlps, SCIP_Stat::nnodelpiterations, SCIP_Stat::nnodelps, SCIP_Stat::nnodes, SCIP_Stat::nnodesaboverefbound, SCIP_Stat::nnodesbeforefirst, SCIP_Stat::nnz, SCIP_Stat::nobjleaves, SCIP_Stat::nodeactivationtime, SCIP_Stat::npresoladdconss, SCIP_Stat::npresoladdholes, SCIP_Stat::npresolaggrvars, SCIP_Stat::npresolchgbds, SCIP_Stat::npresolchgcoefs, SCIP_Stat::npresolchgsides, SCIP_Stat::npresolchgvartypes, SCIP_Stat::npresoldelconss, SCIP_Stat::npresolfixedvars, SCIP_Stat::npresolrounds, SCIP_Stat::npresolroundsext, SCIP_Stat::npresolroundsfast, SCIP_Stat::npresolroundsmed, SCIP_Stat::npresolupgdconss, SCIP_Stat::npricerounds, SCIP_Stat::nprimallpiterations, SCIP_Stat::nprimallps, SCIP_Stat::nprimalresolvelpiterations, SCIP_Stat::nprimalresolvelps, SCIP_Stat::nprimalzeroitlps, SCIP_Stat::nprobboundchgs, SCIP_Stat::nprobholechgs, SCIP_Stat::npsbestsolsfound, SCIP_Stat::npssolsfound, SCIP_Stat::nreoptruns, SCIP_Stat::nrepropboundchgs, SCIP_Stat::nrepropcutoffs, SCIP_Stat::nreprops, SCIP_Prop::nrespropcalls, SCIP_Stat::nrootboundchgs, SCIP_Stat::nrootboundchgsrun, SCIP_Sepa::nrootcalls, SCIP_Stat::nrootfirstlpiterations, SCIP_Stat::nrootintfixings, SCIP_Stat::nrootintfixingsrun, SCIP_Stat::nrootlpiterations, SCIP_Stat::nrootlps, SCIP_Stat::nrootsblpiterations, SCIP_Stat::nrootstrongbranchs, SCIP_Stat::nruns, SCIP_Stat::nrunsbeforefirst, SCIP_Stat::nsbbestsolsfound, SCIP_Stat::nsbdivinglpiterations, SCIP_Stat::nsbdivinglps, SCIP_Stat::nsbdowndomchgs, SCIP_Stat::nsblpiterations, SCIP_Stat::nsbsolsfound, SCIP_Stat::nsbtimesiterlimhit, SCIP_Stat::nsbupdomchgs, SCIP_Stat::nseparounds, SCIP_Heur::nsolsfound, SCIP_Primal::nsolsfound, SCIP_Stat::nstrongbranchs, SCIP_Stat::ntotalinternalnodes, SCIP_Stat::ntotalnodes, NULL, SCIP_Presol::nupgdconss, Scip::origprob, SCIP_Stat::plungedepth, SCIP_Presol::presolclock, SCIP_Prop::presoltime, SCIP_Stat::presolvingtime, SCIP_Stat::presolvingtimeoverall, SCIP_Stat::previntegralevaltime, SCIP_Stat::previousdualrefgap, SCIP_Stat::previousgap, SCIP_Stat::previousprimalrefgap, SCIP_Stat::prevrunnvars, Scip::primal, SCIP_Stat::primaldualintegral, SCIP_Stat::primallptime, SCIP_Stat::primalrefintegral, SCIP_Stat::primalzeroittime, SCIP_Prop::proptime, SCIP_Stat::pseudosoltime, SCIP_Stat::referencebound, SCIP_Stat::reoptupdatetime, SCIP_Prop::resproptime, SCIP_Stat::rootlowerbound, SCIP_Stat::rootlpbestestimate, SCIP_Prop::sbproptime, SCIP_Stat::sbsoltime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPfindHeur(), SCIPfindPresol(), SCIPfindProp(), SCIPfindSepa(), SCIPgetClockTime(), SCIPgetDualbound(), SCIPgetHeurs(), SCIPgetNHeurs(), SCIPgetNPresols(), SCIPgetNProps(), SCIPgetNSepas(), SCIPgetPresols(), SCIPgetProps(), SCIPgetRootNode(), SCIPgetSepas(), SCIPheurGetName(), SCIPpresolGetName(), SCIPprobExternObjval(), SCIPprobSetDualbound(), SCIPpropGetName(), SCIPsepaGetName(), SCIPsetClockTime(), SCIP_Sepa::sepaclock, Scip::set, SCIP_Heur::setuptime, SCIP_Presol::setuptime, SCIP_Prop::setuptime, SCIP_Sepa::setuptime, SCIP_Stat::solvingtimeoverall, SCIP_Set::stage, Scip::stat, SCIP_Stat::status, SCIP_Stat::strongbranchtime, SCIP_Stat::strongpropclock, SCIP_Stat::totaldivesetdepth, Scip::transprob, and SCIP_Stat::vsidsweight.

Referenced by SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA().

◆ SCIPgetConcurrentVaridx()

int SCIPgetConcurrentVaridx ( SCIP * scip,
SCIP_VAR * var )

get variable index of original variable that is the same between concurrent solvers

Parameters
scipSCIP data structure
varvariable

Definition at line 432 of file concurrent.c.

References assert(), NULL, SCIPgetNOrigVars(), SCIPvarGetIndex(), SCIPvarIsOriginal(), and var.

Referenced by SCIP_DECL_EVENTEXEC().

◆ SCIPIsConcurrentSolNew()

SCIP_Bool SCIPIsConcurrentSolNew ( SCIP * scip,
SCIP_SOL * sol )

has the solution been created after the last synchronization point

is the solution new since the last synchronization point

Parameters
scipSCIP data structure
solthe solution

Definition at line 448 of file concurrent.c.

References assert(), NULL, SCIP_Bool, SCIPsolGetIndex(), and sol.

Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().

◆ SCIPgetConcurrentGlobalBoundChanges()

SCIP_BOUNDSTORE * SCIPgetConcurrentGlobalBoundChanges ( SCIP * scip)

gets the global bound changes since the last synchronization point

gets the global lower bound changes since the last synchronization point

Parameters
scipSCIP data structure

Definition at line 461 of file concurrent.c.

References assert(), NULL, and SCIPeventGlobalbndGetBoundChanges().

Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().

◆ SCIPconcurrentSolve()

◆ SCIPdisableConcurrentBoundStorage()

void SCIPdisableConcurrentBoundStorage ( SCIP * scip)

disables storing global bound changes

Parameters
scipSCIP data structure

Definition at line 273 of file concurrent.c.

References assert(), NULL, and SCIPeventGlobalbndDisableBoundStorage().

Referenced by applyBoundChanges().

◆ SCIPenableConcurrentBoundStorage()

void SCIPenableConcurrentBoundStorage ( SCIP * scip)

enables storing global bound changes

Parameters
scipSCIP data structure

Definition at line 285 of file concurrent.c.

References assert(), NULL, and SCIPeventGlobalbndEnableBoundStorage().

Referenced by applyBoundChanges().

◆ SCIPgetConcurrentMemTotal()

SCIP_Longint SCIPgetConcurrentMemTotal ( SCIP * scip)

gets total memory usage of all concurrent solvers together

Parameters
scipSCIP data structure

Definition at line 297 of file concurrent.c.

References assert(), MAX, NULL, SCIP_Longint, SCIPconcsolverGetMemTotal(), and SCIPgetMemTotal().

Referenced by SCIPsolveIsStopped().

◆ SCIPgetConcurrentDualbound()

SCIP_Real SCIPgetConcurrentDualbound ( SCIP * scip)

gets the dualbound in the last synchronization

Parameters
scipSCIP data structure

Definition at line 315 of file concurrent.c.

References assert(), NULL, SCIP_Real, SCIPgetSyncstore(), SCIPprobExternObjval(), and SCIPsyncstoreGetLastLowerbound().

Referenced by SCIP_DECL_DISPOUTPUT(), SCIPgetConcurrentGap(), and SCIPsyncstoreFinishSync().

◆ SCIPgetConcurrentPrimalbound()

SCIP_Real SCIPgetConcurrentPrimalbound ( SCIP * scip)

gets the primalbound in the last synchronization

Parameters
scipSCIP data structure

Definition at line 330 of file concurrent.c.

References assert(), NULL, SCIP_Real, SCIPgetSyncstore(), SCIPprobExternObjval(), and SCIPsyncstoreGetLastUpperbound().

Referenced by SCIP_DECL_DISPOUTPUT(), SCIPgetConcurrentGap(), and SCIPsyncstoreFinishSync().

◆ SCIPgetConcurrentGap()

SCIP_Real SCIPgetConcurrentGap ( SCIP * scip)

gets the gap in the last synchronization

Parameters
scipSCIP data structure

Definition at line 345 of file concurrent.c.

References SCIP_Real, SCIPcomputeGap(), SCIPepsilon(), SCIPgetConcurrentDualbound(), SCIPgetConcurrentPrimalbound(), and SCIPinfinity().

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIPsyncstoreFinishSync().

◆ SCIPgetConcurrentNTightenedBnds()

SCIP_Longint SCIPgetConcurrentNTightenedBnds ( SCIP * scip)

gives the total number of tightened bounds received from other concurrent solvers

Parameters
scipSCIP data structure

Definition at line 359 of file concurrent.c.

References assert(), NULL, SCIP_Longint, and SCIPpropSyncGetNTightenedBnds().

◆ SCIPgetConcurrentNTightenedIntBnds()

SCIP_Longint SCIPgetConcurrentNTightenedIntBnds ( SCIP * scip)

gives the total number of tightened bounds for integer variables received from other concurrent solvers

Parameters
scipSCIP data structure

Definition at line 370 of file concurrent.c.

References assert(), NULL, SCIP_Longint, and SCIPpropSyncGetNTightenedIntBnds().