36 #ifndef __SCIP_PARA_COMM_POINT_HDLR_H__ 37 #define __SCIP_PARA_COMM_POINT_HDLR_H__ 45 #include "objscip/objeventhdlr.h" 46 #include "scip/scipdefplugins.h" 76 void sendNode( SCIP *scip, SCIP_NODE* node,
int depth,
int nBranchVars, SCIP_VAR **branchVars, SCIP_Real *branchBounds, SCIP_BOUNDTYPE *boundTypes );
85 : scip::ObjEventhdlr::ObjEventhdlr(solver->getScip(),
"ScipParaObjCommPointHdlr",
"Event handler to communicate with LC"),
86 paraComm(comm), scipParaSolver(solver), scipParaObjLimitUpdator(updator), scipToCheckRootSolvability(0), originalScip(0), needToSendNode(false),
87 originalSelectionStrategy(true), previousNNodesSolved(0), previousLpIter(0),
88 cloned(false), interrupting(false), startedCollectingNodesForInitialRampUp(false)
95 SCIP_CALL_ABORT( SCIPcreate(&scipToCheckRootSolvability) );
97 SCIP_CALL_ABORT( SCIPincludeDefaultPlugins(scipToCheckRootSolvability) );
112 startedCollectingNodesForInitialRampUp =
true;
120 SCIP *inOriginalScip,
122 ) : scip::ObjEventhdlr::ObjEventhdlr(subScip,
"ScipParaObjCommPointHdlr",
"Event handler to communicate with LC"),
123 paraComm(comm), scipParaSolver(solver), scipParaObjLimitUpdator(0), scipToCheckRootSolvability(0), originalScip(inOriginalScip), needToSendNode(false),
124 originalSelectionStrategy(true), previousNNodesSolved(0), previousLpIter(0), changeNodeSelName(0),
125 cloned(inCloned), interrupting(false), startedCollectingNodesForInitialRampUp(false)
131 startedCollectingNodesForInitialRampUp =
true;
139 if( scipToCheckRootSolvability )
141 SCIP_CALL_ABORT( SCIPfree(&scipToCheckRootSolvability) );
148 originalSelectionStrategy =
true;
149 needToSendNode =
false;
150 interrupting =
false;
174 originalSelectionStrategy =
true;
180 SCIP_EVENTHDLR* eventhdlr
189 SCIP_EVENTHDLR* eventhdlr
192 #ifdef SCIP_EVENTTYPE_COMM 193 SCIP_CALL( SCIPcatchEvent( scip,
194 ( SCIP_EVENTTYPE_GBDCHANGED |
195 SCIP_EVENTTYPE_BOUNDTIGHTENED |
196 SCIP_EVENTTYPE_LPEVENT |
197 SCIP_EVENTTYPE_ROWEVENT |
199 SCIP_EVENTTYPE_NODEEVENT |
200 SCIP_EVENTTYPE_BESTSOLFOUND |
203 , eventhdlr, NULL, NULL) );
205 SCIP_CALL( SCIPcatchEvent( scip,
206 ( SCIP_EVENTTYPE_GBDCHANGED |
207 SCIP_EVENTTYPE_BOUNDTIGHTENED |
208 SCIP_EVENTTYPE_LPEVENT |
209 SCIP_EVENTTYPE_ROWEVENT |
211 SCIP_EVENTTYPE_NODEEVENT |
212 SCIP_EVENTTYPE_BESTSOLFOUND
214 , eventhdlr, NULL, NULL) );
223 nvars = SCIPgetNVars(scip);
224 vars = SCIPgetVars(scip);
226 for( i = 0; i < nvars ; ++i )
228 SCIP_CALL( SCIPcatchVarEvent(scip, vars[i], SCIP_EVENTTYPE_GBDCHANGED, eventhdlr, NULL, NULL) );
232 interrupting =
false;
249 SCIP_EVENTHDLR* eventhdlr
264 SCIP_EVENTHDLR* eventhdlr
277 SCIP_EVENTHDLR* eventhdlr
286 SCIP_EVENTHDLR* eventhdlr,
287 SCIP_EVENTDATA** eventdata
302 SCIP_EVENTHDLR* eventhdlr,
304 SCIP_EVENTDATA* eventdata
310 #endif // __SCIP_PARA_COMM_POINT_HDLR_H__
ScipParaObjLimitUpdator * scipParaObjLimitUpdator
ParaInstance extenstion for SCIP solver.
static ScipParaCommTh * comm
void changeSearchStrategy(SCIP *scip)
static const int CollectOnce
virtual SCIP_RETCODE scip_initsol(SCIP *scip, SCIP_EVENTHDLR *eventhdlr)
SCIP_Longint previousLpIter
static const int RootNodeSolvabilityCheck
bool startedCollectingNodesForInitialRampUp
virtual SCIP_RETCODE scip_exit(SCIP *scip, SCIP_EVENTHDLR *eventhdlr)
void createProblem(SCIP *scip, int method, bool noPreprocessingInLC, bool usetRootNodeCuts, ScipDiffParamSet *scipDiffParamSetRoot, ScipDiffParamSet *scipDiffParamSet, char *settingsNameLC, char *isolname)
~ScipParaObjCommPointHdlr()
bool checkRootNodeSolvabilityAndSendParaNode(SCIP *scip)
SCIP * scipToCheckRootSolvability
static const int UseRootNodeCuts
ParaSolver extension for SCIP: Parallelized solver implementation for SCIP.
SCIP_Longint previousNNodesSolved
void setOriginalPriority()
bool ifFeasibleInOriginalProblem(SCIP *scip, int nNewBranchVars, SCIP_VAR **newBranchVars, SCIP_Real *newBranchBounds)
bool originalSelectionStrategy
SCIP_Bool iscloneable(void) const
virtual SCIP_RETCODE scip_init(SCIP *scip, SCIP_EVENTHDLR *eventhdlr)
void setOriginalNodeSelectionStrategy()
static const int InstanceTransferMethod
ScipParaObjCommPointHdlr(UG::ParaComm *comm, ScipParaSolver *solver, ScipParaObjLimitUpdator *updator)
ParaComm extension for SCIP solver.
void processNewSolution(SCIP *scip, SCIP_EVENT *event)
void resetCommPointHdlr()
void sendNode(SCIP *scip, SCIP_NODE *node, int depth, int nBranchVars, SCIP_VAR **branchVars, SCIP_Real *branchBounds, SCIP_BOUNDTYPE *boundTypes)
virtual SCIP_RETCODE scip_exitsol(SCIP *scip, SCIP_EVENTHDLR *eventhdlr)
const char * changeNodeSelName
static const int RampUpPhaseProcess
const char * getChangeNodeSelName()
ParaInstance * getParaInstance()
get ParaInstance object
virtual SCIP_RETCODE scip_exec(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENT *event, SCIP_EVENTDATA *eventdata)
ScipParaSolver * scipParaSolver
virtual SCIP_RETCODE scip_delete(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA **eventdata)
int getIntParamValue(int param)
for int parameters
ObjCloneable * clone(SCIP *scip) const
ParaParamSet * getParaParamSet()
get ParaParamSet object
ScipParaObjCommPointHdlr(UG::ParaComm *comm, ScipParaSolver *solver, SCIP *subScip, SCIP *inOriginalScip, bool inCloned)
virtual SCIP_RETCODE scip_free(SCIP *scip, SCIP_EVENTHDLR *eventhdlr)
static const int NoPreprocessingInLC
Base class of communicator object.
bool getBoolParamValue(int param)
for bool parameters