Přeskočit na obsah

Agent Communication Language

Z Wikipedie, otevřené encyklopedie

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:

  1. adresné posílání zpráv – zpráva se posílá konkrétním agentům
  2. všesměrové posílání zpráv – zpráva se posílá všem agentům
  3. 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]

  1. Fyzická úroveň – vrstva zajišťující přenos zprávy jako posloupnost bitů (využívá fyzické, linkové a síťové vrstvy OSI modelu)
  2. 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.
  3. Ú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.
  4. Úroveň ACL – zaměřuje se na identifikaci odesílatele a příjemce a na jazyk vlastní zprávy (př. KQML, FIPA-ACL)
  5. Ú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]

parametry zprávy KQML[3]
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]

parametry zprávy FIPA-ACL[6]
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í akty[5]
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

  1. a b c d e f g BERKA, Petr. Inteligentní Systémy. Praha : Nakladatelství Oeconomica, 2008. [Cit. 2010-01-16]. ISBN 978-80-245-1436-9.
  2. ŠŤASTNÝ, Pavel. Multiagentní systémy v medicíně [online]. [cit. 2009-01-26]. Dostupné v archivu pořízeném dne 2014-08-12. 
  3. a b 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. 
  4. a b c MAŘÍK, Vladimír. prezentace k předmětu Inteligentní Software [online]. [cit. 2009-01-26]. Dostupné online. 
  5. a b ZBOŘIL, František. Podklady k přednáškám kurzu AGS [online]. [cit. 2009-01-26]. Dostupné online. [nedostupný zdroj]
  6. 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