Paweł Krajna - Marek Piasecki

Transkrypt

Paweł Krajna - Marek Piasecki
Paweł Krajna
Wrocław, 5.04.2007
Informatyka Systemów Autonomicznych
Praca zaliczeniowa
Temat: ACL - język komunikacji.
Spis treści
Wstęp....................................................................................................................................................2
Dokumentacja.......................................................................................................................................2
Przegląd komunikacji między agentami...............................................................................................3
Mechanizmy wysyłania wiadomości....................................................................................................3
Wiadomość w języku ACL...................................................................................................................3
Struktura wiadomości......................................................................................................................4
Parametry wiadomości.....................................................................................................................4
Zawartość wiadomości....................................................................................................................4
Akty komunikacji (communicative acts).........................................................................................5
Prymitywny akt komunikacji......................................................................................................5
Złożony akt komunikacji............................................................................................................6
Protokoły..............................................................................................................................................7
Framework JADE.................................................................................................................................7
Przykład przygotowania i wysłania prostego komunikatu..............................................................7
Odbieranie komunikatu....................................................................................................................8
Słowo zakończenia...............................................................................................................................8
Literatura..............................................................................................................................................9
1
Wstęp
ACL (ang. Agent Communication Language) jak wynika z rozwinięcia skrótu jest to
język, który pozwala agentom komunikować się między sobą za pomącą wiadomości posiadających
określoną strukturę. W mojej pracy postaram się opisać ten język, strukturę komunikatów oraz
protokół komunikacji na tyle dobrze na ile robi to FIPA [1] w wydanych specyfikacjach. Pokaże
również inny znacznie prostszy sposób programowania systemów wieloagentowych przy użyciu
darmowego (dostępny na licencji GNU LGPL) frameworku JADE [4]. Pozwala on konstruować
i administrować agentów zgodnych z FIPA. Jest to druga część mojej pracy. Wszystkie zawarte
przykłady opierają się na zbieraniu informacji o pogodzie. Wiadomości zawierają treść w języku
Prolog i/lub XML.
Dokumentacja
FIPA (ang. Foundation for Intelligent Physical Agents) -fundacja powstała, aby tworzyć
standardy pozwalające budować systemy oparte na agentach. FIPA tworzy przede wszystkim
standardy związane z komunikacją i współpracą agentów w systemach wieloagentowych. Stawia
wymagania, które powodują że systemy rozwijane przez różne organizacje, mogą z sobą
współpracować.
Pierwszą ze specyfikacji wydanych przez fundacje jest FIPA 97 [2]. Zawiera ona
definicje:
●
Agent management [3]: normatywny framework, w ramach którego agent FIPA może
istnieć, pracować i być sterowany;
●
ACL: zbiór komunikatów i ich opis;
●
Agent/Software integration: sugestia w jaki sposób agenci mogą się komunikować
z otoczeniem (oprogramowaniem, systemami baz danych, sterownikami, itp.)
●
Personal travel assistance;
●
Personal assistant;
●
Audio/video entertainment and broadcasting;
●
Network mamagement and provisioning.
Ostatnie cztery dokumenty przedstawiają implementacje i przykłady rozwiązań oparte
2
na wymaganiach opisanych w trzech pierwszych dokumentach.
Przegląd komunikacji między agentami
Specyfikacja FIPA ACL nie definiuje otwarcie czym jest agent albo w jaki sposób
powinien być zaimplementowany, jednak zakłada szereg jego właściwości:
●
agent posiada poglądy mentalne:
○
wiara: zbiór własności, które agent uznaje za prawdziwe;
○
tolerancja niepewności: zbiór własności, które agent akceptuje, ponieważ wydają się być
bardziej prawdą niż fałszem;
○
zamiary: zbiór własności, które agent chciałby uznać za prawdziwe ale nie wierzy, że są
prawdziwe. Agent tworzy plan doprowadzenia świata do stanu, który pożąda.
●
Agent podejmuje pewne akcje zwane „aktem rozmowy” polegające na wysyłaniu
komunikatów. Sam język ACL dotyczy komunikacji między agentami poprzez przesyłanie
wiadomości.
Mechanizmy wysyłania wiadomości
ACL zminimalizował wymagania dotyczące usługi dostarczania wiadomości na tyle, że
agenci mogą używać różnorodnych protokołow komunikacji (TCP/IP, HTTP, SMTP, GSM, ...);
chodzi wyłącznie o to żeby przesłać tekstową wiadomość przez pojedynczy strumień bajtów.
ACL nakłada następujące wymagania na protokół (Agent management):
●
Protokół potrafi dostarczyć wiadomość jako sekwencję bajtów;
●
Agent może zadecydować czy transmisja odbywa się asynchronicznie (może kontynuować
prace w czasie, w którym musiałby oczekiwać na odpowiedz) czy synchronicznie;
●
Parametry dostarczenia wiadomości (takie jak time out...) mogą być modyfikowane;
●
Agent zostanie zwrotnie poinformowany o warunkach wystąpienia błędu (niedostarczalny,
nieosiągalny, źle sformatowana wiadomość, ...);
Wiadomość w języku ACL
Nie jest konieczne żeby agent implementował wszystkie typy wiadomości, jednak jest
3
postawione minimalne wymaganie dla zapewnienia zgodności z ACL:
●
Agent jest zdolny do wysyłania i rozumienia wiadomości;
●
Wiadomość ACL musi być poprawnie zaimplementowana zgodnie z definicją semantyczną;
●
Nowy komunikat nie powinien oznaczać tego samego co inny zdefiniowany standardem;
●
Agent musi być zdolny do generowania syntaktycznie poprawnych, zdefiniowanych
wiadomości.
Struktura wiadomości
Główny element wiadomości ma następującą postać:
(inform
:sender pawel
:receiver gawel
:content weather(today, snowing)
:in-reply-to g01
:reply-with p01
:language Prolog
:ontology weather
)
Jak widzimy pierwszy element wiadomości ACL (inform) to słowo identyfikujące akt
komunikacji; reszta sekwencji to parametry wiadomości.
Parametry wiadomości
Parametry mogą występować w wiadomości w dowolnej kolejności. Jedyny wymagany
parametr to :receiver aby wiadomość mogła być poprawnie dostarczona. Pełna lista
zdefiniowanych parametrów zawiera parametry takie jak :sender i :receiver (nadawca i odbiorca
wiadomości), :content i :language opisujące treść, :protocol identyfikujący protokół rozmowy,
:reply-with określający wyrażenie użyte później w odpowiedzi przez odbiorce po to by nadawca
wiedział do jakiej orginalnej wiadomości odnosi się odpowiedz, :in-reply-to z wyrażeniem
przekazanym w prametrze :reply-with, :ontology określa kontekst wiadomości, :envelope
(zawartość nie jest sprecyzowana w dokumentacji, może zawierać takie informacje jak czas
wysłania, czas odbioru, routing, etc.) :repley-by, :conversation-id.
Zawartość wiadomości
Zawartość wiadomości odnosi się do tego co zgłasza akt komunikacji (jeżeli akt
4
komunikacji jest sentencją to zawartość komunikacji jest jej obiektem gramatycznym).
Nie ma konkretnego języka zawartości. ACL narzuca jedynie warunek, że język
zawartości potrafi wyrazić propozycje, obiekt i akcje:
●
propozycja: oświadcza, że jakieś zdanie języka jest prawdą lub fałszem;
●
obiekt: definiuje w języku niezdefiniowane rzeczy (przez nazwę);
●
akcja: czynność jaka może być wykonana przez agenta.
Agent musi być pewny, że język zawartości wiadomości jest pospolicie używanym
językiem. Język ten może być uzgodniony na różne sposoby:
●
przez przyjętą konwencję: oficjalny język, który każdy agent zrozumie (np. XML);
●
negocjacje: agenci muszą wspólnie zadecydować jakiego języka będą używać;
●
tłumaczenie: agent musi zaangażować usługę pośrednika w tłumaczeniu.
Zazwyczaj agenci ustalają język na drodze negocjacji.
Akty komunikacji (communicative acts)
Akt komunikacji to proste bloki dialogu między dwoma agentami. Akt komunikacji jest
niezależny od zawartości poszczególnych komunikatów i wykonuje się poprzez wysłanie
wiadomości przez jednego agenta do drugiego.
Istnieją dwie kategorie aktu komunikacji:
●
prymitywny: złożony z co najwyżej jednego aktu komunikacji
●
złożony: złożony z więcej niż jednego aktu (query-if act: „Ja request ciebie:
inform mnie pogoda jest pada snieg”), możliwy operator „;” (a;b -akcja a poprzedza b);
możliwy operator ”|” (a|b -akcja a albo akcja b)
Prymitywny akt komunikacji
Przykład (potwierdzenie niepewnej propozycji z potwierdzeniem):
(confirm
:sender pawel
:reciwer gawel
:content weather(today,snowing)
:language Prolog
<!DOCTYPE request SYSTEM "request.dtd">
<request>
<sender>pawel</sender>
<receiver>gawel</receiver>
<content>
5
)
<action>weather</action>
<args>today</args>
<args>snowing</args>
</content>
<languange>Prolog</languange>
</request>
Agent pawel jest zdolny potwierdzić własność w agentowi gawel tylko jeżeli pawel
wierzy w w. Agent pawel musi wierzyć, że gaweł jest niepewny co do własności w. Nadawca życzy
również gawlowi aby uwierzył we własność w.
Plik request.dtd definiuje formalną strukturę dokumentu XML.
Złożony akt komunikacji
Przykład (agent nie ma żadnej wiedzy żeby wysłać propozycje: agent pawel pyta gawla
o informacje o pogodzie we Wrocławiu na Dolnym Śląsku):
(request
:sender pawel
:reciwer gawel
:content
(inform-if
:sender pawel
:reciwer gawel
:content in(Wroclaw,”Dolny Slask”)
:language Prolog
)
:language sl
)
<!DOCTYPE request SYSTEM "request.dtd">
<request>
<sender>pawel</sender>
<receiver>gawel</receiver>
<content>
<inform-if>
<sender>pawel</sender>
<receiver>gawel</receiver>
<content>
<action>in</action>
<args>Wroclaw</args>
<args>Dolny Slask</args>
<content>
<languange>Prolog</languange>
</inform-if>
</content>
<languange>Prolog</languange>
</request>
Należy wyjaśnić nazwę inform akt: <pawel,inform-if(gawel,propozycja)> jest
równoważne <pawel,inform(gawel,propozycja)> | <pawel,inform(gawel,not(propozycja))>
Na powyższych przykładach wyraźnie widać różnicę między prymitywnym i złożonym
6
aktem komunikacyjnym.
Protokoły
Trwająca rozmowę między agentami często przybiera postać typowego wzorca
wiadomości zwany protokołem.
Za prosty przykład protokołu może posłużyć FIPA-Request, który pozwala jednemu
agentowi zapytać innego o wykonanie pewnej akcji, otrzymanie agenta do wykonania akcji lub
odpowiedz , że nie jest w stanie jej wykonać.
Graf 1. FIPA -Protokół Request.
Framework JADE
W ramach frameworku JADE [5], język komunikatów został zaimplementowany w
postaci klasy jade.lang.acl.ACLMessage.
Klasa ta posiada szereg metod umożliwiających wygodne konstruowanie
i przetwarzanie treści komunikatów:
●
●
●
●
●
●
get / setPerformative();
get / setSender();
add / getAllReceiver();
get / setLanguage();
get / setOntology();
get / setContent();
Przykład przygotowania i wysłania prostego komunikatu
ACLMessage msg = new ACLMessage( ACLMessage. INFORM);
msg.addReceiver( new AID(“pawel”, AID.ISLOCALNAME));
msg.setLanguage(“Prolog”);
7
msg.setOntology(“weather”);
msg. setContent(“weather(today, snowing)”);
send( msg);
// myAgent.send( msg );
Odbieranie komunikatu
ACLMessage msg = receive();
// myAgent.receive( msg );
if (msg != null) {
// Przetwarzanie komunikatu
}
else {
block( );
/*block() -metoda klasy Behaviour powodująca przeniesienie danego zachowania z kolejki
aktywnych zachowań w stan „zablokowania”*/
}
Po otrzymaniu dowolnego komunikatu (przez Agenta) wszystkie zablokowane
zachowania są ponownie umieszczane w kolejce zachowań.
Do selektywnego odczytywania komunikatów należy wykorzystywać obiekty klasy
jade.lang.acl.MessageTemplate:
MessageTemplate tpl = MessageTemplate.MatchOntology(“weather”);
public void action() {
ACLMessage msg = myAgent.receive(tpl);
if (msg != null) {
// Przetwarzanie komunikatu
}
Słowo zakończenia
Jak widać język komunikacji agentów to proste zagadnienie i można by pokusić się o
własną
implementację.
Jednak
stosowanie
ogólnie
przyjętego
standardu
pozwalaja
usystematyzować strukturę wysyłanych wiadomości i zapewnić komunikację między niezależnymi
agentami lub agentem a systemem. Daje to szersze, wręcz nieograniczone możliwości. Sposobności
te spowodowały, że programy implementujące agentów są dziś stosowane od początku procesu
handlowego, czyli od marketingu i bezpośredniego kontaktu z klientem, poprzez rekomendowanie
produktów, wyszukiwanie towarów i dostawców, negocjowanie cen, warunków dostawy, gwarancji,
aż po reprezentowanie człowieka na aukcjach i rynkach elektronicznych.
Przykładem jest agent SouthamptonTAC, który wykorzystuje logikę rozmytą do
określania kategorii aukcji, w jakiej bierze aktualnie udział i na tej podstawie dobiera strategię i
8
decyduje, czy kupować towar, czy czekać [6]. Prowadzone są prace badawcze nad zastosowaniem
tego typu agentów na giełdzie papierów wartościowych tak, aby wspomóc, a może nawet zastąpić,
maklerów giełdowych.
Możliwe że w przyszłości agenci w pełni zastąpią człowieka w procesie handlu
elektronicznego.
Literatura
[1] Strona domowa FIPA: http://www.fipa.org/repository/fipa97.html
[2] Strona zawierająca listę odnośników do użytych w pracy dokumentów:
http://www.fipa.org/repository/fipa97.html
[3] Specyfikacja Agent Communication Language (dokument: Part 2, FIPA 97):
http://www.fipa.org/specs/fipa00003/OC00003.pdf
[4] Strona domowa projektu JADE: http://jade.tilab.com/
[5] Pełna dokumentacja JADE: http://jade.tilab.com/doc/index.html
[6] M. Brooke-Smith, Is it possible that human stockbrokers could, one day, be replaced with
computer based agent traders?, 2nd Annual CM316 Conference on Multimedia Systems,
Southampton University, UK 12th January 2002,
http://mms.ecs.soton.ac.uk/mms2002/papers/29.pdf
9

Podobne dokumenty