pooltree bug, which causes to try to use leaf nodes children, which do not exist very often

Issue #63 new
dsmic created an issue

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)

  1. Francois van Niekerk repo owner

    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.

  2. dsmic 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.

  3. Francois van Niekerk 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).

  4. dsmic 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.

  5. Log in to comment