The idea of animate systems has its origins in the Vivarium project, initiated by Alan Kay with the mission of developing environments for simulating animal behavior. My work on this project led to a number of systems for modeling animal behavior in software. One goal of the present work is to extend some of the ideas developed for simulating animals into new application domains. Each of these domains involves actors animated by agents, but each generates a somewhat different intuitive idea about what an agent is and how they should work together. My own implicit purpose in designing LiveWorld's agent systems was to see if I could find an agent-based programming framework that could subsume and unify these divergent notions of agent.
These tasks provide basic tests of the interactive graphic environment. None of them require very complicated agent systems. Video games require that objects be able to sense each other and trigger actions appropriately; this can be done by relatively simple forms of agents. Objects must be able to be created and deleted, and the user must be able to interact with objects while they are active. Simple video games don't require goal-driven agents, although more complex ones might include characters that pursue goals, which brings them into the realm of animal behavior.
Tinbergen's drive-centered model of animal behavior (Tinbergen 1951), in which a hierarchical network of drives constituted the control system of an animal, was one of the ancestors of the Society of Mind theory and provided a basis for LiveWorld's predecessor, the Agar animal behavior simulation environment (Travers 1988). LiveWorld's agent systems provide a similar level of functionality in a more flexible, general and coherent framework.
In animal behavior models, agents correspond to basic drives, both general and specific. Some examples of animal tasks are: "survive", "find-food", "orient-away-from-predator" or "run". Drives are at best temporarily satisfied and are always in some degree of conflict. That is, an animal might have multiple top-level drives such as eating, cleaning, and mating, all of which are to some degree unsatisfied at any one time, and they cannot in general be pursued simultaneously. Even the top-level goals of survival and reproduction, dictated by evolution, will be in tension with each other. The satisfaction condition or goal of a drive cannot be easily modeled as a Boolean predicate, since it may be satisfied to various degrees (i.e. there is a continuum of levels of hunger-satisfaction between starving and satiated). Animal goals will usually not be satisfied by a single operation, but will require an iterated effort to achieve a final state. For instance, the goal "be at the watering hole" will require a series of movement operations to be achieved.
Another domain usefully viewed in animate terms is that of graphic layout problems, or more broadly the task of maintaining relationships among graphic objects under change. Interactive constraint systems have been applied to such problems in the past. As discussed in section 2.2.3.5, constraints may be usefully viewed as an amalgam of declarative and procedural information: a constraint both states a condition that should be held true, and contains procedures for changing the world to make it true. This provides yet another model for agents. One goal of the LiveWorld agent system, therefore, is to show that agent-based programming is a useful technique for building interactive graphic constraint systems. LiveWorld is particularly suited to exploration in this domain because of its integration of graphic objects and agents.
Agents in constraint problems take a different form than those in animal behavior domains. In a constraint problem, goals are expected to be satisfied simultaneously rather than sequentially. Goals are expressions of allowable final states rather than ongoing needs. Even if constraints are implemented as agents, the role of action is less dominant--whereas the actions of animals are necessarily limited by their physical constraints, the actions of a constraint agent can be essentially arbitrary.
The ability to solve graphic layout problems opens up the potential for LiveWorld to define its own interface behavior using agents. For instance, the constraint that a box be big enough to display its annotations could be realized by means of appropriate agents and goals, rather than special purpose internal code. This sort of "interface metacircularity" could serve to make a more integrated and flexible environment (see 4.2.7).
The blocks world is a classic artificial intelligence microworld domain, and one used in Society of Mind to illustrate agent operations. While little AI is required to implement these examples, they do require one capability that has been absent from some of the earlier efforts at agent-based programming. In particular, tower-building requires the sequential achievement of goals, a requirement which is not found in constraint problems nor in most simple animal behavior problems. The precursors to LiveWorld's agent systems, such as Agar (Travers 1988) and Playground (Fenton and Beck 1989), did not have any real support for sequencing, which led to some frustration. The blocks world provides a test of the ability of the agent system to handle sequential tasks that require control state.
The problem domains mentioned pose a diverse set of tasks, but the real challenge is to develop an agent-based programming system that allows simple solutions to the problems using a single paradigm. To do so, we have to extract the common elements from these diverse problems and use them as the basis for the design of the system. The common element we seek is, of course, the agent. All the problems above suggest solutions expressed as collections of simple, cooperating, task-based, goal-directed modules. The challenge is to design a single agent system that can express these solutions.