The BDI model
In general, an architecture built on the BDI model of agency is specified in terms
of the following data structures:
They represent information about the world. Each belief is represented as a ground literal of first-order logic. Two activities of the agent update its beliefs:
Also known as goals, they correspond to the tasks allocated to the agent and are usually considered as logically consistent among them. Two kinds of desires are usually adopted:
- The perception of the environment.
- The execution of intentions.
Perceptions of the agent are mapped to events stored in a queue. Events are of three kinds:
- To achieve a desire, expressed as a belief formula, that is, a literal not necessarily grounded.
- To test a situation expressed as a situation formulae, that is a belief formula or a disjunction and/or a conjunction of them.
BDI agents usually have a library of predefined plans. Each plan has
several components. The plan-id is used to identify a plan in the plan library. The plan body represents possible courses of action. It is a tree which nodes are considered as states and arcs are actions or goals of the agent. External actions are like procedures the agent can execute directly. Goals are posted to the event queue when the plan
is executed, then other plans that can deal with such events are considered,
and so on. Additionally, a plan have some maintenance conditions which
describes the circumstances that must remain to continue the execution of
the plan. A set of internal actions is specified for the cases of success and
failure of the plan. Finally, some BDI architectures include some measure of
the utility of the plan.
They are courses of action an agent has commited to carry out. Each intention is implemented as a stack of plan instances. Two cases are possible:
- The acquisition or removal of a belief.
- The reception of a message.
- The acquisition of a new goal.
Overall control/data flow of BDI architecture is as follows
-- AndreySalnikov? - 27 May 2004
- If the event is an external one, which means no plan has generated it, then an empty stack is created and the plan instance selected is pushed on it
- If the event is an internal one, it means that a previous plan generated it, then the plan instance is pushed on the existing stack containing this previous plan