HPTS++ : Hierarchical Parallel Transition System ++
HPTS++ is a platform independent toolkit to describe and handle the execution of multi-agent systems. It provides a specific object oriented language encapsulating C++ code for interfacing facilities and a runtime kernel providing automatic synchronization and adaptation facilities.
HPTS++ is the last evolution of the HPTS model. Firstly designed for behavioural animation, it provides a generic and platform independent framework to describe multi-agent systems. It is composed of a language allowing agent description through finite state machines and a runtime environment handling parallel state machine execution and offering synchronization facilities.
The language provides functionalities to describe state machines (states and transitions) and to inform them with user specific C++ code to call at a given point during execution. It is object oriented: state machines can inherit of other state machines and/or C++ classes to provide easy interfacing facilities. States and transition can be redefined in the inheritance hierarchy and the state machines can be augmented with new states and transitions. Moreover, state machines are objects that can provide a C++ interface (constructor/destructor/methods) for external calls. The compilation phase translates a state machine in a C++ class that can be compiled separately and linked through static or dynamic libraries. The runtime kernel handles parallel state machine execution and provides synchronization facilities. It includes a recent research work on automatic behaviour synchronization. Each state of a state machine is informed with a set of resources (or semaphores) to specify mutual exclusions between state machines. Each state machine is informed with a priority function specifying its importance at each simulation time step. Each transition is informed with a degree of preference allowing to describe possible adaptations in regard with resource availability or need. Those three properties are combined by a scheduling algorithm in order to automatically and consistently adapt state machines execution with respect to their respective priorities and resource conflicts. Moreover, this algorithm provides an automatic dead lock avoidance mechanism. This property enables independent state machine description and ensures consistent execution without knowledge of their description and without explicit hand coded synchronization. Moreover, the kernel supports dynamic state machine construction and dynamic resource declaration.
This toolkit runs under Windows (Visual C++ 6.0 et .NET), Linux (g++ 2.96 - 3.2) and IRIX systems (CC). It has been used in different research fields such as behavioural animation, scenario description and automatic cinematography. Its scheduling system provides new paradigms for multi-agent systems description while ensuring the overall consistency of the execution.