BDI architektúra, AgentSpeak(L) és Jason ismertetı 1
BDI Szándék Bratman 1987 Szándék: gyakorlati érvelés lényegi eleme, cselekvéshez vezet Szándék az eszköz-cél analízis motorja Szándékok tartósok Szándékok alakulását emóciók befolyásolják Szándékok korlátozzák a jövıbeli érveléseket Szándékok befolyásolják az emóciókat XYZ-nek szándéka van jól levizsgázni. Elvárjuk, hogy könyvtárban bukkan fel, hogy este könyvel a kezében látjuk, hogy szórakozás ajánlatát elhárítja. Nem ér meglepetés, ha mogorva hangulatban látjuk. Meglep minket, ha moziban találkozunk vele. Szándék Kívánalom =/= Szándék Szándék ismerete lehetıvé teszi: - jövıbeli cselekvések jóslását, - cselekvések magyarázatát, - konzisztencia vizsgálatot. Kívánalom kívánt állapot Szándék ennek (korlátos) eszközei 2
BDI BDI ágens architektúra B = Belief (Hiedelem) ágens által ismert (igaznak tartott) tények D = Desire (Kivánalom) olyan tények, amiket ágens valamilyen módon igazzá szeretne tenni, a célok I = Intention (Szándék) a célok megvalósításához vezetı elhatározások, a tervek Belief + Intention Desire Intention Action új Belief 3
BDI programozási nyelv AgentSpeak(L) Ágens viselkedése: receptkönyvtár ( tervek ) = reaktiv tervvégrehajtó rendszer terv: (i) elérendı cél (triggering event) (ii) helyzet, a terv használható (logikai feltétel = context condition) (iii) a terv törzse te : C B te ::= +!g, +?g,!g,?g, +b, b achievement goal, query goal, belief) C ::= b (C & C) (C C) C x.c B ::= act +b b?c!te P;P (primitív cselekvés, hiedelmek hozzáadása, törlése, feltétel tesztelése, esemény aktivizálása, szekvenciális kompozíció) Tip.: te : b1... bm h1 ;... ; hn. 4
BDI programozási nyelv AgentSpeak(L) +concert(artist,venue) : likes(artist)!book tickets(artist,venue). +!book tickets(artist,venue) : busy(phone)?phone number(venue,number); call(number);...;!choose seats(artist,venue). CWA OWA: negálás, mint kudarc, erıs negálás: (John McCarthy) Iskolabusz haladhat át egy vasuti átjárón, ha a vonat nem közeledik. Át not Vonatjön (ha nem tudjuk, hogy a vonat közeledik) Át -Vonatjön (ha tudjuk, hogy a vonat nem közeledik) 5
BDI programozási nyelv AgentSpeak(L) Végrehajtási ciklus: 1. esemény aktivizálódik (pl. új elfogadott cél, új érzékelés, lényeges változás hiedelmekben, stb.) 2. eseménykezelı tervek kikeresése (releváns tervek) 3. igaz helyzetfeltétellel rendelkezı terv alkalmazható (applicable) alkalmazható terv kiválasztása, törzsének lefuttatása 4. ha a terv kudarcba fullad, alternatív alkalmazható terv futtatása amíg van választás, különben a kudarc tova terjesztése. +!move-to(a,b) : available(car)!get(car); drive(a,b). +!move-to(a,b) : available(car)!walk(a,b). AgentSpeak nyelv: elsıdlegesen a döntéshozatal belsı mechanizmusa: (rész)célok létesítése az azokat megvalósító tervek végrehajtása Társított problémák: kommunikáció, több ágenses kölcsönhatások: alap ötletben nincs megvalósítva (de lesz!) 6
AgentSpeak(L) interpreter 7
Jason AgentSpeak platform Javaban Environment: Percepts, Environment actions Internal actions, Beliefs, Goals un. beszéd aktus alapú inter-ágens kommunikáció tell, untell achieve, unachieve tellhow, untellhow askif, askall, askhow - 1 rendő nyelv, nincs modalitás - terv cimkék, hiedelmek annotálása (honnan van?) hiedelem [source(ag)] hiedelem [source(percept)] hiedelem [source(self)] - elosztott ágensszervezet létesítése - szabadon kiterjeszthetı, felhasználói szinten módositható (Java) -... 8
Jason beépített belsı cselekvések BDI BB Plan Communication Lists and Sets String Execution Meta progr. Misc. desire, drop_desire, drop_all_desires intend, drop_intention, drop_all_intentions, current_intention drop_event, drop_all_events succeed_goal, fail_goal suspend, resume abolish, findall, count add_plan, remove_plan, plan_label, relevant_plans send, broadcast, my_name member, length, concat, delete, reverse, nth, max, min sort, list, difference, intersection, union length, concat, delete: delete, reverse, substring, string, term2string if, while, for atom, structure, literal, list, ground, number, string add_annot, add_nested_source at, wait, create_agent, kill_agent, stopmas, date, time fail, perceive, range 9
10
11
12