An agent is an entity capable of producing actions, based on previous observations. Generally it will also learn from experience. It can interact directly with a Task.
This agent stores actions, states, and rewards encountered during interaction with an environment in a ReinforcementDataSet (which is a variation of SequentialDataSet). The stored history can be used for learning and is erased by resetting the agent. It also makes sure that integrateObservation, getAction and giveReward are called in exactly that order.
LearningAgent has a module, a learner, that modifies the module, and an explorer, which perturbs the actions. It can have learning enabled or disabled and can be used continuously or with episodes.