Scippy

UG

Ubiquity Generator framework

ScipParaInitiator Class Reference

#include <scipParaInitiator.h>

+ Inheritance diagram for ScipParaInitiator:

Public Member Functions

 ScipParaInitiator (UG::ParaComm *inComm, UG::ParaTimer *inTimer)
 
virtual ~ScipParaInitiator ()
 
virtual int init (UG::ParaParamSet *paraParams, int argc, char **argv)
 
int reInit (int nRestartedRacing)
 
UG::ParaInstancegetParaInstance ()
 
UG::BbParaDiffSubproblemmakeRootNodeDiffSubproblem ()
 
bool tryToSetIncumbentSolution (UG::BbParaSolution *sol, bool checksol)
 
void sendSolverInitializationMessage ()
 
void generateRacingRampUpParameterSets (int nParamSets, UG::ParaRacingRampUpParamSet **racingRampUpParamSets)
 
UG::BbParaSolutiongetGlobalBestIncumbentSolution ()
 
int getNSolutions ()
 
double convertToExternalValue (double internalValue)
 
double convertToInternalValue (double externalValue)
 
char * getSolutionFileName ()
 
double getAbsgap (double dualBoundValue)
 
double getGap (double dualBoundValue)
 
double getAbsgapValue ()
 
double getAbsgapValue (SCIP *inScip)
 
double getGapValue ()
 
double getGapValue (SCIP *inScip)
 
double getEpsilon ()
 
void writeSolution (const std::string &message)
 
void writeParaInstance (const std::string &filename)
 
void writeSolverParameters (std::ostream *os)
 
std::string getStatus ()
 
void printSolverVersion (std::ostream *os)
 
bool isFeasibleSolution ()
 
void accumulateInitialStat (UG::ParaInitialStat *initialStat)
 
void setInitialStatOnDiffSubproblem (int minDepth, int maxDepth, UG::BbParaDiffSubproblem *diffSubproblem)
 
void setFinalSolverStatus (UG::FinalSolverState status)
 
void setNumberOfNodesSolved (long long n)
 
void setDualBound (double bound)
 
void outputFinalSolverStatistics (std::ostream *os, double time)
 
void setUserPlugins (ScipUserPlugins *inUi)
 
void includeUserPlugins (SCIP *inScip)
 
bool isObjIntegral ()
 
void interrupt ()
 
- Public Member Functions inherited from BbParaInitiator
 BbParaInitiator (ParaComm *inComm, ParaTimer *inTimer)
 constructor More...
 
virtual ~BbParaInitiator ()
 destructor More...
 
bool isSolvedAtInit ()
 check if problem is solved at init or not More...
 
bool isSolvedAtReInit ()
 check if problem is solved at reInit or not More...
 
void setTightenedVarLbs (int i, double v)
 set tightened variable lower bound TODO: this function should be in inherited class More...
 
void setTightenedVarUbs (int i, double v)
 set tightened variable upper bound TODO: this function should be in inherited class More...
 
double getTightenedVarLbs (int i)
 get tightened variable lower bound TODO: this function should be in inherited class More...
 
double getTightenedVarUbs (int i)
 get tightened variable upper bound TODO: this function should be in inherited class More...
 
bool areTightenedVarBounds ()
 check if there are tightened lower or upper bound TODO: this function should be in inherited class More...
 
virtual bool canGenerateSpecialCutOffValue ()
 check if solver can generate special cut off value or not More...
 
- Public Member Functions inherited from ParaInitiator
 ParaInitiator (ParaComm *inComm, ParaTimer *inTimer)
 constructor More...
 
virtual ~ParaInitiator ()
 destructor More...
 
bool isWarmStarted ()
 check if the execution is warm started (restarted) or not More...
 
const char * getPrefixWarm ()
 get prefix of warm start (restart) files More...
 
ParaCommgetParaComm ()
 get communicator being used More...
 

Protected Member Functions

bool addRootNodeCuts ()
 
void outputProblemInfo (int *nNonLinearConsHdlrs)
 
bool onlyLinearConsHandler ()
 

Protected Attributes

UG::ParaParamSetparaParams
 
ScipParaInstanceinstance
 
ScipParaSolutionsolution
 
ScipDiffParamSetscipDiffParamSetRoot
 
ScipDiffParamSetscipDiffParamSet
 
SCIP_MESSAGEHDLR * messagehdlr
 
FILE * logfile
 
FILE * solutionFile
 
FILE * transSolutionFile
 
SCIP * scip
 
char * probname
 
char * settingsNameLC
 
char * settingsNameRoot
 
char * settingsName
 
char * racingSettingsName
 
char * logname
 
char * isolname
 
char * generatedIsolname
 
char * solutionFileName
 
ScipUserPluginsuserPlugins
 
SCIP_Real finalDualBound
 
UG::FinalSolverState finalState
 
long long nSolved
 
double absgap
 
double gap
 
double objlimit
 
- Protected Attributes inherited from BbParaInitiator
bool solvedAtInit
 solved at init More...
 
bool solvedAtReInit
 solved at reInit More...
 
double * tightenedVarLbs
 array of tightened lower bound of variable More...
 
double * tightenedVarUbs
 array of tightened upper bound of variable More...
 
- Protected Attributes inherited from ParaInitiator
ParaCommparaComm
 communicator used More...
 
ParaTimertimer
 timer used More...
 
char * prefixWarm
 prefix of warm start files More...
 

Detailed Description

Initiator class

Definition at line 60 of file scipParaInitiator.h.

Constructor & Destructor Documentation

◆ ScipParaInitiator()

ScipParaInitiator ( UG::ParaComm inComm,
UG::ParaTimer inTimer 
)

constructor

Definition at line 99 of file scipParaInitiator.h.

◆ ~ScipParaInitiator()

Member Function Documentation

◆ accumulateInitialStat()

void accumulateInitialStat ( UG::ParaInitialStat initialStat)
virtual

◆ addRootNodeCuts()

bool addRootNodeCuts ( )
protected

Definition at line 94 of file scipParaInitiator.cpp.

References UG::NoPreprocessingInLC, and UG::TimeLimit.

◆ convertToExternalValue()

double convertToExternalValue ( double  internalValue)
virtual

convert an internal value to external value

Implements BbParaInitiator.

Definition at line 208 of file scipParaInitiator.h.

References ScipParaInstance::convertToExternalValue().

◆ convertToInternalValue()

double convertToInternalValue ( double  externalValue)

convert an external value to internal value

Definition at line 216 of file scipParaInitiator.h.

References ScipParaInstance::convertToInternalValue().

◆ generateRacingRampUpParameterSets()

void generateRacingRampUpParameterSets ( int  nParamSets,
UG::ParaRacingRampUpParamSet **  racingRampUpParamSets 
)
virtual

generate racing ramp-up parameter sets

< keep the number of generated params

< keep the number of variable permutation seed; start from default: -1

< keep the number of branching order seed

Implements ParaInitiator.

Definition at line 2090 of file scipParaInitiator.cpp.

References DEF_SCIP_PARA_COMM, UG::MaxNRacingParamSetSeed, UG::NMaxRacingBaseParameters, UG::RacingParamsDirPath, UG::RacingRampUpTerminationCriteria, UG::StopRacingNumberOfNodesLeft, UG::StopRacingTimeLimit, UG::TryNBranchingOrderInRacing, and UG::TryNVariablegOrderInRacing.

Referenced by main(), and ScipParaInitiator::makeRootNodeDiffSubproblem().

◆ getAbsgap()

double getAbsgap ( double  dualBoundValue)
virtual

get absgap

get gap

Implements BbParaInitiator.

Definition at line 1770 of file scipParaInitiator.cpp.

References REALABS.

Referenced by ScipParaInitiator::getSolutionFileName().

◆ getAbsgapValue() [1/2]

double getAbsgapValue ( )
virtual

get absgap value specified

Implements BbParaInitiator.

Definition at line 237 of file scipParaInitiator.h.

References ScipParaInitiator::absgap.

◆ getAbsgapValue() [2/2]

double getAbsgapValue ( SCIP *  inScip)

get absgap value for a specific SCIP

Definition at line 247 of file scipParaInitiator.h.

◆ getEpsilon()

double getEpsilon ( )
virtual

get epsilon

Implements ParaInitiator.

Definition at line 1804 of file scipParaInitiator.cpp.

Referenced by ScipParaInitiator::getGapValue().

◆ getGap()

double getGap ( double  dualBoundValue)
virtual

get gap

Implements BbParaInitiator.

Definition at line 1782 of file scipParaInitiator.cpp.

References REALABS.

Referenced by ScipParaInitiator::getSolutionFileName().

◆ getGapValue() [1/2]

double getGapValue ( )
virtual

get gap value specified

Implements BbParaInitiator.

Definition at line 256 of file scipParaInitiator.h.

References ScipParaInitiator::gap.

◆ getGapValue() [2/2]

◆ getGlobalBestIncumbentSolution()

UG::BbParaSolution* getGlobalBestIncumbentSolution ( )
virtual

Implements BbParaInitiator.

Definition at line 197 of file scipParaInitiator.h.

References ScipParaInitiator::solution.

◆ getNSolutions()

int getNSolutions ( )
virtual

Implements BbParaInitiator.

Definition at line 202 of file scipParaInitiator.h.

◆ getParaInstance()

UG::ParaInstance* getParaInstance ( )
virtual

get instance

Implements ParaInitiator.

Definition at line 175 of file scipParaInitiator.h.

References ScipParaInitiator::instance.

Referenced by main(), outputParaParamSet(), and outputSolverParams().

◆ getSolutionFileName()

char* getSolutionFileName ( )

◆ getStatus()

std::string getStatus ( )
virtual

get solving status string

Implements ParaInitiator.

Definition at line 2195 of file scipParaInitiator.cpp.

Referenced by ScipParaInitiator::getGapValue().

◆ includeUserPlugins()

void includeUserPlugins ( SCIP *  inScip)

include user plugins

Definition at line 333 of file scipParaInitiator.h.

◆ init()

int init ( UG::ParaParamSet paraParams,
int  argc,
char **  argv 
)
virtual

init function

the first argument is runtime parameter file for ParaSCIP

the second argument is problem file name

to omit this parameter

to omit this parameter and the following value

user include plugins

user include plugins

user include plugins

instance needs to be generated befor presolving

check if feasible solution is found or not. If it was found, then generate paraSolution

Implements ParaInitiator.

Definition at line 205 of file scipParaInitiator.cpp.

References DEF_SCIP_PARA_COMM, EPSLT, UG::HardTimeLimitIsReached, UG::InstanceTransferMethod, UG::LogSolvingStatusFilePath, ParaSCIP::MemoryLimit, UG::MemoryLimitIsReached, memoryLimitOfSolverSCIP, MINEPSILON, UG::NoPreprocessingInLC, UG::OutputPresolvedInstance, PARA_COMM_CALL, UG::ParaINT, UG::ProblemWasSolved, UG::Quiet, UG::RampUpPhaseProcess, SCIP_FIXED_MEMORY_FACTOR, SCIP_MEMORY_COPY_FACTOR, SCIP_PRESOLVIG_MEMORY_FACTOR, UG::SolutionFilePath, UG::SolverSettingsAtRacing, UG::SolverSettingsAtRootNode, UG::SolverSettingsExceptRootNode, UG::SolverSettingsForInitialPresolving, THROW_LOGICAL_ERROR1, THROW_LOGICAL_ERROR3, UG::TimeLimit, UG::UseRootNodeCuts, and virtualMemUsedAtLc.

Referenced by main(), and ScipParaInitiator::~ScipParaInitiator().

◆ interrupt()

void interrupt ( )

Definition at line 344 of file scipParaInitiator.h.

◆ isFeasibleSolution()

◆ isObjIntegral()

bool isObjIntegral ( )
virtual

returns whether the objective value is known to be integral in every feasible solution

Reimplemented from BbParaInitiator.

Definition at line 342 of file scipParaInitiator.h.

◆ makeRootNodeDiffSubproblem()

UG::BbParaDiffSubproblem* makeRootNodeDiffSubproblem ( )
virtual

◆ onlyLinearConsHandler()

bool onlyLinearConsHandler ( )
protected

Definition at line 2486 of file scipParaInitiator.cpp.

◆ outputFinalSolverStatistics()

void outputFinalSolverStatistics ( std::ostream *  os,
double  time 
)
virtual

◆ outputProblemInfo()

void outputProblemInfo ( int *  nNonLinearConsHdlrs)
protected

Definition at line 2443 of file scipParaInitiator.cpp.

◆ printSolverVersion()

void printSolverVersion ( std::ostream *  os)
virtual

print solver version output file (or NULL for standard output)

print solver version

Parameters
osoutput file (or NULL for standard output)

Implements ParaInitiator.

Definition at line 2211 of file scipParaInitiator.cpp.

Referenced by ScipParaInitiator::getGapValue().

◆ reInit()

int reInit ( int  nRestartedRacing)
virtual

reInit function

save incumbent solution

check if feasible solution is found or not. If it was found, then generate paraSolution

Implements ParaInitiator.

Definition at line 1083 of file scipParaInitiator.cpp.

References DEF_SCIP_PARA_COMM, UG::InstanceTransferMethod, UG::ProblemWasSolved, UG::Quiet, and UG::UseRootNodeCuts.

Referenced by ScipParaInitiator::~ScipParaInitiator().

◆ sendSolverInitializationMessage()

void sendSolverInitializationMessage ( )
virtual

send solver initialization message

if a feasible solution exists, broadcast the solution

Implements ParaInitiator.

Definition at line 1680 of file scipParaInitiator.cpp.

References UG::CommunicateTighterBoundsInRacing, DEF_SCIP_PARA_COMM, UG::DistributeBestPrimalSolution, UG::NoUpperBoundTransferInRacing, UG::ParaDOUBLE, UG::ParaINT, and UG::RampUpPhaseProcess.

Referenced by main(), and ScipParaInitiator::makeRootNodeDiffSubproblem().

◆ setDualBound()

void setDualBound ( double  bound)
virtual

set final dual bound

Implements BbParaInitiator.

Definition at line 2282 of file scipParaInitiator.cpp.

Referenced by ScipParaInitiator::isFeasibleSolution().

◆ setFinalSolverStatus()

void setFinalSolverStatus ( UG::FinalSolverState  status)
virtual

set final solver status

Implements BbParaInitiator.

Definition at line 2264 of file scipParaInitiator.cpp.

Referenced by ScipParaInitiator::isFeasibleSolution().

◆ setInitialStatOnDiffSubproblem()

void setInitialStatOnDiffSubproblem ( int  minDepth,
int  maxDepth,
UG::BbParaDiffSubproblem diffSubproblem 
)
virtual

◆ setNumberOfNodesSolved()

void setNumberOfNodesSolved ( long long  n)
virtual

set number of nodes solved

Implements BbParaInitiator.

Definition at line 2273 of file scipParaInitiator.cpp.

Referenced by ScipParaInitiator::isFeasibleSolution().

◆ setUserPlugins()

void setUserPlugins ( ScipUserPlugins inUi)

set user plugins

Definition at line 2502 of file scipParaInitiator.cpp.

References DEF_SCIP_PARA_COMM, and MINEPSILON.

Referenced by ScipParaInitiator::isFeasibleSolution(), and setUserPlugins().

◆ tryToSetIncumbentSolution()

bool tryToSetIncumbentSolution ( UG::BbParaSolution sol,
bool  checksol 
)
virtual

try to set incumbent solution

the given solution should be generated in original space, therefore the solution values cannot use for ParaSCIP

relax tolerance, since very small difference raised the following assertion

the given solution should be generated in original space, therefore the solution values cannot use for ParaSCIP

Implements BbParaInitiator.

Definition at line 1277 of file scipParaInitiator.cpp.

References UG::CheckFeasibilityInLC, EPSEQ, ScipParaSolution::getNVars(), ScipParaSolution::getObjectiveFunctionValue(), ScipParaInstance::getOrigProbIndex(), ScipParaInstance::getSolValuesForOriginalProblem(), ScipParaSolution::getValues(), ScipParaSolution::indexAmongSolvers(), ScipParaInstance::isOriginalIndeciesMap(), UG::Quiet, ScipParaSolution::setObjectiveFuntionValue(), and ScipParaSolution::setValue().

Referenced by ScipParaInitiator::makeRootNodeDiffSubproblem().

◆ writeParaInstance()

void writeParaInstance ( const std::string &  filename)
virtual

◆ writeSolution()

void writeSolution ( const std::string &  message)
virtual

◆ writeSolverParameters()

void writeSolverParameters ( std::ostream *  os)
virtual

write solver runtime parameters

Implements ParaInitiator.

Definition at line 1940 of file scipParaInitiator.cpp.

References ScipParaSolution::getObjectiveFunctionValue().

Referenced by ScipParaInitiator::getGapValue(), and outputSolverParams().

Member Data Documentation

◆ absgap

double absgap
protected

Definition at line 86 of file scipParaInitiator.h.

Referenced by ScipParaInitiator::getAbsgapValue().

◆ finalDualBound

SCIP_Real finalDualBound
protected

Definition at line 83 of file scipParaInitiator.h.

◆ finalState

UG::FinalSolverState finalState
protected

Definition at line 84 of file scipParaInitiator.h.

◆ gap

double gap
protected

Definition at line 87 of file scipParaInitiator.h.

Referenced by ScipParaInitiator::getGapValue().

◆ generatedIsolname

char* generatedIsolname
protected

Definition at line 80 of file scipParaInitiator.h.

Referenced by ScipParaInitiator::~ScipParaInitiator().

◆ instance

◆ isolname

char* isolname
protected

Definition at line 79 of file scipParaInitiator.h.

◆ logfile

FILE* logfile
protected

Definition at line 69 of file scipParaInitiator.h.

◆ logname

char* logname
protected

Definition at line 78 of file scipParaInitiator.h.

◆ messagehdlr

SCIP_MESSAGEHDLR* messagehdlr
protected

Definition at line 68 of file scipParaInitiator.h.

◆ nSolved

long long nSolved
protected

Definition at line 85 of file scipParaInitiator.h.

◆ objlimit

double objlimit
protected

Definition at line 88 of file scipParaInitiator.h.

◆ paraParams

UG::ParaParamSet* paraParams
protected

Definition at line 63 of file scipParaInitiator.h.

◆ probname

char* probname
protected

Definition at line 73 of file scipParaInitiator.h.

◆ racingSettingsName

char* racingSettingsName
protected

Definition at line 77 of file scipParaInitiator.h.

◆ scip

SCIP* scip
protected

Definition at line 72 of file scipParaInitiator.h.

◆ scipDiffParamSet

ScipDiffParamSet* scipDiffParamSet
protected

Definition at line 67 of file scipParaInitiator.h.

Referenced by ScipParaInitiator::~ScipParaInitiator().

◆ scipDiffParamSetRoot

ScipDiffParamSet* scipDiffParamSetRoot
protected

Definition at line 66 of file scipParaInitiator.h.

Referenced by ScipParaInitiator::~ScipParaInitiator().

◆ settingsName

char* settingsName
protected

Definition at line 76 of file scipParaInitiator.h.

◆ settingsNameLC

char* settingsNameLC
protected

Definition at line 74 of file scipParaInitiator.h.

◆ settingsNameRoot

char* settingsNameRoot
protected

Definition at line 75 of file scipParaInitiator.h.

◆ solution

◆ solutionFile

FILE* solutionFile
protected

Definition at line 70 of file scipParaInitiator.h.

◆ solutionFileName

char* solutionFileName
protected

Definition at line 81 of file scipParaInitiator.h.

Referenced by ScipParaInitiator::getSolutionFileName().

◆ transSolutionFile

FILE* transSolutionFile
protected

Definition at line 71 of file scipParaInitiator.h.

◆ userPlugins

ScipUserPlugins* userPlugins
protected

Definition at line 82 of file scipParaInitiator.h.

Referenced by ScipParaInitiator::~ScipParaInitiator().