SCIP

    Solving Constraint Integer Programs

    concsolver.h File Reference

    Detailed Description

    data structures for concurrent solvers

    Author
    Leona Gottwald

    Definition in file concsolver.h.

    Go to the source code of this file.

    Functions

    SCIP_RETCODE SCIPconcsolverTypeCreate (SCIP_CONCSOLVERTYPE **concsolvertype, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, SCIP_Real prefpriodefault, SCIP_DECL_CONCSOLVERCREATEINST((*concsolvercreateinst)), SCIP_DECL_CONCSOLVERDESTROYINST((*concsolverdestroyinst)), SCIP_DECL_CONCSOLVERINITSEEDS((*concsolverinitseeds)), SCIP_DECL_CONCSOLVEREXEC((*concsolverexec)), SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA((*concsolvercopysolvdata)), SCIP_DECL_CONCSOLVERSTOP((*concsolverstop)), SCIP_DECL_CONCSOLVERSYNCWRITE((*concsolversyncwrite)), SCIP_DECL_CONCSOLVERSYNCREAD((*concsolversyncread)), SCIP_DECL_CONCSOLVERTYPEFREEDATA((*concsolvertypefreedata)), SCIP_CONCSOLVERTYPEDATA *data)
     
    void SCIPconcsolverTypeFree (SCIP_CONCSOLVERTYPE **concsolvertype)
     
    SCIP_CONCSOLVERTYPEDATA * SCIPconcsolverTypeGetData (SCIP_CONCSOLVERTYPE *concsolvertype)
     
    void SCIPconcsolverTypeSetData (SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVERTYPEDATA *data)
     
    char * SCIPconcsolverTypeGetName (SCIP_CONCSOLVERTYPE *concsolvertype)
     
    SCIP_Real SCIPconcsolverTypeGetPrefPrio (SCIP_CONCSOLVERTYPE *concsolvertype)
     
    SCIP_RETCODE SCIPconcsolverCreateInstance (SCIP_SET *set, SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVER **concsolver)
     
    SCIP_RETCODE SCIPconcsolverDestroyInstance (SCIP_SET *set, SCIP_CONCSOLVER **concsolver)
     
    SCIP_CONCSOLVERDATA * SCIPconcsolverGetData (SCIP_CONCSOLVER *concsolver)
     
    void SCIPconcsolverSetData (SCIP_CONCSOLVER *concsolver, SCIP_CONCSOLVERDATA *data)
     
    char * SCIPconcsolverGetName (SCIP_CONCSOLVER *concsolver)
     
    SCIP_RETCODE SCIPconcsolverInitSeeds (SCIP_CONCSOLVER *concsolver, unsigned int seed)
     
    SCIP_RETCODE SCIPconcsolverExec (SCIP_CONCSOLVER *concsolver)
     
    SCIP_RETCODE SCIPconcsolverGetSolvingData (SCIP_CONCSOLVER *concsolver, SCIP *scip)
     
    SCIP_RETCODE SCIPconcsolverStop (SCIP_CONCSOLVER *concsolver)
     
    SCIP_RETCODE SCIPconcsolverSync (SCIP_CONCSOLVER *concsolver, SCIP_SET *set)
     
    SCIP_Real SCIPconcsolverGetSyncFreq (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Longint SCIPconcsolverGetMemTotal (SCIP_CONCSOLVER *concsolver)
     
    void SCIPconcsolverSetTimeSinceLastSync (SCIP_CONCSOLVER *concsolver, SCIP_Real time)
     
    SCIP_Real SCIPconcsolverGetSolvingTime (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Real SCIPconcsolverGetSyncTime (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Longint SCIPconcsolverGetNLPIterations (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Longint SCIPconcsolverGetNNodes (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Longint SCIPconcsolverGetNSolsRecvd (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Longint SCIPconcsolverGetNSolsShared (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Longint SCIPconcsolverGetNTighterBnds (SCIP_CONCSOLVER *concsolver)
     
    SCIP_Longint SCIPconcsolverGetNTighterIntBnds (SCIP_CONCSOLVER *concsolver)
     
    int SCIPconcsolverGetIdx (SCIP_CONCSOLVER *concsolver)
     

    Function Documentation

    ◆ SCIPconcsolverTypeCreate()

    SCIP_RETCODE SCIPconcsolverTypeCreate ( SCIP_CONCSOLVERTYPE **  concsolvertype,
    SCIP_SET *  set,
    SCIP_MESSAGEHDLR *  messagehdlr,
    BMS_BLKMEM *  blkmem,
    const char *  name,
    SCIP_Real  prefpriodefault,
    SCIP_DECL_CONCSOLVERCREATEINST((*concsolvercreateinst))  ,
    SCIP_DECL_CONCSOLVERDESTROYINST((*concsolverdestroyinst))  ,
    SCIP_DECL_CONCSOLVERINITSEEDS((*concsolverinitseeds))  ,
    SCIP_DECL_CONCSOLVEREXEC((*concsolverexec))  ,
    SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA((*concsolvercopysolvdata))  ,
    SCIP_DECL_CONCSOLVERSTOP((*concsolverstop))  ,
    SCIP_DECL_CONCSOLVERSYNCWRITE((*concsolversyncwrite))  ,
    SCIP_DECL_CONCSOLVERSYNCREAD((*concsolversyncread))  ,
    SCIP_DECL_CONCSOLVERTYPEFREEDATA((*concsolvertypefreedata))  ,
    SCIP_CONCSOLVERTYPEDATA *  data 
    )

    creates a concurrent solver type

    Parameters
    concsolvertypepointer to concurrent solver data structure
    setglobal SCIP settings
    messagehdlrmessage handler
    blkmemblock memory for parameter settings
    namename of concurrent solver
    prefpriodefaultthe default preferred priority of this concurrent solver type
    datathe concurrent solver type's data

    Definition at line 113 of file concsolver.c.

    References doConcsolverTypeCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPconcsolverTypeFree().

    Referenced by SCIPincludeConcsolverType().

    ◆ SCIPconcsolverTypeFree()

    void SCIPconcsolverTypeFree ( SCIP_CONCSOLVERTYPE **  concsolvertype)

    frees all memory of a concurrent solver type

    Parameters
    concsolvertypepointer to concurrent solver data structure

    Definition at line 153 of file concsolver.c.

    References BMSfreeMemory, BMSfreeMemoryArrayNull, and NULL.

    Referenced by SCIPconcsolverTypeCreate().

    ◆ SCIPconcsolverTypeGetData()

    SCIP_CONCSOLVERTYPEDATA * SCIPconcsolverTypeGetData ( SCIP_CONCSOLVERTYPE *  concsolvertype)

    gets the data of a concurrent solver type

    Parameters
    concsolvertypeconcurrent solver type

    Definition at line 170 of file concsolver.c.

    References SCIP_ConcSolverType::data, and NULL.

    Referenced by SCIP_DECL_CONCSOLVERCREATEINST().

    ◆ SCIPconcsolverTypeSetData()

    void SCIPconcsolverTypeSetData ( SCIP_CONCSOLVERTYPE *  concsolvertype,
    SCIP_CONCSOLVERTYPEDATA *  data 
    )

    sets the data of a concurrent solver type

    Parameters
    concsolvertypeconcurrent solver type
    datathe concurrent solver's data

    Definition at line 180 of file concsolver.c.

    References SCIP_ConcSolverType::data, and NULL.

    ◆ SCIPconcsolverTypeGetName()

    char * SCIPconcsolverTypeGetName ( SCIP_CONCSOLVERTYPE *  concsolvertype)

    gets the name of a concurrent solver type

    Parameters
    concsolvertypeconcurrent solver type

    Definition at line 191 of file concsolver.c.

    References SCIP_ConcSolverType::name, and NULL.

    ◆ SCIPconcsolverTypeGetPrefPrio()

    SCIP_Real SCIPconcsolverTypeGetPrefPrio ( SCIP_CONCSOLVERTYPE *  concsolvertype)

    gets the preferred priority from a concurrent solver type

    Parameters
    concsolvertypeconcurrent solver type

    Definition at line 201 of file concsolver.c.

    References NULL, and SCIP_ConcSolverType::prefprio.

    Referenced by SCIPsolveConcurrent().

    ◆ SCIPconcsolverCreateInstance()

    SCIP_RETCODE SCIPconcsolverCreateInstance ( SCIP_SET *  set,
    SCIP_CONCSOLVERTYPE *  concsolvertype,
    SCIP_CONCSOLVER **  concsolver 
    )

    creates an instance of the given concurrent solver type

    Parameters
    setglobal SCIP settings
    concsolvertypeconcurrent solver type to create
    concsolverpointer to return concurrent solver instance

    Definition at line 211 of file concsolver.c.

    References BMSallocMemory, BMSduplicateMemoryArray, SCIP_ConcSolverType::name, SCIP_ConcSolverType::ninstances, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PARA_DETERMINISTIC, SCIPaddConcurrentSolver(), SCIPcreateWallClock(), SCIPdebugMessage, SCIPgetNConcurrentSolvers(), SCIPgetNVars(), and SCIPsnprintf().

    Referenced by SCIPsolveConcurrent().

    ◆ SCIPconcsolverDestroyInstance()

    SCIP_RETCODE SCIPconcsolverDestroyInstance ( SCIP_SET *  set,
    SCIP_CONCSOLVER **  concsolver 
    )

    destroys an instance of the given concurrent solver

    Parameters
    setglobal SCIP settings
    concsolverconcurrent solver

    Definition at line 260 of file concsolver.c.

    References BMSfreeMemory, BMSfreeMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, and SCIPfreeClock().

    ◆ SCIPconcsolverGetData()

    ◆ SCIPconcsolverSetData()

    void SCIPconcsolverSetData ( SCIP_CONCSOLVER *  concsolver,
    SCIP_CONCSOLVERDATA *  data 
    )

    sets the data of a concurrent solver

    Parameters
    concsolverconcurrent solver
    datathe concurrent solver's data

    Definition at line 292 of file concsolver.c.

    References SCIP_ConcSolver::data, and NULL.

    Referenced by SCIP_DECL_CONCSOLVERCREATEINST(), and SCIP_DECL_CONCSOLVERDESTROYINST().

    ◆ SCIPconcsolverGetName()

    char * SCIPconcsolverGetName ( SCIP_CONCSOLVER *  concsolver)

    ◆ SCIPconcsolverInitSeeds()

    SCIP_RETCODE SCIPconcsolverInitSeeds ( SCIP_CONCSOLVER *  concsolver,
    unsigned int  seed 
    )

    initializes the random seeds of a concurrent solver

    Parameters
    concsolverconcurrent solver
    seedseed for initializing the solver's internal random seeds

    Definition at line 313 of file concsolver.c.

    References NULL, SCIP_CALL, SCIP_OKAY, and SCIP_ConcSolver::type.

    Referenced by SCIPsolveConcurrent().

    ◆ SCIPconcsolverExec()

    SCIP_RETCODE SCIPconcsolverExec ( SCIP_CONCSOLVER *  concsolver)

    start the solving process of a concurrent solver

    Parameters
    concsolverconcurrent solver

    Definition at line 330 of file concsolver.c.

    References FALSE, SCIP_ConcSolver::nlpiterations, SCIP_ConcSolver::nnodes, NULL, SCIP_CALL, SCIP_OKAY, SCIP_ConcSolver::solvingtime, SCIP_ConcSolver::stopped, and SCIP_ConcSolver::type.

    Referenced by execConcsolver().

    ◆ SCIPconcsolverGetSolvingData()

    SCIP_RETCODE SCIPconcsolverGetSolvingData ( SCIP_CONCSOLVER *  concsolver,
    SCIP *  scip 
    )

    gets solving data of concurrent solver and stores it in the given SCIP instance

    Parameters
    concsolverconcurrent solver
    scipSCIP data structure

    Definition at line 348 of file concsolver.c.

    References NULL, and SCIP_ConcSolver::type.

    Referenced by SCIPconcurrentSolve().

    ◆ SCIPconcsolverStop()

    SCIP_RETCODE SCIPconcsolverStop ( SCIP_CONCSOLVER *  concsolver)

    interrupt solving in a concurrent solver

    Parameters
    concsolverconcurrent solver

    Definition at line 361 of file concsolver.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIP_ConcSolver::stopped, TRUE, and SCIP_ConcSolver::type.

    Referenced by SCIPconcsolverSync().

    ◆ SCIPconcsolverSync()

    ◆ SCIPconcsolverGetSyncFreq()

    SCIP_Real SCIPconcsolverGetSyncFreq ( SCIP_CONCSOLVER *  concsolver)

    gets the current synchronization frequency of the concurrent solver

    Parameters
    concsolverconcurrent solver

    Definition at line 513 of file concsolver.c.

    References NULL, and SCIP_ConcSolver::syncfreq.

    Referenced by SCIPincrementConcurrentTime().

    ◆ SCIPconcsolverGetMemTotal()

    SCIP_Longint SCIPconcsolverGetMemTotal ( SCIP_CONCSOLVER *  concsolver)

    gets the total memory used by the concurent solver

    gets the total memory used by the concurrent solver

    Parameters
    concsolverconcurrent solver

    Definition at line 523 of file concsolver.c.

    References NULL, SCIPsyncdataGetMemTotal(), and SCIP_ConcSolver::syncdata.

    Referenced by SCIPgetConcurrentMemTotal().

    ◆ SCIPconcsolverSetTimeSinceLastSync()

    void SCIPconcsolverSetTimeSinceLastSync ( SCIP_CONCSOLVER *  concsolver,
    SCIP_Real  time 
    )

    sets the time elapsed since the last synchronization. Must be set before the synchronization is started.

    Parameters
    concsolverconcurrent solver
    timethe time passed since the last synchronization

    Definition at line 535 of file concsolver.c.

    References NULL, and SCIP_ConcSolver::timesincelastsync.

    Referenced by SCIPincrementConcurrentTime().

    ◆ SCIPconcsolverGetSolvingTime()

    SCIP_Real SCIPconcsolverGetSolvingTime ( SCIP_CONCSOLVER *  concsolver)

    gets the solving time of the concurrent solver

    Parameters
    concsolverconcurrent solver

    Definition at line 546 of file concsolver.c.

    References NULL, and SCIP_ConcSolver::solvingtime.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetSyncTime()

    SCIP_Real SCIPconcsolverGetSyncTime ( SCIP_CONCSOLVER *  concsolver)

    gets the time spent for synchronization for the concurrent solver

    Parameters
    concsolverconcurrent solver

    Definition at line 556 of file concsolver.c.

    References NULL, SCIPclockGetTime(), and SCIP_ConcSolver::totalsynctime.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetNLPIterations()

    SCIP_Longint SCIPconcsolverGetNLPIterations ( SCIP_CONCSOLVER *  concsolver)

    gets the number of lp iterations the concurrent solver used

    Parameters
    concsolverconcurrent solver

    Definition at line 566 of file concsolver.c.

    References SCIP_ConcSolver::nlpiterations, and NULL.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetNNodes()

    SCIP_Longint SCIPconcsolverGetNNodes ( SCIP_CONCSOLVER *  concsolver)

    gets the number of branch and bound nodes the concurrent solver used

    Parameters
    concsolverconcurrent solver

    Definition at line 576 of file concsolver.c.

    References SCIP_ConcSolver::nnodes, and NULL.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetNSolsRecvd()

    SCIP_Longint SCIPconcsolverGetNSolsRecvd ( SCIP_CONCSOLVER *  concsolver)

    gets the number of solutions the concurrent solver received during synchronization

    Parameters
    concsolverconcurrent solver

    Definition at line 586 of file concsolver.c.

    References SCIP_ConcSolver::nsolsrecvd, and NULL.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetNSolsShared()

    SCIP_Longint SCIPconcsolverGetNSolsShared ( SCIP_CONCSOLVER *  concsolver)

    gets the number of solutions the concurrent solver shared during synchronization

    Parameters
    concsolverconcurrent solver

    Definition at line 596 of file concsolver.c.

    References SCIP_ConcSolver::nsolsshared, and NULL.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetNTighterBnds()

    SCIP_Longint SCIPconcsolverGetNTighterBnds ( SCIP_CONCSOLVER *  concsolver)

    gets the number of tighter global variable bounds the solver received

    Parameters
    concsolverconcurrent solver

    Definition at line 606 of file concsolver.c.

    References SCIP_ConcSolver::ntighterbnds, and NULL.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetNTighterIntBnds()

    SCIP_Longint SCIPconcsolverGetNTighterIntBnds ( SCIP_CONCSOLVER *  concsolver)

    gets the number of tighter global variable bounds of integer variables the solver received

    Parameters
    concsolverconcurrent solver

    Definition at line 616 of file concsolver.c.

    References SCIP_ConcSolver::ntighterintbnds, and NULL.

    Referenced by SCIPcollectConcsolverStatistics(), and SCIPprintConcsolverStatistics().

    ◆ SCIPconcsolverGetIdx()

    int SCIPconcsolverGetIdx ( SCIP_CONCSOLVER *  concsolver)

    gets index of concurrent solver

    Parameters
    concsolverconcurrent solver

    Definition at line 626 of file concsolver.c.

    References SCIP_ConcSolver::idx, and NULL.

    Referenced by SCIP_DECL_CONCSOLVERCREATEINST(), SCIP_DECL_CONCSOLVERSYNCREAD(), SCIP_DECL_CONCSOLVERSYNCWRITE(), and setChildSelRule().