The "hunter domain" is a simulation test bed for TinyCog in order to test the following functionalities:
- Plan Recognition - Identifying the plans of other agents
- Planning With Uncertainty - Planning with Tasks that may have multiple outcomes or fail
- Social Planning - Develop plans including other cooperative and competitive Agents
The domain consists of a 1000 x 1000 2D map with a number of "hunter" Agents who need to hunt if they are hungry. "Deer" needs to graze in order to feed, with several locations on the map providing better "grass" than others. Deer will learn about the best spots for grazing and how to avoid hunters. Hunters will learn to hunt in packs, in order to compensate for the limited range of their spears.
The "hunter domain" is implemented using the following components:
- A Graphical User Interface:
The 2D GUI is written in HTML5 using the [Sencha ExtJS] library and shows the various Agents (hunters & deer) and other Objects (grass, mountains, water) on a 1000x1000 map. The GUI allows to inspect the inner state of agents and other Agents and Objects, acting as a high-level debugging facility.
- A HTTP interface:
The interface uses the [SWI-Prolog HTTP Support Packages] and exposes the TinyCog data structures as JSON using a REST style API.
- Hunter Domain Description Logic Ontology:
A Description Logic model defines Agents and Objects with 2D position and other attributes required by the HTTP interface.
- Hunter Domain Perception Pyramid:
This is a special-purpose implementation of a Perception Pyramid for the simulated 2D world. This pyramid consists only of a Spatial Relations subsystem, because all other information (3D Reconstruction and Object Configurator) are unnecessary in the simulated environment.
- Hunter Domain Primitive Tasks:
We implement activities like "walking to a position" or "hurling a spear" as Primitive Tasks, so the Planner does not need to enter in the details of these activities.
- Planner - Needs to be extended to handle Tasks with multiple outcomes
- Prediction Subsystem - Needs to be able to predict the behavior of other Agents.
- Episodic Memory - Needs to keep statistics about Agent's plans and their outcomes, serves as the base for the Prediction Subsystem.
- Plan Reasoning - Needs to implement simple optimization operations.
- Persistent Goals - Needs a first implementation so that hunters and deer can prioritize their plans.
- Attention Subsystem - Needs a first implementation in order to track and correct their plans.
Please see the [source code] and search for "hunter", the code is split among various files.