The tree is binary, each internal node represent a segmentation choice. For exemple a DistanceNode? would discriminate data according to a distance threshold. At the moment the internal node type used are
DistanceNode
VelocityNode
LateralVelocityNode
AccelerationNode
TimeSinceVelocityChangeNode
WallNode
WallReverseNode.
The leaves of the tree contains the observations that fit in the segmentation obtained by following the path from the root to the leaf. When a leaf contains enough observations it is split. The factors used for splitting a leaf are
The tree is rebuild at the beginning of each round. When there is too much data to rebuild the tree completely it is just partially rebuild.
The tree can be saved at the end of a game, in fact just a symbolic representation of the internal nodes, at the moment this is disabled I haven't tested if it is valuable.