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:

  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é slovoPopis
contentobsah zprávy
forcetyp zprávy
in-reply-tokód zprávy, na kterou je tato zpráva odpovědí
languagejazyk, ve kterém je napsán obsah zprávy
ontologyontologie obsahu zprávy
recieverpříjemce
reply-withkód odpovědi, pokud je očekávána
senderodesí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é slovoPopis
performativetyp zprávy
senderodesílatel
receiverpříjemce
reply-toidentifikace agenta, který má obdržet odpověď
contentobsah zprávy
languagejazyk obsahu zprávy
encodingspecifikace kódování obsahu
ontologyontologie
protocolinterakční protokol
coversation-ididentifikátor konverzace
reply-withidentifikátor, kterým má být označena odpověď
in-reply-toidentifiká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í aktvýznam
confirmAgent potvrzuje, že informace, o které si druhý nebyl jist pravdivostí, pravdivá je
disconfirmAgent nepotvrzuje pravdivost informace
informAgent informuje druhého o pravdivosti nějaké informace
inform ifAkt, kterým agent informuje druhého, zdali nějaká informace pravdivá je, nebo není
inform refAgent informuje druhého o stavu objektu, na který byl dotazován
cancelAgent informuje druhého, že již netrvá na provádění domluvené akce druhým.
query ifAgent se táže druhého, zdali je obsah zprávy pravdivý.
query refAgent žádá druhého o informování o stav objektu, specifikovaného přiloženou referencí
subscribeAgent žá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 proposalPřijmutí předchozího požadavku na vykonání akce.
agreeSouhlas s provedením akce v budoucnu.
call for proposalPožadavek na podávání návrhů provedení nějaké akce
failureAgent informuje druhého, že se pokusil vykonat smluvenou akci, ale neúspěšně.
not understoodAgent informuje, že nerozuměl předchozí zprávě (jediný povinný typ zprávy pro agenta komunik. v ACL)
propagatePožadavek, aby zpráva byla poskytnuta prostřednictvím příjemce dalším agentům.
proposeAgent dává návrh, že provede nějakou akci společně s případnými podmínkami, za kterých akci provede.
proxyAgent žádá druhého, aby určil skupiny agentů na základě přiložených podmínek a zaslal jim vloženou zprávu.
refuseAgent odmítá vykonat akci a přikládá vysvětlení důvodů odmítnutí.
reject proposalAgent odmítá návrh druhého během vyjednávání.
requestAgent žádá druhého o vykonání nějaké akce.
request whenAgent žádá druhého o vykonání nějaké akce, pokud nastane uvedená podmínka.
request wheneverObdobné 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