Agent Communication Language
Agent Communication Language (ACL) se nazývá jazyk navržený pro komunikaci v prostředí multiagentních systémů, který slouží ke vzájemné výměně informací, koordinaci a kooperaci mezi agenty.[1]
Specifikace komunikace
Základní typy komunikace se liší podle cíle, kam směřují zprávy. Komunikaci tedy můžeme rozdělit na přímou, kdy jsou zprávy posílány dalším agentům a komunikaci nepřímou, kdy jsou zprávy soustředěny v dané struktuře (např. tabule). U přímé komunikace můžeme rozlišit tři druhy posílání zpráv:
- adresné posílání zpráv – zpráva se posílá konkrétním agentům
- všesměrové posílání zpráv – zpráva se posílá všem agentům
- selektivní posílání zpráv – zpráva se posílá určité skupině agentů
Jazyky pro komunikaci v multiagentních systémech jsou založeny na teorii řečových aktů vycházející z lingvistické analýzy komunikace v přirozeném jazyce. Teorie řečového aktu vychází z představy, že v souvislosti s řečovou komunikací člověk nejenom vyslovuje nějaké tvrzení, ale současně koná i jisté akce. Řečové akty mohou být:[1]
- oznamovací
- zavazující
- přikazovací
- expresivní
- deklarační
V oblasti jazyků ACL, kromě teorie řečového aktu hrají roli i teorie tvorby počítačových jazyků resp. počítačové lingvistiky. Problém agentní komunikace lze z tohoto úhlu pohledu rozdělit na tři úrovně. A to na úroveň syntaktickou, sémantickou a pragmatickou.[2]
- úroveň syntaktická – všichni agenti používají jednotnou syntaxi
- úroveň sémantická – všichni agenti jsou vybaveni stejným ontologickým rámcem používaných znalostí
- úroveň pragmatická – zajišťuje znalosti o nalezení určitého agenta a následné vzájemné komunikaci
Na vlastním přenosu zpráv a informací se podílí různé úrovně:[1]
- Fyzická úroveň – vrstva zajišťující přenos zprávy jako posloupnost bitů (využívá fyzické, linkové a síťové vrstvy OSI modelu)
- Transportní úroveň – specifikace protokolů pro kódování zprávy (transportní vrstva OSI modelu). Mezi tyto protokoly lze zahrnout například: HTTP, TCP/IP, WAP, apod.
- Úroveň komunikační architektury – zajišťují překlad zpráv do posloupnosti bytů; příkladem jsou různé komunikační platformy jako CORBA, Java RMI, UNIX RPC, XML RPC atd.
- Úroveň ACL – zaměřuje se na identifikaci odesílatele a příjemce a na jazyk vlastní zprávy (př. KQML, FIPA-ACL)
- Úroveň obsahu zprávy – zaměření na konkrétní reprezentaci přenášeného sdělení. Realizace např. pomocí XML, KIF (Knowledge Interchange Format), Lisp, Prolog, SQL,...
Architektura z hlediska komunikace
Architektura multiagentního systému může být:[1]
- centralizovaná – v multiagentním systému je jeden řídící agent, kterému jsou ostatní podřízeni
- hierarchická – v multiagentním systému se používají různé úrovně řízení
- federovaná – v multiagentním systému se používá nepřímá komunikace přes prostředníka
- decentralizovaná – v multiagentním systému jsou decentralizovány role i řízení
Tyto architektury můžeme hodnotit z hlediska robustnosti (odolnosti vůči poruchám), škálovatelnosti (rozšiřitelnosti o další komponenty), implementačním nároků a nároků na komunikaci.
Jazyky
Nejznámějšími jazyky v oblasti multiagentního modelování jsou KQML a FIPA-ACL.
KQML
KQML (Knowledge Query and Manipulation Language) je jazyk a protokol pro výměnu informací a znalostí. Byl vyvinut na začátku 90. let v rámci projektu ARPA Knowledge Sharing Effort.[3] Jazyk se zaměřuje na podporu pragmatických a sémantických aspektů komunikace mezi agenty. Je to tedy jazyk podporující činnost agentů při hledání agentů vhodných ke spolupráci, navazování spojení mezi agenty a výměně informací mezi agenty. Na syntaktické úrovni není KQML vázán na použití žádného konkrétního jazyka. Jazyk KQML je založen na dvou základních principech.[1]
Prvním principem je definice relativně malého počtu tzv. performativů (komunikačních sloves) pro realizování předem specifikovaných řečových aktů. Každá zpráva sestává zejména performativu a jeho parametrů. Vlastní obsah zprávy může být zapsán v libovolném jazyce a představuje obsah jednoho parametru.[4] Performativy se rozdělují do několika typů jako např. informační (tell, deny, untell,…), dotazy (ask, ask-if, ask-about,…), odpovědi (error, sorry,…), práce s virtuální bází znalostí (insert, delete,…), atd.[5]
Klíčové slovo | Popis |
---|---|
content | obsah zprávy |
force | typ zprávy |
in-reply-to | kód zprávy, na kterou je tato zpráva odpovědí |
language | jazyk, ve kterém je napsán obsah zprávy |
ontology | ontologie obsahu zprávy |
reciever | příjemce |
reply-with | kód odpovědi, pokud je očekávána |
sender | odesílatel |
Příklad zprávy
(inform
:sender (agent-identifier :name i)
:reciever (agent-identifier :name j)
:content
"weather(today,raining)"
:language Prolog
)
Druhým principem je nepřímá komunikace s využitím tzv. faciliátorů. Zavádí se speciální
třída agentů. Rozlišují se tři druhy faciliátorů: matchmaker, broker a mediátor.[1]
- Matchmaker – agent, který pouze hledá vhodné agenty pro požadovanou službu. Agent, který poptává nějakou službu na základě informace od matchmakera přímo kontaktuje agenta, který službu poskytuje
- Broker – agent, který nejen hledá agenty pro požadovanou službu, ale službu přímo i objedná. Poptávajícímu agentovi pak předá rovnou výsledek poskytnuté služby
- Mediátor – agent, který podobně jako broker službu objedná. Agent, který službu poskytuje, pak ale službu nabídne a díle komunikuje přímo s poptávajícím agentem.
FIPA-ACL
Jazyk FIPA-ACL byl navržen koncem 90. let sdružením FIPA (Foundation for Physical Intelligent Agents), které se zabývá standardizací v multiagentních systémech. Vychází z principů jazyka KQML, ale snaží se lépe definovat sémantiku a komunikační protokoly. Základem jazyka jsou opět typizované druhy zpráv realizující řečové akty, nazývané tentokrát komunikační akty. Komunikační akty se konceptuálně neliší od performativů, jejich nabídka je ovšem odlišná.[1]
Klíčové slovo | Popis |
---|---|
performative | typ zprávy |
sender | odesílatel |
reciever | příjemce |
reply-to | identifikace agenta, který má obdržet odpověď |
content | obsah zprávy |
language | jazyk obsahu zprávy |
encoding | specifikace kódování obsahu |
ontology | ontologie |
protocol | interakční protokol |
coversation-id | identifikátor konverzace |
reply-with | identifikátor, kterým má být označena odpověď |
in-reply-to | identifikátor odpovědi |
reply-by | časové vymezení (do kdy agent čeká odpověď na svou zprávu) |
FIPA jich stanovila pouze uzavřenou množinu a nové komunikační akty mohou vzniknout jen přípustnou kombinací těch základních.[4] Tyto akty se dá rozdělit do pěti skupin:
- přenos informace
- vyžádání informace
- vyjednávání
- vykonání akce
- chybová hlášení
Komunikační akt | význam |
---|---|
confirm | Agent potvrzuje, že informace, o které si druhý nebyl jist pravdivostí, pravdivá je |
disconfirm | Agent nepotvrzuje pravdivost informace |
inform | Agent informuje druhého o pravdivosti nějaké informace |
inform if | Akt, kterým agent informuje druhého, zdali nějaká informace pravdivá je, nebo není |
inform ref | Agent informuje druhého o stavu objektu, na který byl dotazován |
cancel | Agent informuje druhého, že již netrvá na provádění domluvené akce druhým. |
query if | Agent se táže druhého, zdali je obsah zprávy pravdivý. |
query ref | Agent žádá druhého o informování o stav objektu, specifikovaného přiloženou referencí |
subscribe | Agent žádá druhého, aby jej informoval o stavu objektu specifikovaného přiloženou referencí a potom i pokaždé, když se stav tohoto objektu změní. |
accept proposal | Přijmutí předchozího požadavku na vykonání akce. |
agree | Souhlas s provedením akce v budoucnu. |
call for proposal | Požadavek na podávání návrhů provedení nějaké akce |
failure | Agent informuje druhého, že se pokusil vykonat smluvenou akci, ale neúspěšně. |
not understood | Agent informuje, že nerozuměl předchozí zprávě (jediný povinný typ zprávy pro agenta komunik. v ACL) |
propagate | Požadavek, aby zpráva byla poskytnuta prostřednictvím příjemce dalším agentům. |
propose | Agent dává návrh, že provede nějakou akci společně s případnými podmínkami, za kterých akci provede. |
proxy | Agent žádá druhého, aby určil skupiny agentů na základě přiložených podmínek a zaslal jim vloženou zprávu. |
refuse | Agent odmítá vykonat akci a přikládá vysvětlení důvodů odmítnutí. |
reject proposal | Agent odmítá návrh druhého během vyjednávání. |
request | Agent žádá druhého o vykonání nějaké akce. |
request when | Agent žádá druhého o vykonání nějaké akce, pokud nastane uvedená podmínka. |
request whenever | Obdobné jako předchozí s tím, že agent žádá druhého o vykonání akce pokaždé, když uvedená podmínka nastane. |
Další rozdíly oproti KQML:[4]
- sémantika jazyka je striktně formalizována s využitím modální logiky v rámci FIPA-SL (FIPA Semantic Language). Výhodou je existence precizního formálního popisu komunikace, nevýhodou je, že agenti obvykle nedokáží v rámci modální logiky rozhodovat
- neexistují performativy pro síťování a administraci přenosu zpráv
Literatura
- Vladimír Mařík, Olga Štěpánková, Jiří Lažanský ...[a kol.].: Umělá inteligence [Díl] 2 a [Díl] 3. Praha: Academia. ISBN 80-200-0502-1.
Reference
- BERKA, Petr. Inteligentní Systémy. Praha : Nakladatelství Oeconomica, 2008. [Cit. 2010-01-16]. ISBN 978-80-245-1436-9.
- ŠŤASTNÝ, Pavel. Multiagentní systémy v medicíně [online]. [cit. 2009-01-26]. Dostupné v archivu pořízeném dne 2014-08-12.
- FININ, Tim; WEBER, Jay; WIEDERHOLD, Gio; GENESERETH, Michael; FRITZSON, Richard; MCKAY, Donald; MCKAY, Donald. DRAFT Specification of the KQML Agent-Communication Language [online]. [cit. 2009-01-26]. Dostupné online.
- MAŘÍK, Vladimír. prezentace k předmětu Inteligentní Software [online]. [cit. 2009-01-26]. Dostupné online.
- ZBOŘIL, František. Podklady k přednáškám kurzu AGS [online]. [cit. 2009-01-26]. Dostupné online.[nedostupný zdroj]
- HOLAŇ, Jaroslav. Implementace multiagentního systému v prostředí JADE [online]. [cit. 2009-01-26]. Dostupné v archivu pořízeném dne 2014-03-08.
Související články
Multiagentní systém
Multiagentní modelování
Reaktivní agent
Racionální agent
Externí odkazy
- Tim Finin, Yannis Labrou, and James Mayfield, in Jeff Bradshaw (Ed.): KQML as an agent communication language , "Software Agents", MIT Press, Cambridge, 1997.
- Oficiální stránky sdružení FIPA
- Blogy o multiagentních systémech
- Multiagentní systém pro řízení bioprocesů Biogenes II[nedostupný zdroj]
- Multi-Agent Systems Lab
- Multiagentní systémy a řízení výroby[nedostupný zdroj]