The SIM_AGENT toolkit overview file introduces the toolkit demonstrated here.
Several groups of mpeg movies are available below, illustrating some of the uses of the toolkit. These require mpeg_play or plaympeg or mplayer or equivalent. Your browser may be able to recognize the .mpg file extension and invoke the appropriate tool. If not, please consult a local expert.
Some of the movies were created a long time ago on very slow machines. A new collection of movies, more suited to display on faster machines (e.g. over 300 mhz CPUs) can be found here: http://www.cs.bham.ac.uk/research/poplog/figs/simagent/
You may have some trouble with colour maps if you are viewing this file using an 8-bit colour display. If so, it may be better to save the movie files locally and run them directly with a suitable mpeg player.
NB: On a fast modern computer the demos may run too fast to be intelligible. In that case you may prefer to save them and run them locally with a player that allows you to step through frames.
In each case there are two "teams" of movers, one starting bottom left (the red team r1,r2,r3,r4 and their captain rc) and one starting bottom right (the blue team b1, b2, b3, b4 and their captain bc).
Initially the captains tell their team members to go to the targets top right (the red team) and top left (the blue team). On the way the two lots of team members not only have to pass by each other without colliding, they also meet a wall of "obstacles" (o2, o3, o4, o5, o6) with a gap in the middle, so they have to either go through the gap, or round the wall. (Obstacle o1 is added on the left in a later demonstration).
Only one player can get through the gap at a time. The algorithm that gets them all to the target is very simple, and sometimes breaks down. Each agent in this demonstration uses a purely reactive (behaviour-based) architecture, with no planning.
When the individual team members get to their target locations, the inform their captains. The communications between agents are shown in textual trace files, not included here.
The first movie gives a "coarse" sample of a run of the program. (Reminder: if the machine on which your browser is running does not have the mpeg_play program installed, you will not be able to view these movies.)
The second gives a slightly less "coarse" sample of a different run.
Two more movies based on the code in the tutorial file are provided, one with obstacle o1 added to the left, and another with the the obstacles rearranged slightly, causing team member r4 to get trapped because it uses only local reactive rules and cannot plan ahead. (This is a limitation of this example, not the toolkit.)
Two of the agents are represented by bold circles labelled "a" and "b", which react to a number of bars lying around by selecting four of them to build a square "house" near the top of the picture. In each case the final wall is installed with a gap at one end, leaving an opening by which things can go into and out of the house (not shown). The third agent, represented by a circle labelled "1", is a sort of infant that roams around until its "charge" gets too low, whereupon one of "a" and "b" takes it to the recharge point (a small black square at the bottom of the picture). In other scenarios the "infants" can fall into the ditches at left and right and die, whereupon they have to be taken to the cemetery at the top (rounded square). This is not shown in these movies.
The first movie shows agents "a" and "b" first roaming around to find out what is where and then each trying to build the house. By chance they manage to help each other and what emerges is the appearance of cooperation. This arises out of the fact that each changes the environment for the other so that what it does happens to be what is appropriate for the task. There is no communication between them.
The second example shows how unreal the cooperation actually is. Because of the (randomly generated) initial locations, the agents "a" and "b" both discover exactly the same black bars and try to select them in the same order to build the house. Thus as one of them grabs each bar and moves it to form a wall of the house the other trails after it, ending up being completely useless.
The third movie shows a case where the infant having to be carried down by to the recharge point and held there to recover, which is done by agent "b" while "a" gets on with building the house. Eventually "b" releases the re-charged infant and then goes and rotates the final wall, without altering the net result! This is a chance effect of what "b" notices about the situation.
More complex scenarios will make things difficult for the agents so that they can be expected in some situations to develop emotional states, e.g. when torn between rescuing an infant that is about to fall into a ditch and one whose charge is so low that it urgently needs to be taken to the recharge point.
Anyhow, when the BBC2 program The NET broadcast an interview with Aaron Sloman in February 1997 they asked for a sample of the nursemaid program running so I've made two movies, one showing the nursemaid (represented by a "hand") looking after only two babies, and another showing the nursemaid looking after twelve babies. For each of them there is also a text file recording the trace printout from the program, indicating when new motives are generated, when plans are adopted, when motives are abandoned or suspended, when previously suspended motives are restarted, etc. If you have a viewer like mpeg_play which allows you to single step through the movies you can see how the frames in the movie correspond to frame numbers recorded in the text file in the format: Frame(N).
The movies are a little jerky as I had to leave gaps between frames in order to make files of a manageable size. I slowed things down when the nursemaid was doing something, so the hand should move more smoothly than the babies do when the nursemaid is passively watching.
To interpret the movies you will need to know that each baby is initially represented by a letter with an asterisk, e.g. "a*", "b*", where the asterisk represents a healthy state. As the baby's charge level drops the asterisk is replaced by a number (e.g. "a5", "b3") and when the number gets down to about 4, the nursemaid may (or may not) notice this and then try to take it to the recharge point represented as a square object in the top right room.
If a baby falls into a ditch or does not get recharged in time it dies and the number or asterisk is replaced by a "D", e.g. "aD", "bD". Dead babies have to be taken to the discharge point, represented at the top left by a deaths head.
The movie for the first scenario (with two babies) is here and the text file is here. There are 221 frames, and the nursemaid manages to look after the two babies quite well.
The movie for the second scenario (with twelve babies) is here and the text file is here. There are 500 frames. By the end several babies have died, alas. The text file may not be easy to interpret, but it gives an indication of the way the nursemaid is pulled hither and thither by frequently generated motives that it cannot really cope with.
The minder (nursemaid) can be understood, more or less, if you assume that it has the following four types of goals:
1. Prevent babies falling into ditches
(The insistence (priority) of the goal depends on how close the baby is
to the ditch.)
2. Recharge babies with low charge
(The insistence depends on how low the charge is if the charge gets down
to 0 the babies die.)
3. Prevent more than 2 babies being in the same room (prevent overcrowding)
4. Get dead babies to the disposal point (marked with a death's head on the top left).
The overcrowding goal explains what may otherwise appear to random moving of babies between rooms.
The recharge point is indicated as a square spiral box, top right.
There is no learning, and no creative planning.
The nursemaid does not have perfect information about what's going on in the world: the visual system (not shown) scans the rooms to find out what is where, and the information provided can get out of date.
Sometimes when a suspended motive is attended to it turns out that it is no longer relevant, e.g. because the baby moved away from the ditch or because it has fallen in and now cannot be rescued.
This version of the nursemaid does not have the "meta-management" system described in some of our papers which would allow it to detect its own state. So the nursemaid has no awareness of the stress it is under.
The dog is not (yet) intelligent but is guided by a person, using the mouse (not shown in the movie). The objective is to move the dog in such a way as to get the sheep into the pen. The sheep have an aversion to the dog, a liking for each other, and a tendency to wander at random. The task is very difficult with all those sheep and in this example not all are successfully penned. The Pop-11 code for this demonstration is available at ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/sim/demo/pcw.sheep.p It was initially loosely modelled on the SIM_DEMO tutorial file, and then extended and modified.
This file designed to be lynx-friendly, is maintained by
Aaron Sloman.
Last updated 26 Jun 2003
Email
A.Sloman@cs.bham.ac.uk