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().