class BbParaSolverPoolForMinimization (Solver Pool for Minimization Problems) More...
#include <bbParaSolverPool.h>
Public Member Functions | |
| BbParaSolverPoolForMinimization (double inMp, double inBgap, double inMBgap, int inOriginRank, ParaComm *inParaComm, ParaParamSet *inParaParams, ParaTimer *inParaTimer) | |
| constructor More... | |
| BbParaSolverPoolForMinimization (double inMp, double inBgap, double inMBgap, int inNSolvers, int inOriginRank, ParaComm *inParaComm, ParaParamSet *inParaParams, ParaTimer *inParaTimer) | |
| constructor More... | |
| virtual | ~BbParaSolverPoolForMinimization () |
| destructor More... | |
| virtual double | getGlobalBestDualBoundValue () |
| get global best dual bound value More... | |
| virtual void | switchInCollectingMode (BbParaNodePool *paraNodePool) |
| switch in collecting mode More... | |
| virtual void | updateSolverStatus (int rank, long long numNodesSolved, int numNodesLeft, double solverLocalBestBound, BbParaNodePool *paraNodePool) |
| update Solver status More... | |
Public Member Functions inherited from BbParaSolverPool | |
| BbParaSolverPool (double inMp, double inBgap, double inMBgap, int inOriginRank, ParaComm *inParaComm, ParaParamSet *inParaParams, ParaTimer *inParaTimer) | |
| constructor More... | |
| BbParaSolverPool (double inMp, double inBgap, double inMBgap, int inNSolvers, int inOriginRank, ParaComm *inParaComm, ParaParamSet *inParaParams, ParaTimer *inParaTimer) | |
| constructor More... | |
| virtual | ~BbParaSolverPool () |
| destructor More... | |
| virtual void | interruptRequested (int rank) |
| set the Solver specified by rank is terminate requested More... | |
| virtual void | terminateRequested (int rank) |
| set the Solver specified by rank is terminate requested More... | |
| virtual bool | isInterruptRequested (int rank) |
| check if the Solver specified by rank is interrupt requested or not More... | |
| virtual bool | isTerminateRequested (int rank) |
| check if the Solver specified by rank is terminate requested or not More... | |
| virtual void | terminated (int rank) |
| set the Solver specified by rank is terminated More... | |
| virtual bool | isTerminated (int rank) |
| check if the Solver specified by rank is terminated or not More... | |
| virtual void | reinitToRestart () |
| reinitialize to restart More... | |
| virtual void | activate () |
| activate this Solver pool More... | |
| virtual bool | isActive () |
| check if this Solver pool is active or not More... | |
| virtual std::size_t | getNSolvers () |
| get number of Solvers in this Solver pool More... | |
| virtual unsigned long long | getNnodesSolvedInSolvers () |
| get number of nodes solved in current running Solvers More... | |
| virtual unsigned long long | getTotalNodesSolved () |
| get number of nodes solved in all Solvers: updated at termination of subtree computation More... | |
| virtual void | addTotalNodesSolved (unsigned long long num) |
| add number of nodes solved in all Solvers More... | |
| virtual unsigned long long | getNnodesInSolvers () |
| get number of nodes in all Solvers More... | |
| virtual std::size_t | getNumActiveSolvers () |
| get number of active Solvers More... | |
| virtual std::size_t | getNumInactiveSolvers () |
| get number of inactive Solvers More... | |
| virtual bool | isSolverActive (int rank) |
| check if the Solver specified by rank is active or not More... | |
| virtual ParaTask * | getCurrentTask (int rank) |
| get current solving BbParaNode in the Solver specified by rank */ More... | |
| virtual bool | canIncreaseLimitNLimitCollectingModeSolvers () |
| check if the number of Solvers in collecting mode can be increased or not More... | |
| virtual std::size_t | getNLimitCollectingModeSolvers () |
| get limit number of Solvers that can be in collecting mode More... | |
| virtual bool | isInCollectingMode () |
| check if this system is in collecting mode or not More... | |
| virtual bool | isSolverInCollectingMode (int rank) |
| get collecting mode of the Solver specified by rank More... | |
| virtual BbParaNode * | extractCurrentNodeAndInactivate (int rank, BbParaNodePool *paraNodePool) |
| extract current solving BbParaNode in the Solver specified by rank and inactivate the Solver More... | |
| virtual bool | currentSolvingNodehaeDescendant (int rank) |
| extract current solving BbParaNode in the Solver specified by rank and inactivate the Solver More... | |
| virtual void | addNumNodesSolved (long long numOfNodesSolved) |
| add number of nodes solved More... | |
| virtual long long | getNumOfNodesSolved (int rank) |
| get the number of nodes solved by the Solver specified More... | |
| virtual int | getNumOfNodesLeft (int rank) |
| get the number of nodes left by the Solver specified More... | |
| virtual int | getNumOfNodesLeftInBestSolver () |
| get the number of nodes left in the Solver which has the best dual bound value More... | |
| virtual int | getBestSolver () |
| get rank of the Solver which has top priority in selection criteria More... | |
| virtual int | getGoodSolverSolvingEssentialNode () |
| get rank of the Solver which has top priority in selection criteria More... | |
| virtual double | getDualBoundValue (int rank) |
| get dual bound value of solving BbParaNode by the Solver specified More... | |
| virtual void | setTermState (int rank, ParaSolverTerminationState *inTermState) |
| set SolverTerminationState to the Solver specified More... | |
| virtual ParaSolverTerminationState * | getTermState (int rank) |
| get SolverTermination state of the Solver specified More... | |
| virtual void | updateDualBoundsForSavingNodes () |
| update dual bound values of saving BbParaNodes by their dual bound values for subtrees More... | |
| virtual int | writeParaNodesToCheckpointFile (gzstream::ogzstream &out) |
| write BbParaNodes to checkpoint file More... | |
| virtual int | writeSolverStatisticsToCheckpointFile (gzstream::ogzstream &out) |
| write Solver statistics to checkpoint file More... | |
| virtual void | incNLimitCollectingModeSolvers () |
| increase the limit number of Solvers getting into collecting mode More... | |
| virtual void | setCollectingIsAllowed (int rank) |
| set collecting mode is allowed to the Solver specified by rank More... | |
| virtual int | getInactiveSolverRank () |
| get an inactive Solver rank More... | |
| virtual void | activateSolver (int rank, BbParaNode *node, int nGoodNodesInNodePool, double averageDualBoundGain) |
| activate the Solver specified by rank with specified node which has been sent More... | |
| virtual void | activateSolver (int rank, BbParaNode *node, int nNodesLeft) |
| activate the Solver specified by rank with specified node which has been sent and nNodesLeft (This method is for the racing winner) TODO: Need to check how this function is used More... | |
| virtual int | activateSolver (BbParaNode *node, BbParaRacingSolverPool *paraRacingSolverPool, bool rampUpPhase, int nGoodNodesInNodePool, double averageDualBoundGain) |
| activate a Solver with specified BbParaNode which is sent within this Solver pool More... | |
| virtual void | addNewSubtreeRootNode (int rank, BbParaNode *node) |
| add new subtree root node to the active solver with the specified rank More... | |
| virtual void | makeSubtreeRootNodeCurrent (int rank, BbParaNode *node) |
| make subtree root node as current task for the specified rank More... | |
| virtual void | removeSubtreeRootNode (int rank, BbParaNode *node) |
| remove subtree root node from the active solver with the specified rank More... | |
| virtual BbParaNode * | extractSelfSplitSubtreeRootNode (int rank, BbParaNode *node) |
| extract self-split subtree root node from the active solver with the specified rank More... | |
| virtual BbParaNode * | getSelfSplitSubtreeRootNodes (int rank) |
| get self-split subtree root node from the active solver with the specified rank More... | |
| virtual BbParaNode * | extractSelfSplitSubtreeRootNodes (int rank) |
| extract self-split subtree root node from the active solver with the specified rank More... | |
| virtual void | deleteCurrentSubtreeRootNode (int rank) |
| delete current self-split subtree root node from the active solver with the specified rank More... | |
| virtual void | inactivateSolver (int rank, long long numOfNodesSolved, BbParaNodePool *paraNodePool) |
| inactivate the Solver specified by rank More... | |
| virtual void | resetCountersInSolver (int rank, long long numOfNodesSolved, int numOfSelfSplitNodesLeft, BbParaNodePool *paraNodePool) |
| reset counters in the Solver specified by rank More... | |
| virtual BbParaNode * | solverDied (int rank) |
| kill the Solver specified by rank More... | |
| virtual void | switchOutCollectingMode () |
| switch out collecting mode More... | |
| virtual void | enforcedSwitchOutCollectingMode (int rank) |
| enforced to switch out collecting mode of the Solver specified by rank if it is necessary More... | |
| virtual void | sendSwitchOutCollectingModeIfNecessary (int rank) |
| switch out collecting mode of the Solver specified by rank if it is necessary More... | |
| virtual double | getGlobalBestDualBoundValue ()=0 |
| get global best dual bound value More... | |
| virtual void | switchInCollectingMode (BbParaNodePool *paraNodePool)=0 |
| switch in collecting mode More... | |
| virtual void | updateSolverStatus (int rank, long long numNodesSolved, int numNodesLeft, double solverLocalBestBound, BbParaNodePool *paraNodePool)=0 |
| update Solver status More... | |
| virtual int | getMCollectingNodes () |
| get multiplier of collecting BbParaNodes More... | |
| virtual int | getMMaxCollectingNodes () |
| get maximum multiplier for the number of collecting BbParaNodes More... | |
| virtual double | getSwichOutTime () |
| the following functions are to omit rebooting collecting mode process More... | |
| virtual void | setSwichOutTime (double time) |
| set time of switching out collecting mode More... | |
| virtual bool | isDualBounGainTesting (int rank) |
| check if dual bound gain testing is proceeding or not in the Solver specified More... | |
Public Member Functions inherited from ParaSolverPool | |
| ParaSolverPool (int inOriginRank, ParaComm *inParaComm, ParaParamSet *inParaParams, ParaTimer *inParaTimer) | |
| constructor More... | |
| virtual | ~ParaSolverPool () |
| destructor More... | |
| std::size_t | getNSolvers () |
| get number of Solvers in this Solver pool More... | |
| virtual std::size_t | getNumActiveSolvers ()=0 |
| get number of active Solvers More... | |
| virtual std::size_t | getNumInactiveSolvers ()=0 |
| get number of inactive Solvers More... | |
| virtual bool | isSolverActive (int rank)=0 |
| check if the Solver specified by rank is active or not More... | |
| virtual ParaTask * | getCurrentTask (int rank)=0 |
| get current solving ParaTask in the Solver specified by rank More... | |
| virtual void | interruptRequested (int rank)=0 |
| set the Solver specified by rank is interrupt requested More... | |
| virtual bool | isInterruptRequested (int rank)=0 |
| check if the Solver specified by rank is interrupt requested or not More... | |
| virtual void | terminateRequested (int rank)=0 |
| set the Solver specified by rank is terminate requested More... | |
| virtual bool | isTerminateRequested (int rank)=0 |
| check if the Solver specified by rank is terminate requested or not More... | |
| virtual void | terminated (int rank)=0 |
| set the Solver specified by rank is terminated More... | |
| virtual bool | isTerminated (int rank)=0 |
| check if the Solver specified by rank is terminated or not More... | |
Additional Inherited Members | |
Protected Member Functions inherited from BbParaSolverPool | |
| virtual void | switchInCollectingToSolver (int rank, BbParaNodePool *paraNodePool) |
| switch a Solver to be in collecting mode More... | |
Protected Attributes inherited from BbParaSolverPool | |
| bool | active |
| indicate if this pool is active or not More... | |
| double | bgap |
| threshold value of gap More... | |
| double | mp |
| multiplier of the threshold value p More... | |
| double | mBgap |
| multiplier of the bgap value More... | |
| double | absoluteGap |
| allowable absolute dual bound gap to the best Solver More... | |
| std::size_t | nGenerator |
| number of generators More... | |
| std::size_t | nCollectingModeSolvers |
| number of collecting mode Solvers More... | |
| std::size_t | nMaxCollectingModeSolvers |
| maximum number of Solvers that can be in collecting mode More... | |
| std::size_t | nLimitCollectingModeSolvers |
| limit number of Solvers that can be in collecting mode More... | |
| unsigned long long | nNodesSolvedInSolvers |
| number of nodes solved in current running Solvers More... | |
| unsigned long long | nTotalNodesSolved |
| number of nodes solved : updated at termination of subtree computation More... | |
| unsigned long long | nNodesInSolvers |
| number of nodes in all Solvers More... | |
| bool | collectingMode |
| indicate that this system is in collecting mode or not More... | |
| bool | breakingFirstSubtree |
| breaking the first subtree More... | |
| bool | beforeInitialCollect |
| before initial collecting mode More... | |
| bool | beforeFinishingFirstCollect |
| before finishing first collecting mode More... | |
| std::map< int, BbParaSolverPoolElementPtr > | inactiveSolvers |
| pointers to inactive Solvers More... | |
| std::map< int, BbParaSolverPoolElementPtr > | activeSolvers |
| pointers to active Solvers More... | |
| std::map< int, BbParaSolverPoolElementPtr > | deadSolvers |
| pointers to dead Solvers More... | |
| std::multimap< double, BbParaSolverPoolElementPtr > | candidatesOfCollectingModeSolvers |
| pointers to candidates of collecting mode Solvers More... | |
| BbParaSolverPoolElementPtr * | pool |
| Solver pool indexed by Solver's rank. More... | |
| SelectionHeap * | selectionHeap |
| pointers to active Solvers in ascending or descending order More... | |
| CollectingModeSolverHeap * | collectingModeSolverHeap |
| pointers to collecting mode Solvers in ascending or descending order More... | |
| double | switchOutTime |
| switch out time More... | |
| int | mCollectingNodes |
| multiplier for the number of collecting BbParaNodes More... | |
| int | mMaxCollectingNodes |
| maximum multiplier for the number of collecting BbParaNodes More... | |
| int | nDualBoundGainTesting |
| the number of dual bound gain testing Solvers More... | |
Protected Attributes inherited from ParaSolverPool | |
| int | originRank |
| origin rank of Solvers managed by this Solver pool More... | |
| std::size_t | nSolvers |
| number of Solvers More... | |
| ParaComm * | paraComm |
| communicator More... | |
| ParaParamSet * | paraParams |
| runtime parameters for parallelization More... | |
| ParaTimer * | paraTimer |
| timer More... | |
class BbParaSolverPoolForMinimization (Solver Pool for Minimization Problems)
Definition at line 2291 of file bbParaSolverPool.h.
| BbParaSolverPoolForMinimization | ( | double | inMp, |
| double | inBgap, | ||
| double | inMBgap, | ||
| int | inOriginRank, | ||
| ParaComm * | inParaComm, | ||
| ParaParamSet * | inParaParams, | ||
| ParaTimer * | inParaTimer | ||
| ) |
constructor
| inMp | multiplier of the threshold value p |
| inBgap | threshold value of gap |
| inMBgap | multiplier of the bgap value |
| inOriginRank | origin rank of Solvers managed by this Solver pool |
| inParaComm | communicator used |
| inParaParams | paraParamSet used |
| inParaTimer | timer used |
Definition at line 2299 of file bbParaSolverPool.h.
References BbParaSolverPool::collectingModeSolverHeap, ParaParamSet::getIntParamValue(), BbParaSolverPool::nMaxCollectingModeSolvers, ParaSolverPool::nSolvers, ParaSolverPool::paraParams, BbParaSolverPool::selectionHeap, and UG::SolverOrderInCollectingMode.
| BbParaSolverPoolForMinimization | ( | double | inMp, |
| double | inBgap, | ||
| double | inMBgap, | ||
| int | inNSolvers, | ||
| int | inOriginRank, | ||
| ParaComm * | inParaComm, | ||
| ParaParamSet * | inParaParams, | ||
| ParaTimer * | inParaTimer | ||
| ) |
constructor
| inMp | multiplier of the threshold value p |
| inBgap | threshold value of gap |
| inMBgap | multiplier of the bgap value |
| inNSolvers | number of solvers |
| inOriginRank | origin rank of Solvers managed by this Solver pool |
| inParaComm | communicator used |
| inParaParams | paraParamSet used |
| inParaTimer | timer used |
Definition at line 2321 of file bbParaSolverPool.h.
References BbParaSolverPool::collectingModeSolverHeap, ParaParamSet::getIntParamValue(), BbParaSolverPool::nMaxCollectingModeSolvers, ParaSolverPool::nSolvers, ParaSolverPool::paraParams, BbParaSolverPool::selectionHeap, and UG::SolverOrderInCollectingMode.
|
virtual |
destructor
Definition at line 2344 of file bbParaSolverPool.h.
References BbParaSolverPool::collectingModeSolverHeap, and BbParaSolverPool::selectionHeap.
|
virtual |
get global best dual bound value
Implements BbParaSolverPool.
Definition at line 2355 of file bbParaSolverPool.h.
References BbParaSolverPoolElement::getBestDualBoundValue(), SelectionHeap::getHeapSize(), BbParaSolverPool::selectionHeap, and SelectionHeap::top().
Referenced by BbParaLoadCoordinator::outputTabularSolvingStatus(), BbParaLoadCoordinator::processTagSolverState(), BbParaLoadCoordinator::sendParaTasksToIdleSolvers(), BbParaSolverPoolForMinimization::switchInCollectingMode(), and BbParaSolverPoolForMinimization::updateSolverStatus().
|
virtual |
switch in collecting mode
send switch in-collecting mode
| paraNodePool | pointer to BbParaNodePool object |
Implements BbParaSolverPool.
Definition at line 1563 of file bbParaSolverPool.cpp.
References BbParaSolverPool::activeSolvers, BbParaSolverPool::beforeFinishingFirstCollect, BbParaSolverPool::beforeInitialCollect, BbParaSolverPool::bgap, BbParaSolverPool::breakingFirstSubtree, BbParaSolverPool::candidatesOfCollectingModeSolvers, BbParaSolverPool::collectingMode, UG::CollectingModeInterval, BbParaSolverPool::collectingModeSolverHeap, UG::DualBoundGainTest, BbParaSolverPoolElement::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaTimer::getElapsedTime(), BbParaSolverPoolForMinimization::getGlobalBestDualBoundValue(), ParaParamSet::getIntParamValue(), BbParaSolverPool::getNumInactiveSolvers(), BbParaNodePool::getNumOfGoodNodes(), BbParaSolverPool::getNumOfNodesLeft(), ParaParamSet::getRealParamValue(), CollectingModeSolverHeap::insert(), BbParaNodePool::isEmpty(), BbParaSolverPool::mBgap, BbParaSolverPool::mCollectingNodes, BbParaSolverPool::mMaxCollectingNodes, UG::MultiplierForCollectingMode, UG::NChangeIntoCollectingMode, BbParaSolverPool::nCollectingModeSolvers, BbParaSolverPool::nLimitCollectingModeSolvers, UG::NMaxCanditatesForCollecting, PARA_COMM_CALL, UG::ParaBYTE, ParaSolverPool::paraComm, UG::ParaINT, ParaSolverPool::paraParams, ParaSolverPool::paraTimer, BbParaSolverPool::pool, BbParaSolverPool::selectionHeap, ParaComm::send(), BbParaSolverPool::sendSwitchOutCollectingModeIfNecessary(), BbParaSolverPoolElement::setCandidateOfCollecting(), BbParaSolverPoolElement::setCollectingMode(), SOLVER_POOL_INDEX, UG::SolverOrderInCollectingMode, BbParaSolverPool::switchOutTime, UG::TagInCollectingMode, UG::TagNoWaitModeSend, THROW_LOGICAL_ERROR2, and SelectionHeap::top().
Referenced by BbParaSolverPoolForMinimization::updateSolverStatus().
|
virtual |
update Solver status
| rank | rank of the Solver |
| numNodesSolved | number of nodes solved |
| numNodesLeft | number of nodes left |
| solverLocalBestBound | best bound value in the Solver |
| paraNodePool | pointer to BbParaNodePool object |
Implements BbParaSolverPool.
Definition at line 1964 of file bbParaSolverPool.cpp.
References BbParaSolverPool::absoluteGap, BbParaSolverPool::activeSolvers, BbParaSolverPool::bgap, BbParaSolverPool::breakingFirstSubtree, BbParaSolverPool::candidatesOfCollectingModeSolvers, BbParaSolverPool::collectingMode, BbParaSolverPool::collectingModeSolverHeap, BbParaSolverPoolElement::getBestDualBoundValue(), BbParaSolverPoolForMinimization::getGlobalBestDualBoundValue(), CollectingModeSolverHeap::getHeapSize(), ParaParamSet::getIntParamValue(), BbParaSolverPool::getNumInactiveSolvers(), BbParaNodePool::getNumOfGoodNodes(), BbParaSolverPoolElement::getNumOfNodesLeft(), BbParaSolverPoolElement::getRank(), ParaParamSet::getRealParamValue(), CollectingModeSolverHeap::insert(), BbParaSolverPoolElement::isCollectingProhibited(), BbParaNodePool::isEmpty(), BbParaSolverPoolElement::isGenerator(), BbParaSolverPoolElement::isInCollectingMode(), BbParaSolverPool::isInCollectingMode(), BbParaSolverPoolElement::isOutCollectingMode(), BbParaSolverPool::mBgap, BbParaSolverPool::mCollectingNodes, UG::MultiplierForCollectingMode, UG::NChangeIntoCollectingMode, BbParaSolverPool::nCollectingModeSolvers, BbParaSolverPool::nDualBoundGainTesting, BbParaSolverPool::nLimitCollectingModeSolvers, UG::NMaxCanditatesForCollecting, BbParaSolverPool::nNodesInSolvers, BbParaSolverPool::nNodesSolvedInSolvers, ParaSolverPool::nSolvers, PARA_COMM_CALL, UG::ParaBYTE, ParaSolverPool::paraComm, UG::ParaINT, ParaSolverPool::paraParams, BbParaSolverPool::pool, BbParaSolverPool::selectionHeap, ParaComm::send(), BbParaSolverPool::sendSwitchOutCollectingModeIfNecessary(), BbParaSolverPoolElement::setDualBoundGainTesting(), SOLVER_POOL_INDEX, BbParaSolverPoolForMinimization::switchInCollectingMode(), BbParaSolverPool::switchInCollectingToSolver(), BbParaSolverPool::switchOutCollectingMode(), BbParaSolverPool::switchOutTime, UG::TagInCollectingMode, UG::TagNoWaitModeSend, THROW_LOGICAL_ERROR2, THROW_LOGICAL_ERROR3, THROW_LOGICAL_ERROR4, SelectionHeap::top(), CollectingModeSolverHeap::top(), SelectionHeap::toString(), CollectingModeSolverHeap::toString(), SelectionHeap::updateDualBoundValue(), and CollectingModeSolverHeap::updateDualBoundValue().