Scippy

UG

Ubiquity Generator framework

BbParaLoadCoordinator Class Reference

Class for LoadCoordinator. More...

#include <bbParaLoadCoordinator.h>

+ Inheritance diagram for BbParaLoadCoordinator:

Public Member Functions

 BbParaLoadCoordinator (int inNhanders, ParaComm *inComm, ParaParamSet *inParaParamSet, ParaInitiator *paraInitiator, bool *racingSolversExist, ParaTimer *paraTimer, ParaDeterministicTimer *detTimer)
 constructor More...
 
virtual ~BbParaLoadCoordinator ()
 destructor More...
 
virtual void run (ParaTask *paraNode)
 run for normal ramp-up More...
 
virtual void run (ParaTask *paraNode, int nRacingSolvers, ParaRacingRampUpParamSet **racingRampUpParams)
 run for racing ramp-up More...
 
void setGlobalBestIncumbentSolution (ParaSolution *sol)
 set global best incumbent solution More...
 
- Public Member Functions inherited from ParaLoadCoordinator
 ParaLoadCoordinator (int nHandlers, ParaComm *inComm, ParaParamSet *inParaParamSet, ParaInitiator *paraInitiator, bool *racingSolversExist, ParaTimer *paraTimer, ParaDeterministicTimer *detTimer)
 constructor More...
 
virtual ~ParaLoadCoordinator ()
 destructor More...
 
virtual void interrupt ()
 interrupt from out side More...
 
virtual void parallelDispatch ()
 execute UG parallel solver totally solver dependent way More...
 

Protected Types

typedef int(UG::BbParaLoadCoordinator::* BbMessageHandlerFunctionPointer) (int, int)
 
- Protected Types inherited from ParaLoadCoordinator
typedef int(UG::ParaLoadCoordinator::* MessageHandlerFunctionPointer) (int, int)
 

Protected Member Functions

void terminateAllSolvers ()
 terminate all solvers More...
 
virtual void sendRetryRampUpToAllSolvers ()
 notify retry ramp-up to all solvers More...
 
virtual void sendInterruptRequest ()
 send interrupt request to all solvers More...
 
virtual bool updateSolution (BbParaSolution *)
 update incumbent solution More...
 
virtual void sendIncumbentValue (int receivedRank)
 send incumbent value More...
 
virtual void sendCutOffValue (int receivedRank)
 send cut off value More...
 
virtual int processTagTask (int source, int tag)
 Message handlers. More...
 
virtual int processTagSolution (int source, int tag)
 function to process TagSolution message More...
 
virtual int processTagSolverState (int source, int tag)
 function to process TagSolverState message More...
 
virtual int processTagCompletionOfCalculation (int source, int tag)
 function to process TagCompletionOfCalculation message More...
 
virtual int processTagTermStateForInterruption (int source, int tag)
 function to process TagTermStateForInterruption message More...
 
virtual int processTagAnotherNodeRequest (int source, int tag)
 function to process TagAnotherNodeRequest message More...
 
virtual int processTagAllowToBeInCollectingMode (int source, int tag)
 function to process TagAllowToBeInCollectingMode message More...
 
virtual int processTagLbBoundTightened (int source, int tag)
 function to process TagLbBoundTightened message More...
 
virtual int processTagUbBoundTightened (int source, int tag)
 function to process TagUbBoundTightened message More...
 
virtual int processTagSelfSplitFinished (int source, int tag)
 function to process TagSelfSplitFinished message More...
 
virtual int processTagNewSubtreeRootNode (int source, int tag)
 function to process TagNewSubtreeRootNode message More...
 
virtual int processTagSubtreeRootNodeStartComputation (int source, int tag)
 function to process TagSubtreeRootNodeStartComputation message More...
 
virtual int processTagSubtreeRootNodeToBeRemoved (int source, int tag)
 function to process TagSubtreeRootNodeToBeRemoved message More...
 
virtual int processTagReassignSelfSplitSubtreeRootNode (int source, int tag)
 function to process TagReassignSelfSplitSubtreeRootNode message More...
 
virtual int processTagSelfSlpitNodeCalcuationState (int source, int tag)
 function to process TagSelfSlpitNodeCalcuationState message More...
 
virtual int processTagSelfSplitTermStateForInterruption (int source, int tag)
 function to process TagSelfSplitTermStateForInterruption message More...
 
virtual int processRacingRampUpTagSolverState (int source, int tag)
 message handlers specialized for racing ramp-up More...
 
virtual int processRacingRampUpTagCompletionOfCalculation (int source, int tag)
 function to process TagCompletionOfCalculation message in racing ramp-up stage More...
 
virtual void run ()
 run function to start main process More...
 
virtual bool sendParaTasksToIdleSolvers ()
 send ParaNodes to idle solvers More...
 
virtual void inactivateRacingSolverPool (int rank)
 inactivate racing solver pool More...
 
virtual void outputTabularSolvingStatusHeader ()
 output tabular solving status header More...
 
virtual void outputTabularSolvingStatus (char incumbent)
 output solving status in tabular form More...
 
virtual void writeSubtreeInfo (int source, ParaCalculationState *calcState)
 write subtree info. More...
 
virtual int restartRacing ()
 restart racing More...
 
virtual void newRacing ()
 start a new racing More...
 
virtual void changeSearchStrategyOfAllSolversToBestBoundSearch ()
 change search strategy of all solvers to best bound bound search strategy More...
 
virtual void changeSearchStrategyOfAllSolversToOriginalSearch ()
 change search strategy of all solvers to original search strategy More...
 
virtual bool isRacingStage ()
 check if current stage is in racing or not More...
 
virtual bool isGapReached ()
 check if Gap reached or not More...
 
- Protected Member Functions inherited from ParaLoadCoordinator
virtual void writeTransferLog (int rank, ParaCalculationState *state)
 write transfer log More...
 
virtual void writeTransferLog (int rank)
 write transfer log More...
 
virtual void writeTransferLogInRacing (int rank, ParaCalculationState *state)
 write transfer log in racing More...
 
virtual void writeTransferLogInRacing (int rank)
 write transfer log in racing More...
 
virtual void sendRampUpToAllSolvers ()
 notify ramp-up to all solvers More...
 
int createNewGlobalSubtreeId ()
 create a new global subtree Id More...
 
virtual int processTagTerminated (int source, int tag)
 function to process TagTerminated message More...
 
virtual int processTagHardTimeLimit (int source, int tag)
 function to process TagHardTimeLimit message More...
 
virtual int processTagToken (int source, int tag)
 function to process TagToken message More...
 
void sendTagToAllSolvers (const int tag)
 check if current stage is in racing or not More...
 

Protected Attributes

bool initialNodesGenerated
 indicates that initial nodes have been generated More...
 
int firstCollectingModeState
 status of first collecting mode -1 : have not been in collecting mode 0 : once in collecting mode 1 : collecting mode is terminated once More...
 
bool isCollectingModeRestarted
 this flag indicate if a collecting mode is restarted or not More...
 
bool isBreakingFinised
 indicate that breaking is finished or not if bootstrap ramp-up is not specified, this flag should be always true More...
 
int breakingSolverId
 all nodes collecting solver Id: -1: no collecting More...
 
int nReplaceToBetterNode
 the number of replacing to a better nodes More...
 
int nNormalSelection
 number of normal node selection to a random node selection More...
 
bool winnerSolverNodesCollected
 indicate that all winner solver nodes has been collected More...
 
bool primalUpdated
 indicate that primal solution was updated or not More...
 
bool restartingRacing
 indicate that racing ramp-up is restarting More...
 
int nRestartedRacing
 number of racing stages restarted More...
 
BbParaNodePoolparaNodePool
 Pools in LoadCorrdinator. More...
 
BbParaLoadCoordinatorTerminationState lcts
 LoadCoordinatorTerminationState: counters and times. More...
 
double statEmptyNodePoolTime
 To measure how long does node pool stay in empty situation. More...
 
int minDepthInWinnerSolverNodes
 racing winner information More...
 
int maxDepthInWinnerSolverNodes
 maximum depth of open nodes in the winner solver tree More...
 
bool merging
 for merging nodes More...
 
int nBoundChangesOfBestNode
 the number of fixed variables of the best node The followings are used temporary to generate merge nodes info More...
 
BbParaNodesMergernodesMerger
 pointer to nodes merger object, which merges nodes More...
 
size_t nCollectedSolvers
 counter to check if all solvers are terminated or not More...
 
double previousTabularOutputTime
 to keep tabular solving status output time More...
 
double averageDualBoundGain
 average dual bound gain: could be negative value at restart More...
 
int nAverageDualBoundGain
 number of nodes whose dual bound gain are counted More...
 
std::deque< double > lastSeveralDualBoundGains
 keep last several dual bound gains More...
 
double averageLastSeveralDualBoundGains
 average dual bound gains of last several ones More...
 
double starvingTime
 start time of starving active solvers More...
 
double hugeImbalanceTime
 start time of huge imbalance situation More...
 
BbParaNodePoolparaNodePoolToRestart
 ParaNode pool to restart in ramp-down phase. More...
 
BbParaNodePoolparaNodePoolBufferToRestart
 ParaNode pool for buffering ParaNodes in huge imbalance situation. More...
 
BbParaNodePoolparaNodePoolBufferToGenerateCPF
 This is used for GenerateReducedCheckpointFiles. More...
 
BbParaNodePoolparaNodeToKeepCheckpointFileNodes
 The first n nodes may always keep in checkpoint file, that is, the n nodes are not processed in this run. More...
 
BbParaNodePoolunprocessedParaNodes
 The last n nodes may always keep in checkpoint file, that is, the n nodes are not processed in this run. More...
 
std::set< int > * selfSplitFinisedSolvers
 indicate selfSplit finished solvers More...
 
bool outputTabularSolvingStatusFlag
 output streams and flags which indicate the output is specified or not More...
 
std::ofstream ofsTabularSolvingStatus
 ofstream for solving status in tabular form More...
 
std::ostream * osTabularSolvingStatus
 ostream for solving status in tabular form to switch output location More...
 
bool logSubtreeInfoFlag
 indicate if subtree info. is logged or not More...
 
std::ofstream ofsLogSubtreeInfo
 ofstream for subtree info. More...
 
std::ostream * osLogSubtreeInfo
 ostram for subtree info. to switch output location More...
 
bool allCompInfeasibleAfterSolution
 indicate that all computations are infeasible after a feasible solution More...
 
double minmalDualBoundNormalTermSolvers
 minimal dual bound for normal termination solvers More...
 
bool warmStartNodeTransferring
 indicate that the first node transferring at warm start (restart) More...
 
bool hugeImbalance
 indicate that a huge imbalance in solvers is detected More...
 
bool isHeaderPrinted
 indicate if heeader is printed or not More...
 
bool givenGapIsReached
 shows if specified gap is reached or not More...
 
bool aSolverTerminatedWithOptimality
 indicate if a solver terminated with proving optimality of the problem More...
 
BbParaSolutionpendingSolution
 pending solution during merging More...
 
- Protected Attributes inherited from ParaLoadCoordinator
int nHandlers
 number of valid handlers More...
 
MessageHandlerFunctionPointermessageHandler
 message handlers table for primary phase More...
 
MessageHandlerFunctionPointerracingRampUpMessageHandler
 message handlers table for racing stage More...
 
int globalSubtreeIdGen
 global subtree id generator More...
 
ParaCommparaComm
 communicator used More...
 
ParaParamSetparaParams
 UG parameter set. More...
 
ParaInitiatorparaInitiator
 initiator More...
 
bool * racingSolversExist
 indicate if racing solver exits or not, true: exists More...
 
bool restarted
 indicates that this run is restarted from checkpoint files More...
 
RunningPhase runningPhase
 status of LoadCoordinator More...
 
bool computationIsInterrupted
 indicate that current computation is interrupted or not More...
 
bool interruptedFromControlTerminal
 interrupted from control terminal More...
 
bool hardTimeLimitIsReached
 indicate that hard time limit is reached or not More...
 
bool memoryLimitIsReached
 indicate if memory limit is reached or not in a solver, when base solver has memory management feature More...
 
bool interruptIsRequested
 indicate that all solver interrupt message is requested or not More...
 
ParaSolverPoolparaSolverPool
 Pools in LoadCorrdinator. More...
 
ParaRacingSolverPoolparaRacingSolverPool
 racing solver pool More...
 
long long nSolvedInInterruptedRacingSolvers
 number of tasks solved of the winner solver in the racing solvers More...
 
long long nTasksLeftInInterruptedRacingSolvers
 number of of tasks remains of the the winner solver in the racing solvers More...
 
double previousCheckpointTime
 For checkpoint. More...
 
char lastCheckpointTimeStr [26]
 lastCheckpointTimeStr[0] == ' ' means no checkpoint More...
 
double eps
 epsilon More...
 
int racingWinner
 racing winner information More...
 
ParaRacingRampUpParamSetracingWinnerParams
 racing winner parameter set More...
 
bool racingTermination
 racing termination information More...
 
int nSolvedRacingTermination
 number of tasks solved at the racing termination solver More...
 
size_t nTerminated
 counter to check if all solvers are terminated or not More...
 
ParaTimerparaTimer
 Timers for LoadCoordinator. More...
 
ParaDeterministicTimerparaDetTimer
 deterministic timer used in case of deterministic mode this timer need to be created in case of deterministic mode More...
 
bool logSolvingStatusFlag
 output streams and flags which indicate the output is specified or not More...
 
std::ofstream ofsLogSolvingStatus
 ofstream for solving status More...
 
std::ostream * osLogSolvingStatus
 ostram for solving status to switch output location More...
 
bool logTasksTransferFlag
 indicate if task transfer info. is logged or not More...
 
std::ofstream ofsLogTasksTransfer
 ofstream for task transfer info. More...
 
std::ostream * osLogTasksTransfer
 ostream for task transfer info. to switch output location More...
 
std::ofstream ofsStatisticsFinalRun
 ofstream for statistics of the final run More...
 
std::ostream * osStatisticsFinalRun
 ostream for statistics of the final run More...
 
std::ofstream ofsStatisticsRacingRampUp
 ofstream for statistics for racing solvers More...
 
std::ostream * osStatisticsRacingRampUp
 ostream for statistics for racing solvers to switch output location More...
 
ParaSolutionpendingSolution
 pending solution during merging More...
 
bool terminationIssued
 indicate termination request is issued More...
 
std::mutex routineMutex
 used to exclusive control of routines More...
 

Detailed Description

Class for LoadCoordinator.

Definition at line 77 of file bbParaLoadCoordinator.h.

Member Typedef Documentation

◆ BbMessageHandlerFunctionPointer

typedef int(UG::BbParaLoadCoordinator::* BbMessageHandlerFunctionPointer) (int, int)
protected

Definition at line 82 of file bbParaLoadCoordinator.h.

Constructor & Destructor Documentation

◆ BbParaLoadCoordinator()

BbParaLoadCoordinator ( int  inNhanders,
ParaComm inComm,
ParaParamSet inParaParamSet,
ParaInitiator paraInitiator,
bool *  racingSolversExist,
ParaTimer paraTimer,
ParaDeterministicTimer detTimer 
)

constructor

register message handlers

Parameters
inNhandersnumber of valid message handlers
inCommcommunicator used
inParaParamSetUG parameter set used
paraInitiatorParaInitiator for initialization of solving algorithm
racingSolversExistindicate racing solver exits or not
paraTimerParaTimer used
detTimerDeterministicTimer used

Definition at line 61 of file bbParaLoadCoordinator.cpp.

References UG::BgapCollectingMode, UG::CleanUp, UG::CollectOnce, UG::CommunicateTighterBoundsInRacing, UG::Deterministic, UG::DualBoundGainTest, UG::EnhancedCheckpointStartTime, UG::EnhancedFinalCheckpoint, EPSEQ, UG::FinalCheckpointGeneratingTime, UG::FinalCheckpointNSolvers, UG::GenerateReducedCheckpointFiles, ParaParamSet::getBoolParamValue(), ParaTimer::getElapsedTime(), ParaParamSet::getIntParamValue(), ParaSolverPool::getNSolvers(), ParaInitiator::getParaInstance(), ParaInitiator::getPrefixWarm(), ParaInstance::getProbName(), ParaComm::getRank(), ParaParamSet::getRealParamValue(), ParaComm::getSize(), ParaParamSet::getStringParamValue(), BbParaLoadCoordinator::isBreakingFinised, UG::LogSolvingStatusFilePath, ParaLoadCoordinator::logSolvingStatusFlag, UG::LogSubtreeInfo, BbParaLoadCoordinator::logSubtreeInfoFlag, UG::MergeNodesAtRestart, ParaLoadCoordinator::messageHandler, MINEPSILON, UG::MultiplierForBgapCollectingMode, UG::MultiplierForCollectingMode, BbParaLoadCoordinator::nBoundChangesOfBestNode, UG::NBoundChangesOfMergeNode, UG::NChangeIntoCollectingMode, UG::NChangeIntoCollectingModeNSolvers, ParaLoadCoordinator::nHandlers, BbParaLoadCoordinator::nNormalSelection, UG::NSolverNodesStartBreaking, UG::NStopBreaking, BbParaLoadCoordinator::ofsLogSubtreeInfo, BbParaLoadCoordinator::ofsTabularSolvingStatus, ParaLoadCoordinator::osLogSolvingStatus, BbParaLoadCoordinator::osLogSubtreeInfo, BbParaLoadCoordinator::osTabularSolvingStatus, UG::OutputTabularSolvingStatus, BbParaLoadCoordinator::outputTabularSolvingStatusFlag, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolBufferToGenerateCPF, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, BbParaLoadCoordinator::processRacingRampUpTagCompletionOfCalculation(), BbParaLoadCoordinator::processRacingRampUpTagSolverState(), BbParaLoadCoordinator::processTagAllowToBeInCollectingMode(), BbParaLoadCoordinator::processTagAnotherNodeRequest(), ParaLoadCoordinator::processTagHardTimeLimit(), BbParaLoadCoordinator::processTagLbBoundTightened(), BbParaLoadCoordinator::processTagNewSubtreeRootNode(), BbParaLoadCoordinator::processTagReassignSelfSplitSubtreeRootNode(), BbParaLoadCoordinator::processTagSelfSlpitNodeCalcuationState(), BbParaLoadCoordinator::processTagSelfSplitFinished(), BbParaLoadCoordinator::processTagSelfSplitTermStateForInterruption(), BbParaLoadCoordinator::processTagSolution(), BbParaLoadCoordinator::processTagSubtreeRootNodeStartComputation(), BbParaLoadCoordinator::processTagSubtreeRootNodeToBeRemoved(), ParaLoadCoordinator::processTagTerminated(), BbParaLoadCoordinator::processTagTermStateForInterruption(), ParaLoadCoordinator::processTagToken(), BbParaLoadCoordinator::processTagUbBoundTightened(), UG::Quiet, ParaLoadCoordinator::racingRampUpMessageHandler, UG::RampUpPhaseProcess, UG::RandomNodeSelectionRatio, BbParaLoadCoordinator::selfSplitFinisedSolvers, ParaParamSet::setRealParamValue(), UG::TagAllowToBeInCollectingMode, UG::TagAnotherNodeRequest, UG::TagCompletionOfCalculation, UG::TagHardTimeLimit, UG::TagLbBoundTightenedIndex, UG::TagNewSubtreeRootNode, UG::TagReassignSelfSplitSubtreeRootNode, UG::TagSelfSlpitNodeCalcuationState, UG::TagSelfSplitFinished, UG::TagSelfSplitTermStateForInterruption, UG::TagSolution, UG::TagSolverState, UG::TagSubtreeRootNodeStartComputation, UG::TagSubtreeRootNodeToBeRemoved, UG::TagTerminated, UG::TagTermStateForInterruption, UG::TagToken, UG::TagUbBoundTightenedIndex, UG::TimeLimit, and BbParaLoadCoordinator::winnerSolverNodesCollected.

Referenced by BbParaLoadCoordinator::isGapReached().

◆ ~BbParaLoadCoordinator()

~BbParaLoadCoordinator ( )
virtual

destructor

write final solution

this function cannot be overwritten, should turn off outputTabularSolvingStatusFlag, before destruct

Definition at line 375 of file bbParaLoadCoordinator.cpp.

References ABORT_LOGICAL_ERROR1, ABORT_LOGICAL_ERROR3, BbParaLoadCoordinator::allCompInfeasibleAfterSolution, ParaLoadCoordinator::computationIsInterrupted, UG::ComputingWasInterrupted, BbParaInitiator::convertToExternalValue(), BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, BbParaNodePool::extractNode(), UG::FinalCheckpointGeneratingTime, UG::GenerateReducedCheckpointFiles, BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaTimer::getElapsedTime(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), BbParaNodePool::getMaxUsageOfPool(), ParaSolverPool::getNSolvers(), ParaSolverPool::getNumActiveSolvers(), ParaRacingSolverPool::getNumActiveSolvers(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), ParaParamSet::getRealParamValue(), BbParaSolverPool::getTotalNodesSolved(), UG::GivenGapIsReached, BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, UG::HardTimeLimitIsReached, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinatorTerminationState::idleTime, UG::InitialNodesGenerated, BbParaLoadCoordinator::initialNodesGenerated, BbParaNodePool::insert(), ParaLoadCoordinator::interruptedFromControlTerminal, ParaLoadCoordinator::interruptIsRequested, ParaLoadCoordinatorTerminationState::isCheckpointState, BbParaNodePool::isEmpty(), BbParaLoadCoordinator::isRacingStage(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, ParaLoadCoordinator::logTasksTransferFlag, UG::MemoryLimitIsReached, ParaLoadCoordinator::memoryLimitIsReached, ParaLoadCoordinator::messageHandler, BbParaLoadCoordinator::minmalDualBoundNormalTermSolvers, BbParaLoadCoordinatorTerminationState::mMaxCollectingNodes, UG::NChangeIntoCollectingMode, BbParaLoadCoordinatorTerminationState::nDeletedInLc, BbParaLoadCoordinatorTerminationState::nFailedToSendBack, BbParaLoadCoordinatorTerminationState::nFailedToSendBackAnotherNode, BbParaLoadCoordinatorTerminationState::nInitialP, BbParaLoadCoordinatorTerminationState::nMaxUsageOfNodePool, BbParaLoadCoordinatorTerminationState::nNodesInNodePool, BbParaLoadCoordinatorTerminationState::nNodesLeftInAllSolvers, BbParaLoadCoordinator::nodesMerger, ParaLoadCoordinatorTerminationState::nReceived, ParaLoadCoordinatorTerminationState::nSent, BbParaLoadCoordinatorTerminationState::nSentBackImmediately, BbParaLoadCoordinatorTerminationState::nSentBackImmediatelyAnotherNode, ParaLoadCoordinator::nSolvedRacingTermination, ParaLoadCoordinator::nTerminated, ParaLoadCoordinator::osLogSolvingStatus, ParaLoadCoordinator::osLogTasksTransfer, ParaLoadCoordinator::osStatisticsFinalRun, BbParaLoadCoordinator::osTabularSolvingStatus, ParaInitiator::outputFinalSolverStatistics(), BbParaLoadCoordinator::outputTabularSolvingStatus(), BbParaLoadCoordinator::outputTabularSolvingStatusFlag, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolBufferToGenerateCPF, BbParaLoadCoordinator::paraNodePoolBufferToRestart, BbParaLoadCoordinator::paraNodePoolToRestart, BbParaLoadCoordinator::paraNodeToKeepCheckpointFileNodes, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, ParaComm::probe(), UG::ProblemWasSolved, ParaLoadCoordinator::racingSolversExist, ParaLoadCoordinator::racingTermination, ParaLoadCoordinator::racingWinnerParams, UG::RequestedSubProblemsWereSolved, ParaLoadCoordinator::runningPhase, BbParaLoadCoordinatorTerminationState::runningTime, BbParaInitiator::setDualBound(), BbParaInitiator::setFinalSolverStatus(), BbParaInitiator::setNumberOfNodesSolved(), UG::StatisticsToStdout, BbParaLoadCoordinator::terminateAllSolvers(), UG::TerminationPhase, BbParaLoadCoordinatorTerminationState::toString(), BbParaLoadCoordinator::unprocessedParaNodes, and ParaInitiator::writeSolution().

Referenced by BbParaLoadCoordinator::isGapReached().

Member Function Documentation

◆ changeSearchStrategyOfAllSolversToBestBoundSearch()

void changeSearchStrategyOfAllSolversToBestBoundSearch ( )
protectedvirtual

change search strategy of all solvers to best bound bound search strategy

Definition at line 7210 of file bbParaLoadCoordinator.cpp.

Referenced by BbParaLoadCoordinator::run().

◆ changeSearchStrategyOfAllSolversToOriginalSearch()

◆ inactivateRacingSolverPool()

◆ isGapReached()

◆ isRacingStage()

◆ newRacing()

◆ outputTabularSolvingStatus()

void outputTabularSolvingStatus ( char  incumbent)
protectedvirtual

output solving status in tabular form

racing ramp-up stage now

Parameters
incumbentcharacter to show incumbent is obtained '*', if it is not incumbnet ' '

Definition at line 3800 of file bbParaLoadCoordinator.cpp.

References BbParaInitiator::convertToExternalValue(), UG::displayInfOverThisValue, EPSEQ, BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, UG::GenerateReducedCheckpointFiles, BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaTimer::getElapsedTime(), ParaInitiator::getEpsilon(), BbParaInitiator::getGap(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), ParaSolverPool::getNumActiveSolvers(), ParaRacingSolverPool::getNumActiveSolvers(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, BbParaLoadCoordinator::lcts, ParaLoadCoordinator::nSolvedInInterruptedRacingSolvers, ParaLoadCoordinator::nSolvedRacingTermination, ParaLoadCoordinator::nTasksLeftInInterruptedRacingSolvers, BbParaLoadCoordinator::osTabularSolvingStatus, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodeToKeepCheckpointFileNodes, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, ParaLoadCoordinator::racingTermination, ParaLoadCoordinator::racingWinnerParams, UG::RampUpPhaseProcess, and BbParaLoadCoordinator::unprocessedParaNodes.

Referenced by BbParaLoadCoordinator::changeSearchStrategyOfAllSolversToOriginalSearch(), BbParaLoadCoordinator::processRacingRampUpTagCompletionOfCalculation(), BbParaLoadCoordinator::processTagSolution(), BbParaLoadCoordinator::run(), and BbParaLoadCoordinator::~BbParaLoadCoordinator().

◆ outputTabularSolvingStatusHeader()

void outputTabularSolvingStatusHeader ( )
protectedvirtual

output tabular solving status header

Definition at line 3770 of file bbParaLoadCoordinator.cpp.

References BbParaLoadCoordinator::isHeaderPrinted, and BbParaLoadCoordinator::osTabularSolvingStatus.

Referenced by BbParaLoadCoordinator::run().

◆ processRacingRampUpTagCompletionOfCalculation()

int processRacingRampUpTagCompletionOfCalculation ( int  source,
int  tag 
)
protectedvirtual

function to process TagCompletionOfCalculation message in racing ramp-up stage

Returns
always 0 (for extension)
Parameters
sourcesource solver rank
tagTagCompletionOfCalculation

Implements ParaLoadCoordinator.

Definition at line 6130 of file bbParaLoadCoordinator.cpp.

References UG::CommunicateTighterBoundsInRacing, UG::CompInterruptedInRacingStage, UG::CompTerminatedByAnotherTask, UG::CompTerminatedByInterruptRequest, UG::CompTerminatedByMemoryLimit, UG::CompTerminatedByTimeLimit, UG::CompTerminatedInRacingStage, BbParaInitiator::convertToExternalValue(), ParaComm::createParaCalculationState(), ParaComm::createParaSolverTerminationState(), EPSEQ, EPSLE, BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, BbParaCalculationState::getAverageNodeCompTimeExcpetRoot(), BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaCalculationState::getCompTime(), ParaSolverTerminationState::getDeterministicTime(), BbParaCalculationState::getDualBoundValue(), ParaDeterministicTimer::getElapsedTime(), ParaTimer::getElapsedTime(), ParaInitiator::getEpsilon(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), BbParaCalculationState::getNRestarts(), ParaCalculationState::getNSolved(), ParaRacingSolverPool::getNumActiveSolvers(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), BbParaCalculationState::getRootTime(), BbParaCalculationState::getTerminationState(), BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinator::inactivateRacingSolverPool(), BbParaNodePool::isEmpty(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, ParaLoadCoordinator::memoryLimitIsReached, BbParaLoadCoordinator::minmalDualBoundNormalTermSolvers, BbParaLoadCoordinator::newRacing(), ParaLoadCoordinator::nSolvedRacingTermination, UG::OmitInfeasibleTerminationInRacing, UG::OmitTerminationNSolutionsInRacing, ParaLoadCoordinator::osLogSolvingStatus, ParaLoadCoordinator::osStatisticsRacingRampUp, BbParaLoadCoordinator::outputTabularSolvingStatus(), BbParaLoadCoordinator::outputTabularSolvingStatusFlag, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraDetTimer, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraTimer, UG::Quiet, ParaLoadCoordinator::racingTermination, ParaCalculationState::receive(), ParaSolverTerminationState::receive(), ParaComm::send(), UG::StatisticsToStdout, UG::TagAckCompletion, UG::TagTermStateForInterruption, BbParaLoadCoordinator::terminateAllSolvers(), THROW_LOGICAL_ERROR2, ParaSolverTerminationState::toString(), ParaDeterministicTimer::update(), UG::WaitTerminationOfThreads, BbParaLoadCoordinator::warmStartNodeTransferring, and ParaLoadCoordinator::writeTransferLogInRacing().

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processRacingRampUpTagSolverState()

int processRacingRampUpTagSolverState ( int  source,
int  tag 
)
protectedvirtual

message handlers specialized for racing ramp-up

function to process TagSolverState message in racing ramp-up stage

Returns
always 0 (for extension)

the following should be before noticationId back to the source solver

Parameters
sourcesource solver rank
tagTagSolverState

Implements ParaLoadCoordinator.

Definition at line 5958 of file bbParaLoadCoordinator.cpp.

References ParaComm::createParaSolverState(), UG::displayInfOverThisValue, UG::DistributeBestPrimalSolution, BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), BbParaSolverState::getDeterministicTime(), ParaDeterministicTimer::getElapsedTime(), ParaTimer::getElapsedTime(), BbParaSolverState::getGlobalBestPrimalBoundValue(), BbParaSolverState::getNNodesLeft(), BbParaSolverState::getNNodesSolved(), BbParaSolverState::getNotificaionId(), ParaRacingSolverPool::getNSolvers(), BbParaNodePool::getNumOfNodes(), BbParaSolverState::getSolverLocalBestDualBoundValue(), BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, ParaSolverPool::interruptRequested(), ParaSolverPool::isInterruptRequested(), BbParaSolverState::isRacingStage(), ParaRacingSolverPool::isSolverActive(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, UG::NoUpperBoundTransferInRacing, ParaLoadCoordinator::osLogSolvingStatus, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraDetTimer, UG::ParaDOUBLE, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, UG::ParaUNSIGNED, ParaSolverState::receive(), BbParaLoadCoordinator::restartingRacing, ParaComm::send(), UG::TagGivenGapIsReached, UG::TagLCBestBoundValue, UG::TagNotificationId, and ParaDeterministicTimer::update().

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processTagAllowToBeInCollectingMode()

int processTagAllowToBeInCollectingMode ( int  source,
int  tag 
)
protectedvirtual

function to process TagAllowToBeInCollectingMode message

Returns
always 0 (for extension)
Parameters
sourcesource solver rank
tagTagAllowToBeInCollectingMode

Definition at line 2702 of file bbParaLoadCoordinator.cpp.

References PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraSolverPool, ParaComm::receive(), and UG::TagAllowToBeInCollectingMode.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processTagAnotherNodeRequest()

int processTagAnotherNodeRequest ( int  source,
int  tag 
)
protectedvirtual

function to process TagAnotherNodeRequest message

Returns
always 0 (for extension)
Parameters
sourcesource solver rank
tagTagAnotherNodeRequest

Definition at line 2569 of file bbParaLoadCoordinator.cpp.

References BbParaLoadCoordinator::averageLastSeveralDualBoundGains, UG::BgapStopSolvingMode, UG::displayInfOverThisValue, BbParaNodePool::extractNode(), BbParaNodePool::getBestDualBoundValue(), BbParaNode::getDiffSubproblem(), BbParaNode::getDualBoundValue(), ParaTimer::getElapsedTime(), BbParaNode::getMergeNodeInfo(), BbParaNodePool::getNumOfGoodNodes(), ParaParamSet::getRealParamValue(), BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, BbParaNodePool::insert(), BbParaNodePool::isEmpty(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, BbParaNodesMerger::mergeNodes(), BbParaLoadCoordinatorTerminationState::nDeletedInLc, BbParaLoadCoordinatorTerminationState::nFailedToSendBackAnotherNode, BbParaLoadCoordinator::nodesMerger, ParaLoadCoordinatorTerminationState::nSent, BbParaLoadCoordinatorTerminationState::nSentBackImmediatelyAnotherNode, ParaLoadCoordinator::osLogSolvingStatus, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, UG::ParaDOUBLE, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, REALABS, ParaComm::receive(), ParaComm::send(), BbParaNode::setDualBoundValue(), BbParaNode::setInitialDualBoundValue(), UG::TagAnotherNodeRequest, UG::TagNoNodes, and ParaLoadCoordinator::writeTransferLog().

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processTagCompletionOfCalculation()

int processTagCompletionOfCalculation ( int  source,
int  tag 
)
protectedvirtual

function to process TagCompletionOfCalculation message

Returns
always 0 (for extension)

When starts with racing ramp-up, solvers except winner should be terminated in this state

in this case the following two numbers should be different

Total > # Solved

when it is the first solver terminated (this have to be checked very carefully for restart racing (no debug)

Parameters
sourcesource solver rank
tagTagCompletionOfCalculation

Implements ParaLoadCoordinator.

Definition at line 1730 of file bbParaLoadCoordinator.cpp.

References BbParaLoadCoordinator::allCompInfeasibleAfterSolution, BbParaNode::areNodesCollected(), UG::CheckEffectOfRootNodePreprocesses, UG::CompInterruptedInMerging, UG::CompInterruptedInRacingStage, UG::CompTerminatedByAnotherTask, UG::CompTerminatedByInterruptRequest, UG::CompTerminatedByMemoryLimit, UG::CompTerminatedByTimeLimit, UG::CompTerminatedInRacingStage, UG::CompTerminatedNormally, BbParaInitiator::convertToExternalValue(), ParaComm::createParaCalculationState(), UG::Deterministic, UG::EnhancedCheckpointInterval, UG::EnhancedFinalCheckpoint, EPSEQ, EPSLE, BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, UG::FinalCheckpointGeneratingTime, BbParaNodesMerger::generateMergeNodesCandidates(), UG::GenerateReducedCheckpointFiles, BbParaInitiator::getAbsgap(), BbParaInitiator::getAbsgapValue(), BbParaNode::getAncestor(), BbParaCalculationState::getAverageNodeCompTimeExcpetRoot(), BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaCalculationState::getCompTime(), ParaSolverPool::getCurrentTask(), BbParaCalculationState::getDualBoundValue(), BbParaNode::getDualBoundValue(), ParaTimer::getElapsedTime(), ParaInitiator::getEpsilon(), BbParaInitiator::getGap(), BbParaInitiator::getGapValue(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), BbParaNode::getMergeNodeInfo(), BbParaCalculationState::getNRestarts(), BbParaCalculationState::getNSent(), ParaCalculationState::getNSolved(), BbParaCalculationState::getNSolvedWithNoPreprocesses(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), ParaParamSet::getRealParamValue(), BbParaCalculationState::getRootTime(), BbParaCalculationState::getTerminationState(), BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinator::initialNodesGenerated, UG::InitialNodesGeneration, BbParaNodePool::insert(), ParaRacingSolverPool::isSolverActive(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, ParaLoadCoordinator::memoryLimitIsReached, BbParaNodesMerger::mergeNodes(), BbParaLoadCoordinator::merging, BbParaLoadCoordinator::minmalDualBoundNormalTermSolvers, BbParaLoadCoordinator::nCollectedSolvers, BbParaLoadCoordinator::nodesMerger, ParaLoadCoordinator::nSolvedRacingTermination, UG::NumberOfInitialNodes, ParaLoadCoordinator::osLogSolvingStatus, ParaLoadCoordinator::osStatisticsRacingRampUp, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraInitiator, UG::ParaINT, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolBufferToRestart, BbParaLoadCoordinator::paraNodePoolToRestart, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, ParaLoadCoordinator::racingTermination, ParaLoadCoordinator::racingWinner, ParaCalculationState::receive(), BbParaNodesMerger::regenerateMergeNodesCandidates(), ParaLoadCoordinator::runningPhase, ParaComm::send(), BbParaLoadCoordinator::sendInterruptRequest(), BbParaNode::setDualBoundValue(), UG::TagTerminateRequest, UG::TagToken, ParaSolverPool::terminateRequested(), UG::TerminationPhase, THROW_LOGICAL_ERROR2, BbParaNode::toSimpleString(), BbParaLoadCoordinator::winnerSolverNodesCollected, BbParaLoadCoordinator::writeSubtreeInfo(), ParaLoadCoordinator::writeTransferLog(), and ParaLoadCoordinator::writeTransferLogInRacing().

◆ processTagLbBoundTightened()

int processTagLbBoundTightened ( int  source,
int  tag 
)
protectedvirtual

◆ processTagNewSubtreeRootNode()

◆ processTagReassignSelfSplitSubtreeRootNode()

◆ processTagSelfSlpitNodeCalcuationState()

int processTagSelfSlpitNodeCalcuationState ( int  source,
int  tag 
)
protectedvirtual

function to process TagSelfSlpitNodeCalcuationState message

Returns
always 0 (for extension)

When starts with racing ramp-up, solvers except winner should be terminated in this state

When starts with racing ramp-up, solvers except winner should be terminated in this state

in this case the following two numbers should be different

Total > # Solved

Parameters
sourcesource solver rank
tagTagSelfSlpitNodeCalcuationState

Definition at line 2996 of file bbParaLoadCoordinator.cpp.

References BbParaSolverPool::addTotalNodesSolved(), BbParaLoadCoordinator::allCompInfeasibleAfterSolution, BbParaNode::areNodesCollected(), UG::CompTerminatedByAnotherTask, UG::CompTerminatedByInterruptRequest, UG::CompTerminatedByMemoryLimit, UG::CompTerminatedByTimeLimit, UG::CompTerminatedNormally, BbParaInitiator::convertToExternalValue(), ParaComm::createParaCalculationState(), BbParaSolverPool::deleteCurrentSubtreeRootNode(), UG::Deterministic, UG::EnhancedCheckpointInterval, UG::EnhancedFinalCheckpoint, EPSEQ, EPSLE, UG::FinalCheckpointGeneratingTime, BbParaCalculationState::getAverageNodeCompTimeExcpetRoot(), ParaParamSet::getBoolParamValue(), ParaCalculationState::getCompTime(), BbParaSolverPool::getCurrentTask(), BbParaNode::getDiffSubproblem(), BbParaCalculationState::getDualBoundValue(), BbParaNode::getDualBoundValue(), ParaTimer::getElapsedTime(), ParaInitiator::getEpsilon(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), BbParaCalculationState::getNRestarts(), BbParaCalculationState::getNSelfSplitNodesLeft(), BbParaCalculationState::getNSent(), ParaCalculationState::getNSolved(), BbParaSolution::getObjectiveFunctionValue(), ParaParamSet::getRealParamValue(), BbParaCalculationState::getRootTime(), BbParaSolverPool::getSelfSplitSubtreeRootNodes(), BbParaSolverPool::getSwichOutTime(), BbParaCalculationState::getTerminationState(), BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaNodePool::insert(), ParaRacingSolverPool::isSolverActive(), BbParaSolverPool::isSolverInCollectingMode(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, ParaLoadCoordinator::memoryLimitIsReached, BbParaLoadCoordinator::minmalDualBoundNormalTermSolvers, BbParaLoadCoordinator::nCollectedSolvers, BbParaNode::next, ParaLoadCoordinator::osLogSolvingStatus, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraInitiator, UG::ParaINT, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolToRestart, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, ParaCalculationState::receive(), BbParaSolverPool::resetCountersInSolver(), ParaLoadCoordinator::runningPhase, ParaComm::send(), BbParaLoadCoordinator::sendInterruptRequest(), BbParaSolverPool::setSwichOutTime(), BbParaSolverPool::switchInCollectingMode(), BbParaSolverPool::switchOutCollectingMode(), UG::TagTerminateRequest, UG::TagToken, ParaSolverPool::terminateRequested(), UG::TerminationPhase, THROW_LOGICAL_ERROR2, BbParaNode::toSimpleString(), ParaTask::toSimpleString(), BbParaLoadCoordinator::writeSubtreeInfo(), and ParaLoadCoordinator::writeTransferLog().

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processTagSelfSplitFinished()

int processTagSelfSplitFinished ( int  source,
int  tag 
)
protectedvirtual

function to process TagSelfSplitFinished message

Returns
always 0 (for extension)
Parameters
sourcesource solver rank
tagTagSelfSplitFinished

Definition at line 2797 of file bbParaLoadCoordinator.cpp.

References PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaComm::receive(), BbParaLoadCoordinator::selfSplitFinisedSolvers, and UG::TagSelfSplitFinished.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processTagSelfSplitTermStateForInterruption()

int processTagSelfSplitTermStateForInterruption ( int  source,
int  tag 
)
protectedvirtual

function to process TagSelfSplitTermStateForInterruption message

Returns
always 0 (for extension)

checkpoint; This is normal termination

in order to save termination status to check point file, keep this information to solver pool

unexpected mode

Parameters
sourcesource solver rank
tagTagSelfSplitTermStateForInterruption

Definition at line 3697 of file bbParaLoadCoordinator.cpp.

References UG::CompTerminatedByMemoryLimit, UG::CompTerminatedByTimeLimit, ParaComm::createParaSolverTerminationState(), BbParaLoadCoordinator::firstCollectingModeState, ParaSolverTerminationState::getDeterministicTime(), ParaDeterministicTimer::getElapsedTime(), ParaSolverTerminationState::getInterruptedMode(), ParaLoadCoordinator::hardTimeLimitIsReached, BbParaNodePool::isEmpty(), ParaSolverPool::isTerminateRequested(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::memoryLimitIsReached, BbParaLoadCoordinatorTerminationState::nFailedToSendBack, BbParaLoadCoordinatorTerminationState::nSentBackImmediately, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraDetTimer, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolToRestart, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, UG::RampUpPhase, ParaSolverTerminationState::receive(), ParaLoadCoordinator::runningPhase, ParaComm::send(), BbParaLoadCoordinator::sendParaTasksToIdleSolvers(), UG::TagAckCompletion, UG::TagSelfSplitTermStateForInterruption, UG::TerminationPhase, THROW_LOGICAL_ERROR4, and ParaDeterministicTimer::update().

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processTagSolution()

int processTagSolution ( int  source,
int  tag 
)
protectedvirtual

◆ processTagSolverState()

int processTagSolverState ( int  source,
int  tag 
)
protectedvirtual

function to process TagSolverState message

Returns
always 0 (for extension)

not update paraSolverPool. The solver is inactive in paraSolverPool

log the number of nodes transfer

the following should be before noticationId back to the source solver

Parameters
sourcesource solver rank
tagTagSolverState

Implements ParaLoadCoordinator.

Definition at line 1098 of file bbParaLoadCoordinator.cpp.

References UG::ABgapForSwitchingToBestSolver, BbParaLoadCoordinator::averageDualBoundGain, BbParaLoadCoordinator::averageLastSeveralDualBoundGains, BbParaLoadCoordinator::breakingSolverId, BbParaInitiator::convertToExternalValue(), ParaComm::createParaSolverState(), UG::Deterministic, UG::displayInfOverThisValue, UG::DistributeBestPrimalSolution, UG::DualBoundGainBranchRatio, BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, BbParaLoadCoordinator::firstCollectingModeState, UG::GenerateReducedCheckpointFiles, BbParaInitiator::getAbsgap(), BbParaInitiator::getAbsgapValue(), BbParaSolverState::getAverageDualBoundGain(), BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaSolverPool::getCurrentTask(), BbParaSolverState::getDeterministicTime(), ParaDeterministicTimer::getElapsedTime(), ParaTimer::getElapsedTime(), BbParaInitiator::getGap(), BbParaInitiator::getGapValue(), BbParaInitiator::getGlobalBestIncumbentSolution(), BbParaSolverState::getGlobalBestPrimalBoundValue(), ParaParamSet::getIntParamValue(), BbParaNode::getMergeNodeInfo(), BbParaSolverState::getNNodesLeft(), BbParaSolverState::getNNodesSolved(), BbParaSolverState::getNotificaionId(), ParaSolverPool::getNSolvers(), ParaSolverPool::getNumInactiveSolvers(), BbParaNodePool::getNumOfGoodNodes(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), ParaParamSet::getRealParamValue(), BbParaSolverState::getSolverLocalBestDualBoundValue(), BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinator::initialNodesGenerated, UG::InitialNodesGeneration, BbParaNodePool::insert(), ParaSolverPool::interruptRequested(), BbParaLoadCoordinator::isBreakingFinised, BbParaLoadCoordinator::isCollectingModeRestarted, ParaSolverPool::isInterruptRequested(), BbParaSolverState::isRacingStage(), BbParaLoadCoordinator::isRacingStage(), ParaTask::isRootTask(), ParaSolverPool::isSolverActive(), BbParaLoadCoordinator::lastSeveralDualBoundGains, BbParaLoadCoordinator::lcts, UG::LightWeightNodePenartyInCollecting, ParaLoadCoordinator::logSolvingStatusFlag, BbParaNodesMerger::mergeNodes(), BbParaLoadCoordinator::minmalDualBoundNormalTermSolvers, UG::MultiplierForBreakingTargetBound, BbParaLoadCoordinator::nAverageDualBoundGain, UG::NChangeIntoCollectingMode, BbParaLoadCoordinatorTerminationState::nNodesOutputLog, UG::NNodesTransferLogging, BbParaLoadCoordinator::nodesMerger, UG::NormalRunningPhase, ParaLoadCoordinatorTerminationState::nReceived, ParaLoadCoordinatorTerminationState::nSent, UG::NSolverNodesStartBreaking, UG::NStopBreaking, UG::NTransferLimitForBreaking, UG::NumberOfInitialNodes, ParaLoadCoordinator::osLogSolvingStatus, BbParaLoadCoordinator::osTabularSolvingStatus, BbParaLoadCoordinator::outputTabularSolvingStatusFlag, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraDetTimer, UG::ParaDOUBLE, ParaLoadCoordinator::paraInitiator, UG::ParaINT, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolBufferToGenerateCPF, BbParaLoadCoordinator::paraNodePoolBufferToRestart, BbParaLoadCoordinator::paraNodeToKeepCheckpointFileNodes, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, UG::ParaUNSIGNED, ParaLoadCoordinator::racingTermination, UG::RampUpPhase, ParaSolverState::receive(), ParaLoadCoordinator::runningPhase, ParaSolution::send(), ParaComm::send(), BbParaLoadCoordinator::statEmptyNodePoolTime, UG::TagBreaking, UG::TagCollectAllNodes, UG::TagGivenGapIsReached, UG::TagLCBestBoundValue, UG::TagNotificationId, UG::TerminationPhase, UG::TimeToIncreaseCMS, BbParaLoadCoordinatorTerminationState::tNodesOutputLog, UG::TNodesTransferLogging, ParaTask::toSimpleString(), BbParaLoadCoordinator::unprocessedParaNodes, and ParaDeterministicTimer::update().

◆ processTagSubtreeRootNodeStartComputation()

int processTagSubtreeRootNodeStartComputation ( int  source,
int  tag 
)
protectedvirtual

◆ processTagSubtreeRootNodeToBeRemoved()

◆ processTagTask()

int processTagTask ( int  source,
int  tag 
)
protectedvirtual

Message handlers.

function to process TagTask message

Returns
always 0 (for extension)

in the case that ParaNode received from LoadCoordinator is not implemented yet

         switch-out request might be delayed to reach the target solver.
        This behavior affects load balancing sometimes.
         Therefore, if additional nodes are received, sends switch-out request again.

if( runningPhase != RampUpPhase && !(paraSolverPool->isInCollectingMode()) ) { paraSolverPool->enforcedSwitchOutCollectingMode(source); } I don't want to do this. So, I decided to wait message after each notification when LC in collecting mode if necessary

Parameters
sourcesource solver rank
tagTagTask

Implements ParaLoadCoordinator.

Definition at line 831 of file bbParaLoadCoordinator.cpp.

References ParaTask::addDescendant(), BbParaNodesMerger::addNodeToMergeNodeStructs(), BbParaInitiator::convertToExternalValue(), ParaLoadCoordinator::createNewGlobalSubtreeId(), ParaComm::createParaTask(), ParaLoadCoordinator::eps, EPSLT, BbParaLoadCoordinator::firstCollectingModeState, BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaSolverPool::getCurrentTask(), BbParaNode::getDepth(), BbParaNode::getDiffSubproblem(), BbParaNode::getDualBoundValue(), ParaTimer::getElapsedTime(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), ParaSolverPool::getNSolvers(), ParaSolverPool::getNumInactiveSolvers(), BbParaNodePool::getNumOfGoodNodes(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), ParaComm::getRank(), ParaParamSet::getRealParamValue(), ParaTask::getTaskId(), BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, BbParaLoadCoordinator::hugeImbalance, BbParaNodePool::insert(), BbParaLoadCoordinator::isCollectingModeRestarted, BbParaNodePool::isEmpty(), BbParaLoadCoordinator::lcts, UG::LightWeightNodePenartyInCollecting, ParaLoadCoordinator::logSolvingStatusFlag, BbParaLoadCoordinator::merging, BbParaLoadCoordinator::minDepthInWinnerSolverNodes, UG::MultiplierForCollectingMode, UG::NChangeIntoCollectingMode, BbParaLoadCoordinatorTerminationState::nDeletedInLc, BbParaLoadCoordinator::nodesMerger, ParaLoadCoordinatorTerminationState::nReceived, ParaLoadCoordinator::osLogSolvingStatus, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolBufferToRestart, BbParaLoadCoordinator::paraNodePoolToRestart, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, UG::RacingStatBranching, ParaLoadCoordinator::racingWinner, UG::RampUpPhase, BbParaNode::receive(), ParaLoadCoordinator::runningPhase, ParaComm::send(), BbParaLoadCoordinator::sendParaTasksToIdleSolvers(), BbParaNode::setAncestor(), ParaTask::setGlobalSubtaskId(), UG::TagTaskReceived, BbParaNode::toSimpleString(), and BbParaLoadCoordinator::winnerSolverNodesCollected.

◆ processTagTermStateForInterruption()

int processTagTermStateForInterruption ( int  source,
int  tag 
)
protectedvirtual

function to process TagTermStateForInterruption message

Returns
always 0 (for extension)

checkpoint; This is normal termination

in order to save termination status to check point file, keep this information to solver pool

racing ramp-up

unexpected mode

in this case, do not have to wait statistical information from the other solvers

Parameters
sourcesource solver rank
tagTagUbBoundTightened

Definition at line 2397 of file bbParaLoadCoordinator.cpp.

References BbParaLoadCoordinator::breakingSolverId, UG::CompTerminatedByMemoryLimit, UG::CompTerminatedByTimeLimit, ParaComm::createParaSolverTerminationState(), BbParaLoadCoordinator::firstCollectingModeState, ParaParamSet::getBoolParamValue(), ParaSolverTerminationState::getDeterministicTime(), ParaDeterministicTimer::getElapsedTime(), ParaSolverTerminationState::getInterruptedMode(), ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinator::inactivateRacingSolverPool(), BbParaLoadCoordinator::isBreakingFinised, BbParaNodePool::isEmpty(), ParaRacingSolverPool::isSolverActive(), ParaSolverPool::isTerminateRequested(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::memoryLimitIsReached, BbParaLoadCoordinatorTerminationState::nFailedToSendBack, BbParaLoadCoordinatorTerminationState::nSentBackImmediately, ParaLoadCoordinator::nTerminated, ParaLoadCoordinator::osStatisticsRacingRampUp, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraDetTimer, ParaLoadCoordinator::paraInitiator, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolToRestart, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, UG::Quiet, ParaLoadCoordinator::racingTermination, UG::RampUpPhase, ParaSolverTerminationState::receive(), ParaLoadCoordinator::runningPhase, ParaComm::send(), BbParaLoadCoordinator::sendParaTasksToIdleSolvers(), UG::TagAckCompletion, UG::TagTermStateForInterruption, BbParaLoadCoordinator::terminateAllSolvers(), UG::TerminationPhase, THROW_LOGICAL_ERROR4, ParaSolverTerminationState::toString(), and ParaDeterministicTimer::update().

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ processTagUbBoundTightened()

int processTagUbBoundTightened ( int  source,
int  tag 
)
protectedvirtual

◆ restartRacing()

◆ run() [1/3]

void run ( )
protectedvirtual

run function to start main process

should not call virutal function in constructor

completion message may delay

output tabular solving status

Implements ParaLoadCoordinator.

Definition at line 4118 of file bbParaLoadCoordinator.cpp.

References BbParaLoadCoordinator::aSolverTerminatedWithOptimality, UG::BgapCollectingMode, BbParaLoadCoordinator::changeSearchStrategyOfAllSolversToBestBoundSearch(), BbParaLoadCoordinator::changeSearchStrategyOfAllSolversToOriginalSearch(), UG::Checkpoint, UG::CheckpointInterval, UG::Deterministic, UG::DeterministicTabularSolvingStatus, UG::DualBoundGainTest, UG::EnhancedCheckpointStartTime, UG::EnhancedFinalCheckpoint, BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, BbParaNodePool::extractNode(), UG::FinalCheckpointGeneratingTime, BbParaLoadCoordinator::firstCollectingModeState, BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaDeterministicTimer::getElapsedTime(), ParaTimer::getElapsedTime(), BbParaNode::getInitialDualBoundValue(), ParaParamSet::getIntParamValue(), ParaSolverPool::getNSolvers(), ParaSolverPool::getNumActiveSolvers(), ParaRacingSolverPool::getNumActiveSolvers(), ParaSolverPool::getNumInactiveSolvers(), BbParaNodePool::getNumOfGoodNodes(), BbParaNodePool::getNumOfNodes(), ParaParamSet::getRealParamValue(), ParaComm::getSize(), ParaRacingSolverPool::getWinner(), BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinator::hugeImbalance, UG::HugeImbalanceActiveSolverRatio, UG::HugeImbalanceThresholdTime, BbParaLoadCoordinator::hugeImbalanceTime, BbParaLoadCoordinatorTerminationState::idleTime, BbParaLoadCoordinator::initialNodesGenerated, BbParaNodePool::insert(), ParaLoadCoordinator::interruptIsRequested, BbParaLoadCoordinator::isCollectingModeRestarted, BbParaNodePool::isEmpty(), BbParaLoadCoordinator::isHeaderPrinted, ParaSolverPool::isInterruptRequested(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, ParaLoadCoordinator::memoryLimitIsReached, ParaLoadCoordinator::messageHandler, UG::MultiplierForCollectingMode, UG::NChangeIntoCollectingMode, UG::NIdleSolversToTerminate, UG::NormalRunningPhase, ParaLoadCoordinator::nTerminated, ParaLoadCoordinator::osLogSolvingStatus, BbParaLoadCoordinator::osTabularSolvingStatus, BbParaLoadCoordinator::outputTabularSolvingStatus(), BbParaLoadCoordinator::outputTabularSolvingStatusFlag, BbParaLoadCoordinator::outputTabularSolvingStatusHeader(), PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraDetTimer, ParaLoadCoordinator::paraInitiator, UG::ParaINT, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolBufferToRestart, BbParaLoadCoordinator::paraNodePoolToRestart, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, ParaLoadCoordinator::previousCheckpointTime, BbParaLoadCoordinator::previousTabularOutputTime, ParaComm::probe(), ParaLoadCoordinator::racingTermination, UG::RampUpPhase, UG::RampUpPhaseProcess, UG::RestartInRampDownActiveSolverRatio, UG::RestartInRampDownThresholdTime, ParaLoadCoordinator::runningPhase, BbParaLoadCoordinator::selfSplitFinisedSolvers, ParaComm::send(), BbParaLoadCoordinator::sendInterruptRequest(), BbParaLoadCoordinator::sendParaTasksToIdleSolvers(), ParaLoadCoordinator::sendRampUpToAllSolvers(), BbParaLoadCoordinator::sendRetryRampUpToAllSolvers(), BbParaNode::setDualBoundValue(), BbParaLoadCoordinator::starvingTime, BbParaLoadCoordinator::statEmptyNodePoolTime, UG::TabularSolvingStatusInterval, UG::TagInterruptRequest, UG::TagRestart, BbParaLoadCoordinator::terminateAllSolvers(), UG::TerminationPhase, THROW_LOGICAL_ERROR2, THROW_LOGICAL_ERROR3, UG::TimeLimit, UG::TimeToIncreaseCMS, and BbParaLoadCoordinator::winnerSolverNodesCollected.

Referenced by BbParaLoadCoordinator::isGapReached(), main(), BbParaLoadCoordinator::run(), and BbParaLoadCoordinator::sendParaTasksToIdleSolvers().

◆ run() [2/3]

void run ( ParaTask paraNode)
virtual

run for normal ramp-up

should not call virutal function in constructor

Parameters
paraNoderoot ParaNode

Reimplemented from ParaLoadCoordinator.

Definition at line 5808 of file bbParaLoadCoordinator.cpp.

References BbParaLoadCoordinator::averageLastSeveralDualBoundGains, UG::CollectOnce, BbParaInitiator::convertToExternalValue(), DEF_BB_PARA_COMM, UG::Deterministic, UG::displayInfOverThisValue, BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), ParaTimer::getElapsedTime(), BbParaInitiator::getGap(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), ParaSolverPool::getNSolvers(), ParaSolverPool::getNumInactiveSolvers(), BbParaNodePool::getNumOfGoodNodes(), ParaParamSet::getRealParamValue(), BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, BbParaLoadCoordinator::isHeaderPrinted, BbParaLoadCoordinator::lcts, UG::LightWeightRootNodeProcess, ParaLoadCoordinator::logSolvingStatusFlag, BbParaInitiator::makeRootNodeDiffSubproblem(), ParaLoadCoordinatorTerminationState::nSent, ParaLoadCoordinator::osLogSolvingStatus, BbParaLoadCoordinator::outputTabularSolvingStatusFlag, BbParaLoadCoordinator::outputTabularSolvingStatusHeader(), PARA_COMM_CALL, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraInitiator, UG::ParaINT, BbParaLoadCoordinator::paraNodePool, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, UG::RampUpPhase, UG::RampUpPhaseProcess, UG::RatioToApplyLightWeightRootProcess, BbParaLoadCoordinator::run(), ParaLoadCoordinator::runningPhase, ParaComm::send(), UG::TagCollectAllNodes, UG::TagToken, and ParaLoadCoordinator::writeTransferLog().

◆ run() [3/3]

void run ( ParaTask paraNode,
int  nRacingSolvers,
ParaRacingRampUpParamSet **  racingRampUpParams 
)
virtual

run for racing ramp-up

should not call virutal function in constructor

creates racing solver pool

activate racing solver with root node

NOTE that paraComm->getSize() - 1 is not always nRacingSolvers, that it other type of solvers can be working with

output start racing to log file, if it is necessary

output tabular solving status

output winner to log file, if it is necessary

Parameters
paraNoderoot ParaNode
nRacingSolversnumber of racing solvers
racingRampUpParamsracing parameters

Reimplemented from ParaLoadCoordinator.

Definition at line 6396 of file bbParaLoadCoordinator.cpp.

References BbParaRacingSolverPool::activate(), BbParaSolverPool::activateSolver(), ParaTask::bcast(), UG::CollectOnce, BbParaInitiator::convertToExternalValue(), DEFAULT_NUM_EPSILON, UG::Deterministic, UG::DeterministicTabularSolvingStatus, EPSLT, BbParaRacingSolverPool::extractNode(), UG::FinalCheckpointGeneratingTime, ParaParamSet::getBoolParamValue(), ParaDeterministicTimer::getElapsedTime(), ParaTimer::getElapsedTime(), BbParaInitiator::getGlobalBestIncumbentSolution(), ParaParamSet::getIntParamValue(), ParaSolverPool::getNSolvers(), ParaRacingSolverPool::getNumActiveSolvers(), BbParaRacingSolverPool::getNumNodesLeft(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), ParaInitiator::getParaInstance(), ParaParamSet::getRealParamValue(), ParaComm::getSize(), ParaRacingRampUpParamSet::getStrategy(), ParaRacingSolverPool::getWinner(), BbParaLoadCoordinator::givenGapIsReached, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinatorTerminationState::idleTime, BbParaRacingSolverPool::inactivateSolver(), BbParaNodePool::isEmpty(), BbParaLoadCoordinator::isHeaderPrinted, ParaSolverPool::isInterruptRequested(), BbParaRacingSolverPool::isWinnerDecided(), BbParaLoadCoordinator::lcts, ParaLoadCoordinator::logSolvingStatusFlag, ParaLoadCoordinator::logTasksTransferFlag, ParaLoadCoordinator::memoryLimitIsReached, UG::MergeNodesAtRestart, BbParaLoadCoordinator::merging, BbParaLoadCoordinator::nBoundChangesOfBestNode, UG::NCollectOnce, BbParaLoadCoordinator::newRacing(), BbParaLoadCoordinator::nodesMerger, ParaLoadCoordinatorTerminationState::nSent, ParaLoadCoordinator::osLogSolvingStatus, BbParaLoadCoordinator::osTabularSolvingStatus, BbParaLoadCoordinator::outputTabularSolvingStatus(), BbParaLoadCoordinator::outputTabularSolvingStatusFlag, BbParaLoadCoordinator::outputTabularSolvingStatusHeader(), PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraDetTimer, ParaLoadCoordinator::paraInitiator, UG::ParaINT, BbParaLoadCoordinator::paraNodePool, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, BbParaLoadCoordinator::previousTabularOutputTime, BbParaLoadCoordinator::primalUpdated, ParaComm::probe(), UG::ProhibitCollectOnceMultiplier, ParaLoadCoordinator::racingRampUpMessageHandler, UG::RacingStatBranching, ParaLoadCoordinator::racingTermination, ParaLoadCoordinator::racingWinner, ParaLoadCoordinator::racingWinnerParams, UG::RampUpPhase, UG::RampUpPhaseProcess, BbParaLoadCoordinator::restartingRacing, UG::RestartRacing, BbParaLoadCoordinator::restartRacing(), BbParaLoadCoordinator::run(), ParaLoadCoordinator::runningPhase, ParaRacingRampUpParamSet::send(), ParaComm::send(), BbParaLoadCoordinator::sendInterruptRequest(), ParaParamSet::setBoolParamValue(), ParaParamSet::setIntParamValue(), UG::StopRacingNumberOfNodesLeft, UG::StopRacingNumberOfNodesLeftMultiplier, UG::TabularSolvingStatusInterval, UG::TagCollectAllNodes, UG::TagKeepRacing, UG::TagTerminateSolvingToRestart, UG::TagToken, UG::TagWinner, THROW_LOGICAL_ERROR2, THROW_LOGICAL_ERROR3, UG::TimeLimit, BbParaLoadCoordinator::warmStartNodeTransferring, BbParaLoadCoordinator::winnerSolverNodesCollected, and ParaLoadCoordinator::writeTransferLogInRacing().

◆ sendCutOffValue()

◆ sendIncumbentValue()

◆ sendInterruptRequest()

void sendInterruptRequest ( )
protectedvirtual

send interrupt request to all solvers

Implements ParaLoadCoordinator.

Definition at line 6750 of file bbParaLoadCoordinator.cpp.

References BbParaNode::collectsNodes(), UG::Deterministic, UG::EnhancedFinalCheckpoint, UG::FinalCheckpointGeneratingTime, UG::FinalCheckpointNSolvers, BbParaNode::getAncestor(), ParaParamSet::getBoolParamValue(), ParaSolverPool::getCurrentTask(), ParaTimer::getElapsedTime(), ParaParamSet::getIntParamValue(), ParaRacingSolverPool::getNSolvers(), ParaSolverPool::getNumActiveSolvers(), ParaRacingSolverPool::getNumActiveSolvers(), ParaParamSet::getRealParamValue(), ParaComm::getSize(), ParaLoadCoordinator::interruptIsRequested, ParaSolverPool::interruptRequested(), ParaSolverPool::isInterruptRequested(), ParaSolverPool::isSolverActive(), ParaRacingSolverPool::isSolverActive(), ParaLoadCoordinator::logSolvingStatusFlag, ParaLoadCoordinator::osLogSolvingStatus, BbParaLoadCoordinator::osTabularSolvingStatus, BbParaLoadCoordinator::outputTabularSolvingStatusFlag, PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, UG::ParaINT, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, ParaComm::send(), UG::TagInterruptRequest, UG::TagTerminateRequest, UG::TagToken, and ParaSolverPool::terminateRequested().

Referenced by BbParaLoadCoordinator::processTagCompletionOfCalculation(), BbParaLoadCoordinator::processTagSelfSlpitNodeCalcuationState(), and BbParaLoadCoordinator::run().

◆ sendParaTasksToIdleSolvers()

bool sendParaTasksToIdleSolvers ( )
protectedvirtual

send ParaNodes to idle solvers

Returns
true, if a ParaNodes is sent

cannot activate

Implements ParaLoadCoordinator.

Definition at line 4699 of file bbParaLoadCoordinator.cpp.

References BbParaSolverPool::activateSolver(), BbParaLoadCoordinatorTerminationState::addingNodeToMergeStructTime, BbParaNodesMerger::addNodeToMergeNodeStructs(), BbParaLoadCoordinator::averageLastSeveralDualBoundGains, UG::BgapCollectingMode, UG::CheckpointFilePath, UG::CollectOnce, BbParaInitiator::convertToExternalValue(), ParaComm::createParaRacingRampUpParamSet(), ParaComm::createParaSolverTerminationState(), BbParaNodesMerger::deleteMergeNodeInfo(), UG::displayInfOverThisValue, UG::DistributeBestPrimalSolution, UG::DualBoundGainTest, UG::EnhancedFinalCheckpoint, BbParaLoadCoordinatorTerminationState::externalGlobalBestDualBoundValue, BbParaNodePool::extractNode(), BbParaNodePool::extractNodeRandomly(), UG::FinalCheckpointGeneratingTime, BbParaNodesMerger::generateMergeNodesCandidates(), BbParaLoadCoordinatorTerminationState::generateMergeNodesCandidatesTime, ParaInitiator::generateRacingRampUpParameterSets(), UG::GenerateReducedCheckpointFiles, BbParaInitiator::getAbsgap(), BbParaInitiator::getAbsgapValue(), BbParaNodesMerger::getAddingNodeToMergeStructTime(), BbParaNode::getAncestor(), BbParaNodePool::getBestDualBoundValue(), ParaParamSet::getBoolParamValue(), BbParaNode::getDiffSubproblem(), BbParaNode::getDualBoundValue(), ParaTimer::getElapsedTime(), BbParaInitiator::getGap(), BbParaInitiator::getGapValue(), BbParaNodesMerger::getGenerateMergeNodesCandidatesTime(), BbParaSolverPoolForMinimization::getGlobalBestDualBoundValue(), BbParaInitiator::getGlobalBestIncumbentSolution(), BbParaNode::getInitialDualBoundValue(), ParaParamSet::getIntParamValue(), BbParaNodePool::getMaxUsageOfPool(), BbParaNode::getMergeNodeInfo(), BbParaNodesMerger::getMergeNodeTime(), ParaSolverPool::getNSolvers(), ParaSolverPool::getNumActiveSolvers(), ParaRacingSolverPool::getNumActiveSolvers(), ParaSolverPool::getNumInactiveSolvers(), ParaRacingSolverPool::getNumInactiveSolvers(), BbParaNodePool::getNumOfGoodNodes(), BbParaNodePool::getNumOfNodes(), BbParaSolution::getObjectiveFunctionValue(), ParaInitiator::getParaInstance(), ParaInitiator::getPrefixWarm(), ParaInstance::getProbName(), ParaComm::getRank(), ParaParamSet::getRealParamValue(), BbParaNodesMerger::getRegenerateMergeNodesCandidatesTime(), ParaComm::getSize(), ParaParamSet::getStringParamValue(), ParaTask::getTaskId(), BbParaLoadCoordinator::givenGapIsReached, BbParaLoadCoordinatorTerminationState::globalBestDualBoundValue, ParaLoadCoordinator::hardTimeLimitIsReached, BbParaLoadCoordinator::hugeImbalance, BbParaLoadCoordinator::initialNodesGenerated, BbParaNodePool::insert(), ParaLoadCoordinatorTerminationState::isCheckpointState, BbParaNodePool::isEmpty(), BbParaInitiator::isObjIntegral(), ParaTask::isSameParetntTaskSubtaskIdAs(), ParaLoadCoordinator::lastCheckpointTimeStr, BbParaLoadCoordinator::lcts, UG::LightWeightRootNodeProcess, ParaLoadCoordinator::logSolvingStatusFlag, BbParaLoadCoordinator::maxDepthInWinnerSolverNodes, UG::MaxStrLen, ParaLoadCoordinator::memoryLimitIsReached, BbParaMergeNodeInfo_::mergedDiffSubproblem, BbParaMergeNodeInfo_::mergedTo, UG::MergeNodesAtRestart, BbParaLoadCoordinatorTerminationState::mergeNodeTime, BbParaLoadCoordinator::merging, BbParaLoadCoordinator::minDepthInWinnerSolverNodes, MINEPSILON, UG::MultiplierForCollectingMode, BbParaLoadCoordinator::nBoundChangesOfBestNode, UG::NChangeIntoCollectingMode, BbParaLoadCoordinatorTerminationState::nDeletedInLc, UG::NEagerToSolveAtRestart, BbParaLoadCoordinatorTerminationState::nMaxUsageOfNodePool, BbParaMergeNodeInfo_::nMergedNodes, UG::NMergingNodesAtRestart, BbParaLoadCoordinatorTerminationState::nNodesInNodePool, BbParaLoadCoordinatorTerminationState::nNodesLeftInAllSolvers, UG::NNodesToKeepInCheckpointFile, BbParaLoadCoordinator::nNormalSelection, BbParaLoadCoordinator::nodesMerger, UG::NormalRunningPhase, ParaLoadCoordinatorTerminationState::nSent, ParaLoadCoordinatorTerminationState::nWarmStart, BbParaMergeNodeInfo_::origDiffSubproblem, ParaLoadCoordinator::osLogSolvingStatus, BbParaLoadCoordinator::osTabularSolvingStatus, BbParaLoadCoordinator::outputTabularSolvingStatusFlag, PARA_COMM_CALL, BbParaMergeNodeInfo_::PARA_MERGED_RPRESENTATIVE, UG::ParaBYTE, ParaLoadCoordinator::paraComm, UG::ParaDOUBLE, ParaLoadCoordinator::paraInitiator, UG::ParaINT, BbParaLoadCoordinator::paraNodePool, BbParaLoadCoordinator::paraNodePoolBufferToGenerateCPF, BbParaLoadCoordinator::paraNodePoolToRestart, BbParaLoadCoordinator::paraNodeToKeepCheckpointFileNodes, ParaLoadCoordinator::paraParams, ParaLoadCoordinator::paraRacingSolverPool, ParaLoadCoordinator::paraSolverPool, ParaLoadCoordinator::paraTimer, UG::Quiet, UG::RacingStatBranching, ParaLoadCoordinator::racingWinnerParams, UG::RampUpPhase, UG::RampUpPhaseProcess, UG::RandomNodeSelectionRatio, UG::RatioToApplyLightWeightRootProcess, BbParaLoadCoordinatorTerminationState::regenerateMergeNodesCandidatesTime, ParaLoadCoordinator::restarted, BbParaLoadCoordinator::run(), ParaLoadCoordinator::runningPhase, BbParaLoadCoordinatorTerminationState::runningTime, ParaSolution::send(), ParaRacingRampUpParamSet::send(), ParaComm::send(), ParaLoadCoordinator::sendRampUpToAllSolvers(), BbParaNode::setDiffSubproblem(), BbParaNode::setDualBoundValue(), BbParaInitiator::setInitialStatOnDiffSubproblem(), ParaParamSet::setIntParamValue(), BbParaNode::setMergeNodeInfo(), BbParaNode::setMergingStatus(), BbParaMergeNodeInfo_::status, UG::TagCollectAllNodes, UG::TagGlobalBestDualBoundValueAtWarmStart, UG::TagIncumbentValue, UG::TagKeepRacing, UG::TerminationPhase, BbParaNode::toSimpleString(), BbParaLoadCoordinatorTerminationState::toString(), ParaSolverTerminationState::toString(), BbParaNode::toString(), UG::TransferConflictCuts, UG::TransferLocalCuts, BbParaLoadCoordinator::unprocessedParaNodes, BbParaNodePool::updateDualBoundsForSavingNodes(), BbParaLoadCoordinator::warmStartNodeTransferring, BbParaLoadCoordinator::winnerSolverNodesCollected, ParaInitiator::writeSolution(), and ParaLoadCoordinator::writeTransferLog().

Referenced by BbParaLoadCoordinator::processTagSelfSplitTermStateForInterruption(), BbParaLoadCoordinator::processTagTask(), BbParaLoadCoordinator::processTagTermStateForInterruption(), and BbParaLoadCoordinator::run().

◆ sendRetryRampUpToAllSolvers()

void sendRetryRampUpToAllSolvers ( )
protectedvirtual

notify retry ramp-up to all solvers

Reimplemented from ParaLoadCoordinator.

Definition at line 6738 of file bbParaLoadCoordinator.cpp.

References ParaComm::getSize(), PARA_COMM_CALL, UG::ParaBYTE, ParaLoadCoordinator::paraComm, ParaComm::send(), and UG::TagRetryRampUp.

Referenced by BbParaLoadCoordinator::run().

◆ setGlobalBestIncumbentSolution()

void setGlobalBestIncumbentSolution ( ParaSolution sol)

set global best incumbent solution

Parameters
solincumbent solution to be set

Referenced by BbParaLoadCoordinator::isGapReached().

◆ terminateAllSolvers()

◆ updateSolution()

bool updateSolution ( BbParaSolution sol)
protectedvirtual

◆ writeSubtreeInfo()

Member Data Documentation

◆ allCompInfeasibleAfterSolution

◆ aSolverTerminatedWithOptimality

bool aSolverTerminatedWithOptimality
protected

indicate if a solver terminated with proving optimality of the problem

Definition at line 174 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::run().

◆ averageDualBoundGain

double averageDualBoundGain
protected

average dual bound gain: could be negative value at restart

Definition at line 138 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagSolverState().

◆ averageLastSeveralDualBoundGains

double averageLastSeveralDualBoundGains
protected

◆ breakingSolverId

int breakingSolverId
protected

all nodes collecting solver Id: -1: no collecting

Definition at line 92 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagSolverState(), and BbParaLoadCoordinator::processTagTermStateForInterruption().

◆ firstCollectingModeState

int firstCollectingModeState
protected

status of first collecting mode -1 : have not been in collecting mode 0 : once in collecting mode 1 : collecting mode is terminated once

Definition at line 85 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagSelfSplitTermStateForInterruption(), BbParaLoadCoordinator::processTagSolverState(), BbParaLoadCoordinator::processTagTask(), BbParaLoadCoordinator::processTagTermStateForInterruption(), and BbParaLoadCoordinator::run().

◆ givenGapIsReached

◆ hugeImbalance

bool hugeImbalance
protected

indicate that a huge imbalance in solvers is detected

Definition at line 169 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagTask(), BbParaLoadCoordinator::run(), and BbParaLoadCoordinator::sendParaTasksToIdleSolvers().

◆ hugeImbalanceTime

double hugeImbalanceTime
protected

start time of huge imbalance situation

Definition at line 144 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::run().

◆ initialNodesGenerated

◆ isBreakingFinised

bool isBreakingFinised
protected

indicate that breaking is finished or not if bootstrap ramp-up is not specified, this flag should be always true

Definition at line 90 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator(), BbParaLoadCoordinator::processTagSolverState(), and BbParaLoadCoordinator::processTagTermStateForInterruption().

◆ isCollectingModeRestarted

bool isCollectingModeRestarted
protected

this flag indicate if a collecting mode is restarted or not

Definition at line 89 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagSolverState(), BbParaLoadCoordinator::processTagTask(), and BbParaLoadCoordinator::run().

◆ isHeaderPrinted

bool isHeaderPrinted
protected

indicate if heeader is printed or not

Definition at line 171 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::outputTabularSolvingStatusHeader(), and BbParaLoadCoordinator::run().

◆ lastSeveralDualBoundGains

std::deque<double> lastSeveralDualBoundGains
protected

keep last several dual bound gains

Definition at line 140 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagSolverState().

◆ lcts

◆ logSubtreeInfoFlag

bool logSubtreeInfoFlag
protected

indicate if subtree info. is logged or not

Definition at line 162 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator(), and BbParaLoadCoordinator::writeSubtreeInfo().

◆ maxDepthInWinnerSolverNodes

int maxDepthInWinnerSolverNodes
protected

maximum depth of open nodes in the winner solver tree

Definition at line 118 of file bbParaLoadCoordinator.h.

Referenced by ScipParaLoadCoordinator::processTagInitialStat(), and BbParaLoadCoordinator::sendParaTasksToIdleSolvers().

◆ merging

◆ minDepthInWinnerSolverNodes

int minDepthInWinnerSolverNodes
protected

racing winner information

minimum depth of open nodes in the winner solver tree

Definition at line 117 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagTask(), and BbParaLoadCoordinator::sendParaTasksToIdleSolvers().

◆ minmalDualBoundNormalTermSolvers

◆ nAverageDualBoundGain

int nAverageDualBoundGain
protected

number of nodes whose dual bound gain are counted

Definition at line 139 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagSolverState().

◆ nBoundChangesOfBestNode

int nBoundChangesOfBestNode
protected

the number of fixed variables of the best node The followings are used temporary to generate merge nodes info

Definition at line 124 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator(), BbParaLoadCoordinator::run(), and BbParaLoadCoordinator::sendParaTasksToIdleSolvers().

◆ nCollectedSolvers

size_t nCollectedSolvers
protected

counter to check if all solvers are terminated or not

number of solvers which open nodes are collected

Definition at line 134 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagCompletionOfCalculation(), and BbParaLoadCoordinator::processTagSelfSlpitNodeCalcuationState().

◆ nNormalSelection

int nNormalSelection
protected

number of normal node selection to a random node selection

Definition at line 94 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator(), and BbParaLoadCoordinator::sendParaTasksToIdleSolvers().

◆ nodesMerger

◆ nReplaceToBetterNode

int nReplaceToBetterNode
protected

the number of replacing to a better nodes

Definition at line 93 of file bbParaLoadCoordinator.h.

◆ nRestartedRacing

int nRestartedRacing
protected

number of racing stages restarted

Definition at line 100 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::restartRacing().

◆ ofsLogSubtreeInfo

std::ofstream ofsLogSubtreeInfo
protected

ofstream for subtree info.

Definition at line 163 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ ofsTabularSolvingStatus

std::ofstream ofsTabularSolvingStatus
protected

ofstream for solving status in tabular form

Definition at line 160 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator().

◆ osLogSubtreeInfo

std::ostream* osLogSubtreeInfo
protected

ostram for subtree info. to switch output location

Definition at line 164 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::BbParaLoadCoordinator(), and BbParaLoadCoordinator::writeSubtreeInfo().

◆ osTabularSolvingStatus

◆ outputTabularSolvingStatusFlag

◆ paraNodePool

◆ paraNodePoolBufferToGenerateCPF

◆ paraNodePoolBufferToRestart

◆ paraNodePoolToRestart

◆ paraNodeToKeepCheckpointFileNodes

BbParaNodePool* paraNodeToKeepCheckpointFileNodes
protected

The first n nodes may always keep in checkpoint file, that is, the n nodes are not processed in this run.

Definition at line 149 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::outputTabularSolvingStatus(), BbParaLoadCoordinator::processTagSolverState(), BbParaLoadCoordinator::sendParaTasksToIdleSolvers(), and BbParaLoadCoordinator::~BbParaLoadCoordinator().

◆ pendingSolution

BbParaSolution* pendingSolution
protected

pending solution during merging

Definition at line 176 of file bbParaLoadCoordinator.h.

◆ previousTabularOutputTime

double previousTabularOutputTime
protected

to keep tabular solving status output time

Definition at line 136 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::run().

◆ primalUpdated

◆ restartingRacing

◆ selfSplitFinisedSolvers

std::set<int>* selfSplitFinisedSolvers
protected

◆ starvingTime

double starvingTime
protected

start time of starving active solvers

Definition at line 143 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::run().

◆ statEmptyNodePoolTime

double statEmptyNodePoolTime
protected

To measure how long does node pool stay in empty situation.

start time that node pool becomes empty. initialized by max double

Definition at line 112 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::processTagSolverState(), and BbParaLoadCoordinator::run().

◆ unprocessedParaNodes

BbParaNodePool* unprocessedParaNodes
protected

The last n nodes may always keep in checkpoint file, that is, the n nodes are not processed in this run.

Definition at line 151 of file bbParaLoadCoordinator.h.

Referenced by BbParaLoadCoordinator::outputTabularSolvingStatus(), BbParaLoadCoordinator::processTagSolverState(), BbParaLoadCoordinator::sendParaTasksToIdleSolvers(), and BbParaLoadCoordinator::~BbParaLoadCoordinator().

◆ warmStartNodeTransferring

bool warmStartNodeTransferring
protected

◆ winnerSolverNodesCollected