SCIP_NodeselData
124assert(nodeseldata !=
NULL);
125assert(node !=
NULL);
129assert(nodenumber >= 0);
131 if( nodenumber >= nodeseldata->sizenodevisits )
134 returnnodeseldata->nodevisits[nodenumber];
146assert(nodeseldata !=
NULL);
147assert(node !=
NULL);
149visits = nodeseldata->nodevisits;
150assert(visits !=
NULL);
158 if( nodenumber < nodeseldata->sizenodevisits )
159++(visits[nodenumber]);
164 while( node !=
NULL);
185 for( n = 0; n < nnodesels; ++n )
188newpriority =
MIN(newpriority, prio);
190newpriority =
MAX(newpriority, INT_MIN + 1);
227absrootlowerbound =
REALABS(rootlowerbound);
228minabs =
MIN(absscore, absrootlowerbound);
229minabs =
MAX(minabs, 1.0);
231score = (rootlowerbound - score) / minabs;
238assert(parent !=
NULL);
241 if( parentvisits > 0 )
246score += nodeseldata->weight * parentvisits / (
SCIP_Real)(1 + visits);
264assert(node1 != node2);
282assert(node1 !=
NULL);
283assert(node2 !=
NULL);
319assert(selnode !=
NULL);
325 for( n = 0; n <
nnodes; ++n )
327assert(nodes[n] !=
NULL);
341assert(nodeseldata !=
NULL);
344 if( nodeseldata->nodevisits ==
NULL)
353 if( nodeseldata->sizenodevisits < 2 * nodeseldata->nodelimit && nodeseldata->sizenodevisits < (
int)(2 *
SCIPgetNNodes(
scip)))
356newcapacity =
MIN(2 * nodeseldata->sizenodevisits, 2 * nodeseldata->nodelimit);
358 SCIPdebugMsg(
scip,
"Resizing node visits array, old capacity: %d new capacity : %d\n", nodeseldata->sizenodevisits, newcapacity);
359assert(newcapacity > nodeseldata->sizenodevisits);
362 BMSclearMemoryArray(&(nodeseldata->nodevisits[nodeseldata->sizenodevisits]), newcapacity - nodeseldata->sizenodevisits);
364nodeseldata->sizenodevisits = newcapacity;
390assert(nodesel !=
NULL);
394assert(nodeseldata !=
NULL);
395nodeseldata->nselections = 0;
396nodeseldata->sizenodevisits = 0;
408assert(nodesel !=
NULL);
412assert(nodeseldata !=
NULL);
414 if( nodeseldata->sizenodevisits > 0 )
416assert(nodeseldata->nodevisits !=
NULL);
419nodeseldata->sizenodevisits = 0;
420nodeseldata->nselections = 0;
434assert(nodesel !=
NULL);
437 if( nodeseldata->sizenodevisits > 0 )
439assert(nodeseldata->nodevisits !=
NULL);
461assert(nodesel !=
NULL);
464assert(selnode !=
NULL);
469assert(nodeseldata !=
NULL);
492 if( *selnode ==
NULL)
499++nodeseldata->nselections;
502 if( nodeseldata->nselections == nodeseldata->nodelimit )
550nodeseldata->nodevisits =
NULL;
551nodeseldata->nselections = 0;
552nodeseldata->sizenodevisits = 0;
561assert(nodesel !=
NULL);
571 "maximum number of nodes before switching to default rule",
574 "weight for visit quotient of node selection rule",
577 "should the estimate (TRUE) or lower bound of a node be used for UCT score?",
#define SCIP_LONGINT_FORMAT
void SCIPverbMessage(SCIP *scip, SCIP_VERBLEVEL msgverblevel, FILE *file, const char *formatstr,...)
SCIP_RETCODE SCIPincludeNodeselUct(SCIP *scip)
SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, 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 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)
#define SCIPreallocMemoryArray(scip, ptr, newnum)
#define SCIPallocClearMemoryArray(scip, ptr, num)
#define SCIPfreeMemoryArray(scip, ptr)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPallocBlockMemory(scip, ptr)
SCIP_Real SCIPnodeGetLowerbound(SCIP_NODE *node)
SCIP_Longint SCIPnodeGetNumber(SCIP_NODE *node)
SCIP_NODE * SCIPnodeGetParent(SCIP_NODE *node)
SCIP_Real SCIPnodeGetEstimate(SCIP_NODE *node)
int SCIPnodeGetDepth(SCIP_NODE *node)
SCIP_NODESEL ** SCIPgetNodesels(SCIP *scip)
SCIP_RETCODE SCIPincludeNodeselBasic(SCIP *scip, SCIP_NODESEL **nodesel, const char *name, const char *desc, int stdpriority, int memsavepriority, SCIP_DECL_NODESELSELECT((*nodeselselect)), SCIP_DECL_NODESELCOMP((*nodeselcomp)), SCIP_NODESELDATA *nodeseldata)
SCIP_RETCODE SCIPsetNodeselStdPriority(SCIP *scip, SCIP_NODESEL *nodesel, int priority)
void SCIPnodeselSetData(SCIP_NODESEL *nodesel, SCIP_NODESELDATA *nodeseldata)
SCIP_RETCODE SCIPsetNodeselFree(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELFREE((*nodeselfree)))
SCIP_NODESELDATA * SCIPnodeselGetData(SCIP_NODESEL *nodesel)
int SCIPnodeselGetStdPriority(SCIP_NODESEL *nodesel)
int SCIPgetNNodesels(SCIP *scip)
SCIP_RETCODE SCIPsetNodeselCopy(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELCOPY((*nodeselcopy)))
const char * SCIPnodeselGetName(SCIP_NODESEL *nodesel)
SCIP_RETCODE SCIPsetNodeselExitsol(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELEXITSOL((*nodeselexitsol)))
SCIP_RETCODE SCIPsetNodeselInitsol(SCIP *scip, SCIP_NODESEL *nodesel, SCIP_DECL_NODESELINITSOL((*nodeselinitsol)))
SCIP_Real SCIPgetLowerboundRoot(SCIP *scip)
SCIP_Longint SCIPgetNNodes(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 SCIPisEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPgetOpenNodesData(SCIP *scip, SCIP_NODE ***leaves, SCIP_NODE ***children, SCIP_NODE ***siblings, int *nleaves, int *nchildren, int *nsiblings)
int SCIPgetNNodesLeft(SCIP *scip)
memory allocation routines
#define BMSclearMemoryArray(ptr, num)
static int compareNodes(SCIP *scip, SCIP_NODESELDATA *nodeseldata, SCIP_NODE *node1, SCIP_NODE *node2)
static int nodeGetVisits(SCIP_NODESELDATA *nodeseldata, SCIP_NODE *node)
static SCIP_Real nodeGetUctScore(SCIP *scip, SCIP_NODE *node, SCIP_NODESELDATA *nodeseldata)
static void updateVisits(SCIP_NODESELDATA *nodeseldata, SCIP_NODE *node)
#define DEFAULT_USEESTIMATE
static SCIP_DECL_NODESELFREE(nodeselFreeUct)
static SCIP_RETCODE turnoffNodeSelector(SCIP *scip, SCIP_NODESEL *nodesel)
#define DEFAULT_NODELIMIT
static SCIP_DECL_NODESELSELECT(nodeselSelectUct)
#define NODESEL_MEMSAVEPRIORITY
static SCIP_DECL_NODESELEXITSOL(nodeselExitsolUct)
#define NODESEL_STDPRIORITY
static SCIP_DECL_NODESELINITSOL(nodeselInitsolUct)
static SCIP_RETCODE ensureMemorySize(SCIP *scip, SCIP_NODESELDATA *nodeseldata)
static void selectBestNode(SCIP *scip, SCIP_NODE **selnode, SCIP_NODESELDATA *nodeseldata, SCIP_NODE **nodes, int nnodes)
static SCIP_DECL_NODESELCOPY(nodeselCopyUct)
static SCIP_DECL_NODESELCOMP(nodeselCompUct)
uct node selector which balances exploration and exploitation by considering node visits
public methods for message output
public methods for node selectors
public methods for branch and bound tree
public methods for memory management
public methods for message handling
public methods for node selector plugins
public methods for numerical tolerances
public methods for SCIP parameter handling
public methods for querying solving statistics
public methods for the branch-and-bound tree
struct SCIP_NodeselData SCIP_NODESELDATA
enum SCIP_Retcode SCIP_RETCODE
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4