Created: 04/15/99 :: Updated:2/19/03 :: Visitors: :: © A. Drogoul 1993-2003 ::

Table of contents


EMF is a domain-independent behavioural model for building reactive agents. It relies on some key concepts, mainly borrowed from classical ethological works (i.e. K. Lorenz). This architecture assumes that the whole behaviour of an agent can be described by a set of independent tasks, each being made out of a sequence of elementary behaviours called primitives. The tasks are exclusive and they are triggered by an external or internal stimulation. This stimulation is represented in the model by a variable strength stimulus (which can be internal or provided by the environment), associated with a preexisting motivation, which is expressed by the tasks’ threshold ,weight and activity level. The weight stands for the relative importance of the task within the agent. With the basic behaviour reinforcement process provided to the simulated ants, it is also used to accumulate the former experiences of the agent in a given task. A high weight will then indicate a specialization of the agent in this task. The weight is used to compute the activation level of a task when it is triggered by a stimulus. Its reinforcement is considered as a long-term positive feed-back. The threshold is viewed as an indicator of the “motivation” of the agent to perform a given task. This motivation is continuously increased as long as the task is not activated, and decreased whenever it becomes active. It respectively results in decreasing the threshold of the neglected tasks and increasing the threshold of the current task during the task selection process. These operations are considered as short-term positive and negative feedbacks. Finally, the activity level is viewed as an indicator of the agent’s motivation to continue the task it is performing. This value is initialized with the activation level of the task and then continuously decreased as long as the task remains active. When it reaches zero, the task is stopped. Hence, a task is considered as activable when its threshold is lower than its weight multiplied by the strength of its triggering stimulus (= its activation level). And it is selected when this activation level surpasses the activity level of the current task. The agent then switches from the previous current task to the new one.

As it is defined in the kernel of EMF, agents do not really communicate with one another. They just can drop stimuli in the environment, which may trigger the behaviors of other agents - or may not. Dropping a stimulus results in creating a gradient field around the emitter (by diffusing ths stimulus in concentrated circles around it), and can then be assimilated to a chemical, visual or oral propagation of information. Some of these communication are part of the agents’ behavior (they can choose to deliberately propagate a given stimulus to attract or repulse other agents), and some of them are totally independant from their behavior (from instance, we can assume that, whatever its behavior, an agent will always be visible to other agents, be they friends or enemies, if they can see it). The propagation of stimuli is only stopped by obstacles (walls, etc..).

EMF follows an object-oriented approach, although the agents do not use message passing as a mean of communication. Thus, agents are instances of classes that inherit from TAgent or one of its subclasses, which implement the abstract model of behaviour they are going to use. Each of these classes will represent a given type of agents and will provide them with the knowledge they share together: primitives, tasks, stimuli and other domain-dependent pieces of knowledge. These information can be described in the agent’s class, or inherited from higher classes. That’s why the subclasses of TAgent are divided into two sets: abstract classes and concrete classes. Abstract classes (like TAgent) cannot be instantiated. They are used to define the primitives and knowledge associated with them. Concrete classes, which can have instances, will inherit these primitives and use them to define the tasks (behaviors) of their agents.

Abstract classes (provided in the Manta project)


Classes that define the Environment


{-- Species Definition --}


{-- Agents' components --}



The EMF kernel can be found in the Manta application. See the distribution of Manta on this page.

EMF has now been ported to Java, C++, Delphi and various flavors of Smalltalk. Please ask me in order to obtain the sources.

A special version has been designed in 2000 for powering MICRobEs's autonomous robots. It relies on the Saphira platform (and its C++ encapsulation, MicLib, contact Louis Hugues for more details), and interprets XML behavior definition files like this one. Feel free to ask me for the sources (but you will nevertheless need MicLib to make it run on Pionneers robots).


List of the people that have worked or still work on this project :


This project has been designed and conducted during 7 years by me and two ethologists from the LEEC (University of Paris XIII): Bruno Corbara (now at the University of Clermont-Ferrand) and Dominique Fresneau.

Related papers

You might be interested to take a look at these papers for further information :

Related links

You might be interested to take a look at these links for further information :