PLACA, an agent oriented programming language

When multiple "agents" (robots, intelligent processes, people) share an environment they very often share resources; this requires coordination. Centralized coordination introduces a bottleneck into the system, so distributed coordination is often preferable. If agents can adopt new tasks dynamically then maximum flexibility is obtained when this coordination is done dynamically as well. This requires that agents be able to communicate with each other, and further that they be able to decide dynamically when and what to communicate. Shoham has proposed "agent oriented programming" as a method for programming intelligent, autonomous processes which interact in a shared environment. "Agents" are entities that may be modeled in terms of their "mental states", consisting of such components as beliefs, abilities, desires, and intentions. An agent's program gives its initial mental state and a set of rules which specify a transition function: given an agent's current state and input, these rules specify the agent's new mental state and output. Agents communicate by sending messages; these messages come in several types, where the types are drawn from speech act theory (requests, promises, etc.). In this dissertation we present and discuss a new agent-oriented programming language, PLACA (which stands for PLAnning Communicating Agents). PLACA is a descendant of AGENT0, the first agent-oriented programming language; it addresses a particular shortcoming of AGENT0. Specifically, PLACA capitalizes on the planning abilities of agents. Assuming that all agents in a particular environment have at least elementary planning abilities, PLACA agents can make high-level requests of each other without worrying about the details of how a particular task will be carried out. In order to achieve this, agents' mental states have been expanded to include plans and intentions in addition to the beliefs and capabilities present in AGENT0 (obligations and decisions were dropped). The kinds of changes to the mental state which may be specified in an agent program have also been expanded. We present a logic in which to represent the components of an agent's mental state, the programming language PLACA, and a description and discussion of a simple implemented PLACA interpreter.