pooltree bug, which causes to try to use leaf nodes children, which do not exist very often
we must go up if pooltree is leaf
possibly this causes, that we did not have any success with pooltree?!
if (playouttree!=NULL)
{
while (!pooltree->isRoot() && pooltree->getRAVEPlayouts()<params->playout_poolrave_min_playouts)
pooltree=pooltree->getParent();
if (pooltree->getRAVEPlayouts()<params->playout_poolrave_min_playouts)
pooltree=NULL;
}
Comments (6)
-
repo owner -
reporter Sorry, I did not make it clear.
It makes absolutely no sense to use the leaf, as it has no children, and the childrens are used in the following lines.
-
repo owner while (!pooltree->isRoot() && pooltree->getRAVEPlayouts()<params->playout_poolrave_min_playouts) pooltree=pooltree->getParent();
Correct (I didn't think of that when I wrote my reply), but the above two lines already ascend the tree to a viable point. It might still make sense to skip every second layer though (move to grandparent and skip parent).
-
reporter my experience in debugging is, it is not a viable point, at least not if the playout_poolrave_min_playouts is around 40 and the uct_expand_after 20. In this case quickly most leafs get mor than playout_poolrave_min_playouts an poolrave is nearly never triggered.
-
repo owner Ah I see. Perhaps an explicit check to avoid leaf nodes is required?
-
repo owner - removed responsible
- Log in to comment
I can't recall what the original definition of poolRAVE specified, but your proposal of ascending up the tree (possibly to the grandparent, skipping the parent) sounds logical.