Introduction to Belief Desire Intention Agents - RMIT University
Introduction to Belief Desire Intention Agents - RMIT University
Introduction to Belief Desire Intention Agents - RMIT University
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Introduction</strong> <strong>to</strong> <strong>Belief</strong> <strong>Desire</strong> <strong>Intention</strong><br />
<strong>Agents</strong><br />
Lin Padgham<br />
<strong>RMIT</strong> <strong>University</strong>, Melbourne, Australia
BDI Agent Systems Useful in Many Applications<br />
Unmanned (Aerial)<br />
Vehicles<br />
Trading <strong>Agents</strong><br />
Logistics<br />
E-Health<br />
Air Traffic Control<br />
BDI (<strong>Belief</strong> <strong>Desire</strong> <strong>Intention</strong>) agents have been used in many successful<br />
applications in complex environments.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 1 / 7
<strong>Belief</strong> <strong>Desire</strong> <strong>Intention</strong> Model of Agency<br />
• BDI is a framework for describing the behaviour of rational agents.<br />
• Based on work in the philosophy of mind:<br />
Dennett<br />
<strong>Intention</strong>al systems:<br />
“[..] whose behavior<br />
can be predicted by the<br />
method of attributing<br />
belief, desires and<br />
rational acumen.”<br />
Bratman<br />
• Human practical reasoning consists of two activities:<br />
Practical reasoning:<br />
“[..] a matter of<br />
weighing conflicting<br />
considerations [..]<br />
provided by what the<br />
agent desires [and]<br />
believes.”<br />
• Deliberation: deciding what <strong>to</strong> do i.e., form intentions.<br />
• Means-ends Reasoning: deciding how <strong>to</strong> do it i.e., form plans.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 2 / 7
<strong>Belief</strong>-<strong>Desire</strong>-<strong>Intention</strong> (BDI) Agent Architecture<br />
Environment<br />
SENSORS<br />
ACTUATORS<br />
<strong>Belief</strong>s<br />
<strong>Intention</strong> Stacks<br />
events<br />
Pending Events<br />
BDI engine<br />
actions<br />
dynamic static<br />
Plan<br />
library<br />
A plan is a programmed recipe for achieving a goal in some situation.<br />
A BDI execution engine selects from a plan library, based on the situation.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 3 / 7
Goal-Plan Tree: Decomposition and Selection<br />
P2<br />
G3<br />
P5 P6<br />
G2<br />
P3 P4<br />
P1<br />
G5<br />
G4<br />
P7 P8<br />
P9 P10 P11<br />
G6<br />
P12 P13 P14<br />
• A plan typically has a number<br />
of (sub)goal steps.<br />
• Each sub-goal generates an<br />
(internal) event which has<br />
some relevant plans.<br />
• So the plan library can be<br />
seen as a set of goal-plan<br />
trees.<br />
• At each goal node a plan must<br />
be selected (OR).<br />
• At each plan node the goals<br />
must be accomplished (AND).<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 4 / 7
BDI Agent Oriented Programming<br />
• BDI Agent-Oriented Programming provides abstraction at the level of<br />
mental attitudes <strong>to</strong> explain the operation of a system. <strong>Belief</strong>s, <strong>Desire</strong>s,<br />
<strong>Intention</strong>s.<br />
• The modularity of plans makes it easy <strong>to</strong> develop complexity<br />
incrementally.<br />
• The goal oriented approach makes it suitable for use in dynamic<br />
environments.<br />
• Many efficient and powerful development environments available. JACK,<br />
Jadex, Jason, PRS, 2APL, ...<br />
• BDI agent programs are fast <strong>to</strong> develop. A 2006 study showed:<br />
• Gain compared <strong>to</strong> Java programming 500%.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 5 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
ObtainTransport<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
EvacHouse<br />
RespondBushfire<br />
1 2 3<br />
ObtainTransport<br />
AssembleMembers<br />
MoveSafeLoc<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
A plan is a sequence of steps<br />
Walk(L)<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
action<br />
EvacHouse<br />
RespondBushfire<br />
1 2 3 goal<br />
ObtainTransport<br />
AssembleMembers<br />
MoveSafeLoc<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
message<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Walk(L)<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
A step can be a goal, an action, a message <strong>to</strong> another agent, or some<br />
computation.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
ObtainTransport<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
A goal may have different plans, for achieving it in different situations.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
Context:<br />
have car &<br />
car at home<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
ObtainTransport<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
A goal may have different plans, for achieving it in different situations.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
Context:<br />
have car &<br />
car at home<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
ObtainTransport<br />
Context: X<br />
is neighbour<br />
& X has car<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
A goal may have different plans, for achieving it in different situations.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
Context:<br />
have car &<br />
car at home<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
ObtainTransport<br />
Context: X This can give<br />
is neighbour multiple plan<br />
& X has car instances<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
A goal may have different plans, for achieving it in different situations.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
Context:<br />
have car &<br />
car at home<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
ObtainTransport<br />
Context: X This can give<br />
is neighbour multiple plan<br />
& X has car instances<br />
ArrangeLift<br />
OR OR<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
For a goal <strong>to</strong> succeed one of the plans must succeed. If one fails try another.<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
AND<br />
ObtainTransport<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
For a plan <strong>to</strong> succeed, all steps must succeed.<br />
WalkToLoc<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
AND<br />
ObtainTransport<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
If things fail, recovery happens as locally as possible<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Example Plan Structure<br />
goal<br />
plan<br />
Action<br />
M:msg<br />
GetCar<br />
Walk(Car)Drive(Door)<br />
ObtainTransport<br />
ArrangeLift<br />
M:ReqLift<br />
NoTransport<br />
M:<strong>to</strong>Door<br />
EvacHouse<br />
RespondBushfire<br />
AssembleMembers<br />
HouseAssemble<br />
DistAssemble<br />
Stay&Defend<br />
M:<strong>to</strong>Door M:phoneInfo<br />
WalkToLoc<br />
Plan selection responsive <strong>to</strong> changing environment.<br />
Walk(L)<br />
MoveSafeLoc<br />
DetermineLoc<br />
DriveToLoc<br />
car home<br />
Drive(L)<br />
WaitPickUp<br />
GetFromRadio LocalShelter LeaveTown<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 6 / 7
Advantages<br />
• Intuitive representation<br />
• Late selection: situation aware...<br />
• Plan failure - retry new plan. Committed <strong>to</strong> choices, like humans.<br />
• Agent is responsive <strong>to</strong> environmental changes.<br />
• Huge number of options possible - over 2 million for modest tree.<br />
(Subgoal steps 4, Choices 2, Depth 3)<br />
<strong>RMIT</strong> <strong>Agents</strong> Group <strong>Introduction</strong> <strong>to</strong> BDI 7 / 7