Decision trees
Decision trees will be the first structure we'll implement and are, by far, the easiest way to understand how a decision was made. A decision tree is composed of branches and leaves. Each branch in the tree will wrap an evaluator, while each leaf will be composed of an action. Through a sequence of branch conditions, our decision tree will always result in a final action that our agent will perform.
To create a decision tree structure, we'll implement an update loop for our tree, which evaluates the root branch within the tree and then proceeds to process the resulting action. Once the action has been initialized, updated, and eventually, terminated, the decision tree will re-evaluate the tree from the root branch to determine the next action to be executed:
DecisionTree.lua
:
require "Action" DecisionTree = {}; function DecisionTree.SetBranch(self, branch) self.branch_ = branch; end function DecisionTree.Update(self, deltaTimeInMillis) -- Skip execution if the tree...