Agent Communications BDI Definitions CPSC 601.68/CPSC 599.68 Rob Kremer Department of Computer Science University of Calgary Based on: Michael Wooldridge. Reasoning about Rational Agents. MIT Press, Cambridge, Mass. 2000. Chapter 2. 09/11/2018
CPSC 609.68/599.68: Agent Communications Plan Plan Preconditions: P Predicate Postconditions: P Predicate Actions: Seq Action hd: Plan Action // returns head(Plan.Action) tail: Plan Plan // returns {Pre,Post,tail(Actions)} 09/11/2018 CPSC 609.68/599.68: Agent Communications
CPSC 609.68/599.68: Agent Communications BDI Agent BDIagent B: P Bel D: P Des I: P Int getNextPercept: Percept brf: P Bel Percept P Bel options: P Bel P Int P Des filter: P Bel P Des P Int P Int plan: P Bel P Int Plan execute: Plan 09/11/2018 CPSC 609.68/599.68: Agent Communications
CPSC 609.68/599.68: Agent Communications A simple BDI agent B := B0; I := I0; /* B0 are initial beliefs; I0 are initial intentions */ while true do { p := getNextPercept(); B := brf(B,p); D := options(B,I); I := filter(B,D,I); := plan(B,I); execute() } Stuck to a plan: If the plan fails (becomes unsound) then the agent really should change the plan. 09/11/2018 CPSC 609.68/599.68: Agent Communications
BDI Agent that reacts if plan is unsound B := B0; I := I0; /* B0 are initial beliefs; I0 are initial intentions */ while true do { p := getNextPercept(); B := brf(B,p); D := options(B,I); I := filter(B,D,I); := plan(B,I); while not empty() do { a := hd(); execute(a); := tail(); if not sound(,I,B) then } Deals with unsound plans, but won’t drop intentions: What if we have unexpected early success or conditions arise that make our intentions useless or unobtainable? We might want to change our intentions. 09/11/2018 CPSC 609.68/599.68: Agent Communications
BDI Agent that may drop intentions B := B0; I := I0; /* B0 are initial beliefs; I0 are initial intentions */ while true do { p := getNextPercept(); B := brf(B,p); D := options(B,I); I := filter(B,D,I); := plan(B,I); while not (empty() or suceeded(I,B) or impossible(I,B)) do { a := hd(); execute(a); := tail(); if not sound(,I,B) then } But if the environment changes, we may need to reconsider intensions. 09/11/2018 CPSC 609.68/599.68: Agent Communications
Cautious Agent that reconsiders after each action B := B0; I := I0; /* B0 are initial beliefs; I0 are initial intentions */ while true do { p := getNextIntention(); B := brf(B,p); D := options(B,I); I := filter(B,D,I); := plan(B,I); while not (empty() or suceeded(I,B) or impossible(I,B)) do { a := hd(); execute(a); := tail(); p := getNextPercept(); if not sound(,I,B) then } But this agent might spend almost all of it’s time considering intensions and no time actually doing useful stuff. 09/11/2018 CPSC 609.68/599.68: Agent Communications
BDI Agent that attempts to strike a balance B := B0; I := I0; /* B0 are initial beliefs; I0 are initial intentions */ while true do { p := getNextPercept(); B := brf(B,p); D := options(B,I); I := filter(B,D,I); := plan(B,I); while not (empty() or suceeded(I,B) or impossible(I,B)) do { a := hd(); execute(a); := tail(); if reconsider(I,B) then { I := filter(B,D,I); } if not sound(,I,B) then } This is only useful if reconsider() is a lot cheaper than options() and filter(). 09/11/2018 CPSC 609.68/599.68: Agent Communications