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]
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
|
receiver
|
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
- ↑ 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.
- ↑ ŠŤASTNÝ, Pavel. Multiagentní systémy v medicíně [online]. [cit. 2009-01-26]. Dostupné v archivu pořízeném dne 2014-08-12.
- ↑ 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.
- ↑ a b c MAŘÍK, Vladimír. prezentace k předmětu Inteligentní Software [online]. [cit. 2009-01-26]. Dostupné online.
- ↑ a b 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