75#define EVENTHDLR_NAME "solvingphase"
76#define EVENTHDLR_DESC "event handler to adjust settings depending on current stage"
78#define EVENTHDLR_EVENT SCIP_EVENTTYPE_BESTSOLFOUND | SCIP_EVENTTYPE_NODEBRANCHED | SCIP_EVENTTYPE_NODEFOCUSED
79#define TRANSITIONMETHODS "elor"
81#define DEFAULT_SETNAME "-"
82#define DEFAULT_TRANSITIONMETHOD 'r'
83#define DEFAULT_NODEOFFSET 50L
84#define DEFAULT_FALLBACK FALSE
85#define DEFAULT_INTERRUPTOPTIMAL FALSE
87#define DEFAULT_ENABLED FALSE
88#define DEFAULT_TESTMODE FALSE
90#define DEFAULT_USERESTART1TO2 FALSE
91#define DEFAULT_USERESTART2TO3 FALSE
92#define DEFAULT_USEEMPHSETTINGS TRUE
95#define DEFAULT_LOGREGRESSION_XTYPE 'n'
96#define LOGREGRESSION_XTYPES "lnt"
115struct SCIP_EventhdlrData
117 char logregression_xtype;
120 char* improvesetname;
126 char transitionmethod;
143 int nnondefaultparams;
144 int nondefaultparamssize;
149 int nnodesbelowincumbent;
172 if( estim1 < estim2 )
174 else if( estim1 > estim2 )
185 if( number1 < number2 )
187 else if( number1 > number2 )
210 for( n = 0; n <
nnodes; ++n )
234 assert(pos >= 0 && pos < depthinfo->nminnodes);
238 ++eventhdlrdata->nrank1nodes;
243 ++eventhdlrdata->nnodesbelowincumbent;
247 eventhdlrdata->nnodesleft +=
nnodes;
279 --eventhdlrdata->nrank1nodes;
297 return eventhdlrdata->nrank1nodes;
316 return eventhdlrdata->nnodesbelowincumbent;
344 for( d = 0; d < eventhdlrdata->maxdepth; ++d )
345 eventhdlrdata->depthinfos[d]->nminnodes = 0;
347 eventhdlrdata->nrank1nodes = 0;
348 eventhdlrdata->nnodesbelowincumbent = 0;
349 eventhdlrdata->nnodesleft = 0;
351 nleaves = nchildren = nsiblings = 0;
363 eventhdlrdata->newbestsol =
FALSE;
383 (*depthinfo)->nsolvednodes = 0;
384 (*depthinfo)->nminnodes = 0;
385 (*depthinfo)->minnodescapacity = 2;
439 eventhdlrdata->nnodesbelowincumbent--;
446 --(eventhdlrdata->nrank1nodes);
453 --eventhdlrdata->nnodesleft;
468 oldsize = eventhdlrdata->maxdepth;
477 else if( nodedepth + 1 >= eventhdlrdata->maxdepth )
481 newsize = 2 * nodedepth;
485 if( newsize > oldsize )
489 for(
c = oldsize;
c < newsize; ++
c )
494 eventhdlrdata->maxdepth = newsize;
496 assert(newsize > nodedepth);
553 for( n = 0; n <
nnodes; ++n )
563 for( n = 0; n <
nnodes; ++n )
573 for( n = 0; n <
nnodes; ++n )
593 switch( eventhdlrdata->logregression_xtype )
643 regression = eventhdlrdata->regression;
650 currentx =
getX(
scip, eventhdlrdata);
684 return ((
SCIPgetNNodes(
scip) > eventhdlrdata->nodeoffset) && (eventhdlrdata->nnodesbelowincumbent == 0));
719 lambda = (axisintercept - primalbound) / (firstprimalbound - primalbound);
738 referencevalue = eventhdlrdata->optimalvalue;
745 if(
EPSZ((primalbound - referencevalue)/max, 1e-9) )
762 switch( eventhdlrdata->transitionmethod )
839 switch(eventhdlrdata->solvingphase)
852 SCIPdebugMsg(
scip,
"Unknown solving phase: %d -> ABORT!\n ", eventhdlrdata->solvingphase);
871 char* paramfilename =
NULL;
874 switch(eventhdlrdata->solvingphase)
877 paramfilename = eventhdlrdata->feassetname;
880 paramfilename = eventhdlrdata->improvesetname;
883 paramfilename = eventhdlrdata->proofsetname;
887 SCIPdebugMsg(
scip,
"Unknown solving phase: %d -> ABORT!\n ", eventhdlrdata->solvingphase);
897 file = fopen(paramfilename,
"r");
926 const char* relevantparams[] = {
939 "limits/autorestartnodes",
941 "solvingphases/enabled",
942 "solvingphases/fallback",
943 "solvingphases/interruptoptimal",
944 "solvingphases/nodeoffset",
945 "solvingphases/feassetname",
946 "solvingphases/proofsetname",
947 "solvingphases/optimalvalue",
948 "solvingphases/improvesetname",
949 "solvingphases/testmode",
950 "solvingphases/transitionmethod",
951 "solvingphases/useemphsettings",
952 "solvingphases/userestart1to2",
953 "solvingphases/userestart2to3",
954 "solvingphases/xtype"
956 int nrelevantparams = 28;
959 for( p = 0; p < nrelevantparams; ++p )
972 for( p = 0; p < eventhdlrdata->nnondefaultparams; ++p )
998 if( eventhdlrdata->useemphsettings )
1032 oldsolvingphase = eventhdlrdata->solvingphase;
1038 if( oldsolvingphase == eventhdlrdata->solvingphase )
1043 eventhdlrdata->interruptoptimal )
1083 regressionx =
getX(
scip, eventhdlrdata);
1087 if(
SCIPisEQ(
scip, eventhdlrdata->lastx, regressionx) )
1094 eventhdlrdata->lastx = regressionx;
1095 eventhdlrdata->lasty = regressiony;
1115 eventhdlrdata->newbestsol =
TRUE;
1139 eventhdlrdata->newbestsol =
FALSE;
1179 if( eventhdlrdata->testmode )
1188 if( eventhdlrdata->testmode )
1198 if( eventhdlrdata->testmode )
1208 if( eventhdlrdata->testmode )
1223#ifdef SCIP_DISABLED_CODE
1238#define eventCopySolvingphase NULL
1271 eventhdlrdata->depthinfos =
NULL;
1272 eventhdlrdata->maxdepth = 0;
1273 eventhdlrdata->nnodesbelowincumbent = 0;
1274 eventhdlrdata->nnodesleft = 0;
1275 eventhdlrdata->nrank1nodes = 0;
1277 eventhdlrdata->newbestsol =
FALSE;
1292 if( eventhdlrdata->maxdepth > 0 )
1297 for(
c = 0;
c < eventhdlrdata->maxdepth; ++
c )
1304 eventhdlrdata->maxdepth = 0;
1324 eventhdlrdata->nnondefaultparams = 0;
1325 eventhdlrdata->nondefaultparams =
NULL;
1326 eventhdlrdata->nondefaultparamssize = 0;
1329 for( p = 0; p < nparams; ++p )
1336 if( eventhdlrdata->nnondefaultparams == 0 )
1339 eventhdlrdata->nondefaultparamssize = 8;
1341 else if( eventhdlrdata->nnondefaultparams == eventhdlrdata->nondefaultparamssize )
1343 eventhdlrdata->nondefaultparamssize *= 2;
1345 eventhdlrdata->nnondefaultparams, eventhdlrdata->nondefaultparamssize) );
1348 eventhdlrdata->nondefaultparams[eventhdlrdata->nnondefaultparams++] = param;
1374 eventhdlrdata->nnondefaultparams = 0;
1375 eventhdlrdata->nondefaultparams =
NULL;
1376 eventhdlrdata->nondefaultparamssize = 0;
1379 if( eventhdlrdata->testmode )
1381 else if( eventhdlrdata->enabled )
1390 if( eventhdlrdata->enabled || eventhdlrdata->testmode )
1443 if( eventhdlrdata->testmode )
1447 assert(eventhdlrdata->enabled);
1462#define DISP_NAME_NRANK1NODES "nrank1nodes"
1463#define DISP_DESC_NRANK1NODES "current number of rank1 nodes left"
1464#define DISP_HEAD_NRANK1NODES "rank1"
1465#define DISP_WIDT_NRANK1NODES 7
1466#define DISP_PRIO_NRANK1NODES 40000
1467#define DISP_POSI_NRANK1NODES 500
1468#define DISP_STRI_NRANK1NODES TRUE
1486#define DISP_NAME_NNODESBELOWINC "nnodesbelowinc"
1487#define DISP_DESC_NNODESBELOWINC "current number of nodes with an estimate better than the current incumbent"
1488#define DISP_HEAD_NNODESBELOWINC "nbInc"
1489#define DISP_WIDT_NNODESBELOWINC 6
1490#define DISP_PRIO_NNODESBELOWINC 40000
1491#define DISP_POSI_NNODESBELOWINC 550
1492#define DISP_STRI_NNODESBELOWINC TRUE
1518 eventhdlrdata =
NULL;
1522 eventhdlrdata->feassetname =
NULL;
1523 eventhdlrdata->improvesetname =
NULL;
1524 eventhdlrdata->proofsetname =
NULL;
1526 eventhdlrdata->depthinfos =
NULL;
1527 eventhdlrdata->maxdepth = 0;
1528 eventhdlrdata->eventfilterpos = -1;
1531 eventhdlrdata->regression =
NULL;
1538 eventExecSolvingphase, eventhdlrdata) );
1543 NULL,
NULL,
NULL,
NULL,
NULL,
NULL, dispOutputNRank1Nodes,
NULL,
DISP_WIDT_NRANK1NODES,
DISP_PRIO_NRANK1NODES,
DISP_POSI_NRANK1NODES,
1546 NULL,
NULL,
NULL,
NULL,
NULL,
NULL, dispOutputNnodesbelowinc,
NULL,
DISP_WIDT_NNODESBELOWINC,
DISP_PRIO_NNODESBELOWINC,
DISP_POSI_NNODESBELOWINC,
1578 "transition method: Possible options are 'e'stimate,'l'ogarithmic regression,'o'ptimal-value based,'r'ank-1",
1581 "should the event handler interrupt the solving process after optimal solution was found?",
1585 "should a restart be applied between the feasibility and improvement phase?",
1589 "should a restart be applied between the improvement and the proof phase?",
1600 "should emphasis settings for the solving phases be used, or settings files?",
1617 if( eventhdlr ==
NULL )
1623 return eventhdlrdata->solvingphase;
1637 if( eventhdlr ==
NULL )
1643 return eventhdlrdata->phaseflags;
#define SCIP_STRINGEQ(name, reference, retcode)
#define DEFAULT_USEEMPHSETTINGS
static SCIP_Bool checkRankOneTransition(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
static SCIP_RETCODE releaseNodeInformation(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata, SCIP_NODE *node)
#define DISP_PRIO_NNODESBELOWINC
#define DEFAULT_LOGREGRESSION_XTYPE
#define DISP_POSI_NRANK1NODES
#define DEFAULT_USERESTART1TO2
#define DEFAULT_INTERRUPTOPTIMAL
static SCIP_Bool transitionPhase3(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
static SCIP_RETCODE applySolvingPhase(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DISP_DESC_NRANK1NODES
static SCIP_Bool checkEstimateCriterion(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_SOLVINGPHASEFLAG SCIPgetSolvingPhaseFlags(SCIP *scip)
static SCIP_RETCODE adaptSolverBehavior(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DISP_HEAD_NNODESBELOWINC
static SCIP_RETCODE addNodesInformation(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata, SCIP_NODE **nodes, int nnodes)
#define LOGREGRESSION_XTYPES
static SCIP_Bool checkLogCriterion(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
static void testCriteria(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
static int getNRank1Nodes(SCIP *scip)
static SCIP_Real getX(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DISP_NAME_NNODESBELOWINC
#define DISP_WIDT_NNODESBELOWINC
SCIP_SOLVINGPHASE SCIPgetSolvingPhase(SCIP *scip)
#define DEFAULT_NODEOFFSET
static SCIP_RETCODE collectNondefaultParams(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
static void releaseNodeFromDepthInfo(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata, SCIP_NODE *node)
static SCIP_RETCODE fixOrUnfixRelevantParameters(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata, SCIP_Bool fix)
static void determineSolvingPhase(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DISP_HEAD_NRANK1NODES
#define DEFAULT_TRANSITIONMETHOD
#define DISP_STRI_NRANK1NODES
static int getNNodesBelowIncumbent(SCIP *scip)
static void removeNode(SCIP_NODE *node, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DISP_PRIO_NRANK1NODES
SCIP_RETCODE SCIPincludeEventHdlrSolvingphase(SCIP *scip)
struct DepthInfo DEPTHINFO
static SCIP_RETCODE changeEmphasisParameters(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DISP_WIDT_NRANK1NODES
static SCIP_RETCODE createDepthinfo(SCIP *scip, DEPTHINFO **depthinfo)
static int checkLeavesBelowIncumbent(SCIP *scip)
static SCIP_Real getCurrentRegressionTangentAxisIntercept(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DEFAULT_USERESTART2TO3
#define DISP_POSI_NNODESBELOWINC
#define DISP_NAME_NRANK1NODES
#define eventCopySolvingphase
#define DISP_DESC_NNODESBELOWINC
static SCIP_RETCODE updateLogRegression(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
static SCIP_RETCODE freeDepthinfo(SCIP *scip, DEPTHINFO **depthinfo)
static SCIP_RETCODE recomputeNodeInformation(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define DISP_STRI_NNODESBELOWINC
static SCIP_RETCODE updateDataStructures(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata, SCIP_EVENTTYPE eventtype)
static SCIP_RETCODE ensureDepthInfoArraySize(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata, SCIP_NODE *node)
static SCIP_RETCODE changeParametersUsingSettingsFiles(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
static SCIP_Bool checkOptimalSolution(SCIP *scip, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define TRANSITIONMETHODS
eventhdlr for solving phase dependent parameter adjustment
#define SCIP_SOLVINGPHASEFLAG_OPTIMAL
#define SCIP_SOLVINGPHASEFLAG_LOG
@ SCIP_SOLVINGPHASE_IMPROVEMENT
@ SCIP_SOLVINGPHASE_PROOF
@ SCIP_SOLVINGPHASE_FEASIBILITY
@ SCIP_SOLVINGPHASE_UNINITIALIZED
#define SCIP_SOLVINGPHASEFLAG_NONE
#define SCIP_SOLVINGPHASEFLAG_ESTIMATE
#define SCIP_SOLVINGPHASEFLAG_RANK1
uint8_t SCIP_SOLVINGPHASEFLAG
enum SCIP_SolvingPhase SCIP_SOLVINGPHASE
SCIP_STAGE SCIPgetStage(SCIP *scip)
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
SCIP_MESSAGEHDLR * SCIPgetMessagehdlr(SCIP *scip)
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPaddLongintParam(SCIP *scip, const char *name, const char *desc, SCIP_Longint *valueptr, SCIP_Bool isadvanced, SCIP_Longint defaultvalue, SCIP_Longint minvalue, SCIP_Longint maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPaddCharParam(SCIP *scip, const char *name, const char *desc, char *valueptr, SCIP_Bool isadvanced, char defaultvalue, const char *allowedvalues, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
int SCIPgetNParams(SCIP *scip)
SCIP_RETCODE SCIPaddStringParam(SCIP *scip, const char *name, const char *desc, char **valueptr, SCIP_Bool isadvanced, const char *defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPaddRealParam(SCIP *scip, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPreadParams(SCIP *scip, const char *filename)
SCIP_RETCODE SCIPunfixParam(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetEmphasis(SCIP *scip, SCIP_PARAMEMPHASIS paramemphasis, SCIP_Bool quiet)
SCIP_PARAM ** SCIPgetParams(SCIP *scip)
SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPfixParam(SCIP *scip, const char *name)
const char * SCIPdispGetName(SCIP_DISP *disp)
void SCIPdispInt(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, int val, int width)
SCIP_RETCODE SCIPincludeDisp(SCIP *scip, const char *name, const char *desc, const char *header, SCIP_DISPSTATUS dispstatus, SCIP_DECL_DISPCOPY((*dispcopy)), SCIP_DECL_DISPFREE((*dispfree)), SCIP_DECL_DISPINIT((*dispinit)), SCIP_DECL_DISPEXIT((*dispexit)), SCIP_DECL_DISPINITSOL((*dispinitsol)), SCIP_DECL_DISPEXITSOL((*dispexitsol)), SCIP_DECL_DISPOUTPUT((*dispoutput)), SCIP_DISPDATA *dispdata, int width, int priority, int position, SCIP_Bool stripline)
SCIP_RETCODE SCIPsetEventhdlrFree(SCIP *scip, SCIP_EVENTHDLR *eventhdlr,)
SCIP_RETCODE SCIPsetEventhdlrInitsol(SCIP *scip, SCIP_EVENTHDLR *eventhdlr,)
SCIP_RETCODE SCIPsetEventhdlrCopy(SCIP *scip, SCIP_EVENTHDLR *eventhdlr,)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_RETCODE SCIPsetEventhdlrExit(SCIP *scip, SCIP_EVENTHDLR *eventhdlr,)
SCIP_EVENTHDLR * SCIPfindEventhdlr(SCIP *scip, const char *name)
SCIP_RETCODE SCIPsetEventhdlrExitsol(SCIP *scip, SCIP_EVENTHDLR *eventhdlr,)
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
SCIP_EVENTHDLRDATA * SCIPeventhdlrGetData(SCIP_EVENTHDLR *eventhdlr)
SCIP_RETCODE SCIPsetEventhdlrInit(SCIP *scip, SCIP_EVENTHDLR *eventhdlr,)
void SCIPeventhdlrSetData(SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
SCIP_RETCODE SCIPcatchEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_NODE * SCIPeventGetNode(SCIP_EVENT *event)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_NODETYPE SCIPnodeGetType(SCIP_NODE *node)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
SCIP_Real SCIPnodeGetEstimate(SCIP_NODE *node)
int SCIPnodeGetDepth(SCIP_NODE *node)
int SCIPgetNSols(SCIP *scip)
SCIP_RETCODE SCIPrestartSolve(SCIP *scip)
SCIP_RETCODE SCIPinterruptSolve(SCIP *scip)
SCIP_Real SCIPgetPrimalbound(SCIP *scip)
SCIP_Real SCIPgetUpperbound(SCIP *scip)
SCIP_Longint SCIPgetNNodes(SCIP *scip)
SCIP_Real SCIPgetFirstPrimalBound(SCIP *scip)
SCIP_Longint SCIPgetNTotalNodes(SCIP *scip)
SCIP_Longint SCIPgetNDelayedCutoffs(SCIP *scip)
SCIP_Longint SCIPgetNLPIterations(SCIP *scip)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisNegative(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
int SCIPgetNChildren(SCIP *scip)
SCIP_RETCODE SCIPgetOpenNodesData(SCIP *scip, SCIP_NODE ***leaves, SCIP_NODE ***children, SCIP_NODE ***siblings, int *nleaves, int *nchildren, int *nsiblings)
SCIP_RETCODE SCIPgetChildren(SCIP *scip, SCIP_NODE ***children, int *nchildren)
int SCIPgetNNodesLeft(SCIP *scip)
SCIP_RETCODE SCIPgetLeaves(SCIP *scip, SCIP_NODE ***leaves, int *nleaves)
SCIP_RETCODE SCIPgetSiblings(SCIP *scip, SCIP_NODE ***siblings, int *nsiblings)
SCIP_NODE * SCIPgetCurrentNode(SCIP *scip)
void SCIPregressionRemoveObservation(SCIP_REGRESSION *regression, SCIP_Real x, SCIP_Real y)
void SCIPregressionAddObservation(SCIP_REGRESSION *regression, SCIP_Real x, SCIP_Real y)
SCIP_Real SCIPregressionGetIntercept(SCIP_REGRESSION *regression)
int SCIPregressionGetNObservations(SCIP_REGRESSION *regression)
void SCIPregressionFree(SCIP_REGRESSION **regression)
SCIP_RETCODE SCIPregressionCreate(SCIP_REGRESSION **regression)
void SCIPregressionReset(SCIP_REGRESSION *regression)
SCIP_Real SCIPregressionGetSlope(SCIP_REGRESSION *regression)
SCIP_Bool SCIPsortedvecFindPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), void *val, int len, int *pos)
void SCIPsortedvecInsertPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), void *keyval, int *len, int *pos)
void SCIPsortedvecDelPosPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int pos, int *len)
assert(minobj< SCIPgetCutoffbound(scip))
SCIP_Bool SCIPparamIsDefault(SCIP_PARAM *param)
const char * SCIPparamGetName(SCIP_PARAM *param)
SCIP_Bool SCIPparamIsFixed(SCIP_PARAM *param)
public methods for displaying runtime statistics
public methods for managing events
public methods for message output
public data structures and miscellaneous methods
methods for sorting joint arrays of various types
public methods for handling parameter settings
public methods for branch and bound tree
public methods for display handler plugins
public methods for event handler plugins and event handlers
public methods for memory management
public methods for message handling
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for solutions
public methods for querying solving statistics
public methods for timing
public methods for the branch-and-bound tree
#define SCIP_DECL_DISPOUTPUT(x)
struct SCIP_Eventhdlr SCIP_EVENTHDLR
#define SCIP_DECL_EVENTINITSOL(x)
#define SCIP_DECL_EVENTEXIT(x)
#define SCIP_EVENTTYPE_NODEFOCUSED
struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
#define SCIP_DECL_EVENTEXEC(x)
#define SCIP_EVENTTYPE_NODEBRANCHED
#define SCIP_DECL_EVENTCOPY(x)
#define SCIP_DECL_EVENTINIT(x)
#define SCIP_EVENTTYPE_BESTSOLFOUND
#define SCIP_DECL_EVENTFREE(x)
#define SCIP_DECL_EVENTEXITSOL(x)
struct SCIP_Regression SCIP_REGRESSION
#define SCIP_DECL_SORTPTRCOMP(x)
@ SCIP_PARAMEMPHASIS_DEFAULT
@ SCIP_PARAMEMPHASIS_PHASEIMPROVE
@ SCIP_PARAMEMPHASIS_PHASEPROOF
@ SCIP_PARAMEMPHASIS_PHASEFEAS
struct SCIP_Param SCIP_PARAM
enum SCIP_ParamEmphasis SCIP_PARAMEMPHASIS
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_Node SCIP_NODE