next up previous
Next: BOD Reactive Plans Up: Building an Agent with Previous: The Initial Decomposition

Iterative Development

The heart of the BOD methodology is an iterative development process:

  1. Select a part of the specification to implement next.
  2. Extend the agent with that implementation:
  3. Revise the current specification.

BOD's iterative development cycle can be thought of as sort of a hand-cranked version of the Expectation Maximization (EM) algorithm (15). The first step is to elaborate the current model, then the second is to revise the model to find the new optimum representation. Of course, regardless of the optimizing process, the agent will continue to grow in complexity. But if that growth is carefully monitored, guided and pruned, then the resulting agent will be more elegant, easier to maintain, and easier to further adapt.

Unlike behaviors, which are simply coded directly in a standard object-oriented language, reactive plans are stored in script files. The plan is normally read when the agent is initialized, or ``comes to life,'' though in theory new plans could be added during execution. The reactive plans for an agent grow in complexity over the course of development. Also, multiple reactive plans may be developed for a single AI platform (and set of behavior modules), each creating agents with different overall characteristics, such as goals or personality.

Even when there are radically different plan scripts for the same platform or domain, there will generally only be one behavior library -- one set of code. Each agent will have its own instance or instances of behavior objects when it is running, and may potentially save run-time state in its own persistent object storage. But it is worth making an effort to support all scripts for a single platform or domain in a single library of behavior code.

Testing should be done as frequently as possible. Using languages that do not require compiling or strong typing, such as lisp or perl, significantly speeds the development process, though they may slow program execution time. ``Optimize later'', one of the modern mantras of software engineering, applies to programming languages too. In my experience, the time spent developing an AI agent generally far outweighs the time spent watching the agent run. Particularly for interactive real-time agents like robots and VR characters, the bottle-necks are much more likely to be caused by motor constraints or speech-recognition than by the intelligent control architecture.

The most interesting part of BOD's iterative design cycle is the set of rules for revising the specifications. However, understanding these rules requires understanding BOD reactive plans. The following section explains the details of BOD action selection. Section 6 returns to the question of knowing exactly how to optimize the agent.

next up previous
Next: BOD Reactive Plans Up: Building an Agent with Previous: The Initial Decomposition
Joanna J. Bryson 2005-07-08