Systemy wieloagentowe (MAS) struktura komunikacji między agentami. Autor: Zofia Kruczkiewicz

Podobne dokumenty
Dialogowe akty mowy w modelach sztucznej inteligencji

Informatyka Systemów Autonomicznych Praca zaliczeniowa

Architektury usług internetowych. Laboratorium 5. JADE

Komunikacja w systemie wieloagentowym

Architektury Usług Internetowych. Laboratorium 3. Usługi w środowisku wielo-agentowym

Wykład10, 11. ACL - język komunikacji między agentami. ACL - Agent Communication Language

Agentowe języki komunikacji (KIF, KQML, ACL)

Architektury Usług Internetowych. Laboratorium 5

Java Agent DEvelopment Framework Systemy Agentowe

Aplikacja wielowątkowa prosty komunikator

JADE Java Agent Development Framework. MiASI2, TWO2,

JADE Java Agent Development Framework. MiASI2, TWO2,

Aplikacja wielow tkowa prosty komunikator

Przetwarzanie Zespołowe

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Diagramy czynności Na podstawie UML 2.0 Tutorial

akademia androida Service, BroadcastReceiver, ContentProvider część IV

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Systemy wieloagentowe (MAS) zasady tworzenia systemów wieloagentowych za pomocą technologii MASE i JADEczęść.

Rozproszone systemy Internetowe

akademia androida Intencje oraz URI część III

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Autor: Zofia Kruczkiewicz Systemy wieloagentowe 1

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Języki i metody programowania Java. Wykład 2 (część 2)

Gatesms.eu Mobilne Rozwiązania dla biznesu

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Programowanie obiektowe

Komponenty sterowane komunikatami

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Model przypadków użycia - rola diagramów aktywności Część 2 Wykładowca Dr inż. Zofia Kruczkiewicz

Języki i metody programowania Java INF302W Wykład 2 (część 1)

5. Model komunikujących się procesów, komunikaty

Wykład 7: Pakiety i Interfejsy

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Application of the multi-agent systems in the context of the multi-commodity market model M 3

Mechanizmy pracy równoległej. Jarosław Kuchta

Systemy Agentowe główne cechy. Mariusz.Matuszek WETI PG

Systemy operacyjne na platformach mobilnych

Systemy wieloagentowe (MAS) zasady tworzenia systemów wieloagentowych za pomocą technologii MASE i JADEczęść.

Rozproszone systemy internetowe

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Simple Object Access Protocol

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Builder (budowniczy) Cel: Przykład:

O-MaSE Organization-based Multiagent System Engineering. MiASI2, TWO2,

Część I -ebxml. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

1 Wprowadzenie do J2EE

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Zadanie 2: transakcyjny protokół SKJ (2015)

Protokoły sieciowe - TCP/IP

DOKUMENTACJA TECHNICZNA SMS API MT

Dokumentacja smsapi wersja 1.4

Programowanie współbieżne i rozproszone

Remote Quotation Protocol - opis

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHNICZNA 1

Aplikacje RMI

Przesyłania danych przez protokół TCP/IP

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

World Wide Web? rkijanka

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Dziedziczenie. dr Jarosław Skaruz

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Ministerstwo Finansów

Industrial Ethernet Dokumentacja techniczna połączenia Sterowniki S7-400(300) firmy Siemens - System PRO-2000 firmy MikroB

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Serwery aplikacji. dr Radosław Matusik. radmat

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Laboratorium 8 Diagramy aktywności

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Zalety projektowania obiektowego

Wywoływanie procedur zdalnych

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Diagramy klas. dr Jarosław Skaruz

Modelowanie i analiza systemów informatycznych

Dokumentacja API sender sms

Wykład 5 Okna MDI i SDI, dziedziczenie

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Aplikacje RMI Lab4

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Dokumentacja do API Javy.

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

Specyfikacja HTTP API. Wersja 1.6

Sieci komputerowe i bazy danych

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

Model OSI. mgr inż. Krzysztof Szałajko

Rywalizacja w sieci cd. Protokoły komunikacyjne. Model ISO. Protokoły komunikacyjne (cd.) Struktura komunikatu. Przesyłanie między warstwami

Diagramy czynności tworzenie modelu przypadków użycia Wykład 2

UML a kod. C++, Java i C#

Wywoływanie procedur zdalnych

Klasy i obiekty cz II

DPDInfoServices. Specyfikacja biznesowa. Version DPD Polska Sp. z O.O. Warszawa

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Transkrypt:

Systemy wieloagentowe (MAS) struktura komunikacji między agentami http://www.multiagent.com Autor: Zofia Kruczkiewicz

Agenda 1. Wprowadzenie do zagadnień komunikacji między agentami 2. Specyfikacje FIPA 3. Komunikacja między agentami BUI 4. Wiadomości typu ACL 5. Semantyka wiadomości ACL 6. Protokoły interakcji 7. Przykład aplikacji realizujacej standardowy protokół Contact-Net Projekt MASE 8. Zastosowanie różnych mechanizmów JADE (2) zastosowanie szablonów protokołów

1. Wprowadzenie do zagadnień komunikacji między agentami

Wieloagentowy system informatyczny

Jakie są agenty? Autonomous - autonomiczne Interactive - interaktywne Adaptive przystosowujące się Sociable zdolne do zachowań społecznych Mobile - mobilne Proxy mogą wystąpić jako pełnomocnicy w różnych zadaniach Proactive zorientowane na cel Rational zdolne do racjonalnego działania Unpredictable - nieprzewidywalne Temporally continuous zdolne do ciągłej realizacji procesu Transparent and accountable - zrozumiałe i odpowiedzialne Coordinative skoordynowane planem, mechanizmami zarządzania Cooperative - współpracujące Competitive rywalizujące bez wyrządzania szkody innym agentom Rugged zdolne do zarządzania danymi obarczonymi błędami i danymi niepewnymi Trustworthy godne zaufania

Klasyfikacja paradygmatów agentów Autonomia dynamiczna (reaktywna, proaktywna) wynika z wewnętrznej struktury agenta nieprzewidywalna, przewidywalna wynika z zewnętrznych warunków Adaptacja Reakcja Wnioskowanie Uczenie Ewolucja Interakcja Komunikacja Koordynacja Kooperacja Współzawodnictwo

Interakcja - Dostępne, otwarte, niedeterministyczne, dynamiczne, ciągłe (wg J.Ferber)

2. SPECYFIKACJE FIPA Foundation for Intelligent Physical Agents normy- specyfikują zewnętrzne zachowania agenta i jego współpracę z innymi podsystemami ujętymi w specyfikacji FIPA informacje o aplikacjach określające sposób użycia technologii FIPA

Specyfikacje FIPA 2005 (97)

Część 1 - Agent Management Część 1 opisuje normy dotyczące: istnieniem agentów operacyjnością agentów zarządzaniem agentami Definicja platformy agenta, pojęcie białej i żółtej księgi, przysyłaniem wiadomości oraz zarządzaniem cyklami życia agenta, akty komunikacyjne agenta wyrażające jego inteligentne zachowanie oraz odpowiadająca ontologia oraz język zawartości wiadomości

Część 2 - Język komunikacji agenta The FIPA Agent Communication Language (ACL) jest oparty na teorii aktów mowy: wiadomości są aktami komunikacyjnymi. Specyfikacja składa się : ze zbioru typów wiadomości, które zawierają opis pragmatyki tych wiadomości wyrażające stosunek typu BUI agenta do innego agenta/agentów. Opis jest przedstawiony w formie narracyjnej i formalnej opartej na logice modalnej. Ze zbioru opisów protokołów komunikacji

Część 3 - Reprezentacja wiadomości i transportu wiadomości FIPA Agent Message Transport specifications deal with the transport and representation

Część 4 - Integracja Agent/Software Część 4 opisuje sposób integrowania oprogramowania nieagentowego z oprogramowaniem agentowym: Systemy baz danych Oprogramowanie sieciowe Oprogramowanie narzędziowe

Część 5 - Aplikacje (Osobisty Asystent Podróży) Turystyka obejmuje następujące komponenty: Zaopatrzeniowiec Pośrednik Usługi osobiste Role te pełni agent typu PTA - Personal Travel Agent

Część 5 - Aplikacje (Osobisty Asystent) Jest nim półautonomiczny agent typu PA (Personal Assistant) o następujących cechach: Realizuje usługi zaopatrzeniowe Informuje Zarządza podstawowymi danymi Organizuje rozrywkę Planuje czas przeznaczony na pracę i odpoczynek Organizuje spotkania Część 5 - Aplikacje (Przedsięwzięcia Audio/Video i transmisje) Wybór właściwych programów uwzględniając preferencje użytkownika Negocjowanie zmiany w programach

Część 5 - Aplikacje (Zarządzanie i zabezpieczanie sieci) Dostarczanie usług końcowym użytkownikom zgodnie z zasadą jakości usług i kosztu usług Idea VPN (Virtual Private Network) połączenia z wybranymi użytkownika na ich życzenie, dostarczanie usług audiowizualnych Zapewniają te usługi trzy typy agentów: The Personal Communications Agent (PCA) reprezentuje użytkownika The Service Provider Agent (SPA) - dostarcza usługi The Network Provider Agent (NPA) umożliwia dostęp do sieci

3. Komunikacja między agentami - BUI Cechy komunikacji : Komunikacja między agentami wynika ze spełnianych przez nich misji. Oparta jest ona na następujących mentalnych atrybutach agenta: Belief (wiara) oznacza zbiór propozycji, które agent akceptuje i zbiór propozycji, które agent nie akceptuje podczas negocjacji Uncertainty (niepewność) oznacza zbiór propozycji, które agent akceptuje lub nie akceptuje z pewnym poziomem niepewności, czy są prawdziwe lub fałszywe. Oznacza to, że agent przyjmuje model negocjacji, gdy przedmiotem jest niepewna informacja Intention (intencja) oznacza intencję, zamiar lub cel lub zbiór celów, które agent uważa za prawdziwe i te, w ktore agent nie wierzy. Intencje są przedstawiane w postaci planu akcji (np. za pomocą mapy stanów), prowadzących do zmiany stanów świata rzeczywistego, wybieranych przez agenta

Wnioski (1) Sprzeczności: dana jest propozycja p - wtedy stan wiary p, stan niewiary p, stan niepewności p i stan pewności p wykluczają się wzajemnie. W rozproszonych systemach agent jest jedynie zdolny do spełnienia swoich intencji za pomocą wpływu wywieranego na innych agentów do wykonania akcji. Wpływ wywierany na innych agentów osiąga się za pomocą specjalnej klasy akcji zwanych aktami komunikacyjnymi (communicative acts) czyli wysyłaniu wiadomości zawierających zakodowany akt komunikacyjny przez nadawcę do odbiorcy. Ważną rolę odgrywa typ wiadomości oraz posiadanie tej samej wiedzy opartej na koncepcji BUI. Np. Agent i wierzy, że lepiej jest czytać książki niż oglądać TV i uważa, że agent j będzie uważał podobnie. Agent i w ACL inform informuje j swojej o wierze. Agent j na podstawie semantyki inform wie, że agent i chce wpłynąć na jego intencje dotyczące wiary w wartość czytania książek, ale dla agenta j przyjęcie wiary agenta i może stanowić pewien problem.

Wnioski (2) transport wiadomości między agentami struktura wiadomości syntaktyka transportu wiadomości ACL w postaci strumienia bajtów katalog standardowych aktów komunikacyjnych zbiór i definicja podstawowych protokołów komunikacji zawierających zbiór wiadomości definicja modelu semantyki komunikacji.

4. Wiadomości typu ACL

Cechy wiadomości - FIPA ACL Typ wiadomości jest zgodny z typem zawartości wiadomości, którą powinna charakteryzować: kompletność prostota zwięzłość. Wiadomość reprezentuje akt komunikacyjny, jest jego synonimem Semantyka języka komunikacji jest oparta na precyzyjnym formalizmie, pozbawionym sprzeczności.

Wymagania transportu wiadomości ACL Usługę transportu wiadomości spełnia system zarządzania agentami Wymagania usług transportu wiadomości (niezbędne): przesyłanie zakodowanej wiadomości w postaci sekwencji bajtów usługi transportu powinny być niezawodne, dokładne, uporządkowane (kolejność) nie spełnienie tych własności powinno być sygnalizowane agent ma opcję wyboru sposobu odebrania wiadomości: uśpienie lub oczekiwania na wiadomość (tryb synchroniczny) lub wykonywanie innych czynności podczas oczekiwania na odpowiedź czas przeterminowania nie jest parametrem aktu komunikacyjnego, tylko systemu usług transportu wiadomości po wykryciu błędów, system może wysłać informację o tym fakcie do nadawcy w postaci wiadomości o błędzie system zapewnia wybór poprawnego mechanizmu transportu (TCP/IP, SMTP, HTTP, etc)

Wymagania dotyczące wiadomości ACL Wymaganie 1: Agenty mogą wysłać wiadomość not-understood, jeśli otrzymają wiadomość, której nie rozpoznają lub nie są w stanie odczytać zawartości wiadomości. Agenty muszą odebrać i obsłużyć taką wiadomość Wymaganie 2: Agent powinien posiadać predefiniowany zbiór typów wiadomości i protokołów, zgodnych z definicją semantyki aktów komunikacyjnych Wymaganie 3: Agent nie może zmieniać znaczenia istniejących predefiniowanych aktów komunikacyjnych Wymaganie 4: Agenty mogą wprowadzać nowe akty komunikacyjne zrozumiałe przez odbiorcę, jednak nie wolno im nadawać znaczenia istniejących aktów komunikacyjnych.

Wymaganie 5: Agent powinien poprawnie syntaktycznie formułować zawartość generowanej wiadomości oraz z taką samą poprawnością odczytywać wiadomości. Zawartość wiadomości Zawartość wiadomości odpowiada przeznaczeniu aktu komunikacyjnego. Wiadomość czyli akt komunikacyjny jest zdaniem, natomiast zawartość jest gramatycznym obiektem zdania. Zawartość jest zapisana w języku podanym w parametrze :language. Wymaganie 6: Ogólnie, język zawartości wiadomości musi wyrażać propozycje, obiekty i akcje. Język ten służy jedynie do wyrażania typów akcji: propozycji, informowania, żądania itp. Stany propozycji - true lub false Obiekty rzeczy abstrakcyjne lub konkretne Akcje agent staje sie aktywny (iota <variable> <term>) np. iota x(p x) oznacza, że x taki, że P [jest prawdziwe] dla x. Słowo iota jest konstruktorem dla termów.

Definicja 1: Język zawartości wiadomości FIPA jest oparty na gramatyce s-wyrażeń lub jej podgramatyce i umożliwia wyrażanie propozycji, obiektów i akcji odpowiadających cyklowi życia agenta. Wymaganie 7: Agent jest zobowiązany do wyrażania swoich możliwości wymieniając wiadomości napisane za pomocą języka zawartości wiadomości i stosując określoną ontologię.

Budowa wiadomości ACL

Parametry :performative :sender :receiver :reply-with :in-reply-to :envelope Znaczenie wiadomości typ wiadomości Nazwa agenta nadającego akt komunikacyjny (opcjonalna) Nazwa agenta, do którego wysłana jest wiadomość. Może to być pojedyncza nazwa lub zbiór nazw agentów - multicasting (opcjonalna) Atrybut zawiera wyrażenie, które identyfikuje oryginalną wiadomość. Może być używane w wątku konwersacji, jeśli jednocześnie prowadzi się kilka dialogów jednocześnie. Np. Agent i wysyła wiadomość do agenta j wiadomość, która zawiera :reply-with query1, agent j powinien odpowiedzieć :in-reply-to query1. Wiadomość wysłana jako odpowiedź zawiera w tym atrybucie wyrażenie, które jest również zawarte w parametrze reply-with w odebranej wiadomości, Wyrażenie użyteczne dla systemu usług transportowych i zawiera czas wysłania, czas odbioru, trasę itp. Struktura koperty jest listą par słów kluczowych, które oznaczają pewne aspekty usług wiadomości

:content :language :encoding :ontology :reply-by :protocol :conversationid Atrybut zawiera dane wiadomości, czyli treść akcji Atrybut zawiera schemat kodowania zawartości wiadomości. Opis kodowania wyrażeń zawartych w wiadomości Oznacza ontologię, która jest używana do podania znaczenia symboli używanych w wyrażeniu zawartości wiadomości (często domyślna) Oznacza czas i/lub datę wyrażenia, która oznacza najdłuższy czas, po którym wysyłający agent oczekuje na odpowiedź Identyfikator oznacza protokół, który zastosował wysyłający agent. Protokół dodatkowo podaje kontekst wiadomości (opcjonalny). W domyślnej sytuacji każda wiadomość może być traktowana indywidualnie, bez stosowania protokołu. Nadaje się wtedy niezerowy conversation-id. Odpowiedzi mogą być identyfikowane za pomocą tego samego conversation-id. Czas przeterminowania w reply-by oznacza maksymalny czas oczekiwania na kolejną wiadomość wyznaczoną przez protokół Wyrażenie jest używane do identyfikacji sekwencji wychodzących wiadomości, które tworzą konwersację. Konwersacja może być użyta do zarządzania strategią komunikacji i aktywności agenta oraz do dodatkowej interpretacji znaczenia wiadomości

Wykaz standardowych wiadomości ACL

Typ wiadomości accept proposal agree cancel cfp confirm disconfirm failure inform inform if (macro act) inform ref (macro act) Interpretacja znaczenia wiadomości Nadawca akceptuje wykonanie zadania przez odbiorcę, które zostało wcześniej zaproponowane przez odbiorcę Nadawca zgadza się na wykonanie zleconego zadania przez odbiorcę w przyszłości po spełnieniu pewnych warunków Nadawca anuluje wykonania zadania przez odbiorcę Nadawca podaje propozycję wykonania zadania przez odbiorcę, podając definicję tego zadania Nadawca potwierdza odbiorcy, że ufa wysłanej wcześniej przez niego informacji (nadawca zazwyczaj nie ufa) Nadawca potwierdza odbiorcy, że nie ufa wysłanej wcześniej przez niego informacji (nadawca zazwyczaj ufa) Nadawca wykonuje zadanie, ale powiadamia odbiorcę, że nie może go skończyć Nadawca przesyła propozycję do odbiorcy Nadawca przesyła propozycję do odbiorcy, podając, czy jest prawdziwa Nadawca przesyła wiadomość do odbiorcy, zawierającą odwołanie do propozycję,

not understood propose query if query ref refuse reject proposal request request when request whenever subscribe Nadawca nie rozumie wiadomości otrzymanej wcześniej od odbiorcy i informuje go o tym Nadawca informuje odbiorcę, że przyjmuje jego propozycje wykonania zadania, podanego w wiadomości cfp Nadawca pyta odbiorcę, czy wysyłana propozycja jest prawdziwa Nadawca pyta odbiorcę, czy wskazana propozycja w wiadomości jest prawdziwa Nadawca odmawia odbiorcy wykonania zadania Nadawca nie przyjmuje propozycji od odbiorcy Nadawca żąda wykonania zadania przez odbiorcę Nadawca żąda wykonania zadania przez odbiorcę, kiedy zostaną spełnione podane propozycje Nadawca żąda wykonania zadania przez odbiorcę, w dowolnym momencie, kiedy zostaną spełnione podane propozycje w wiadomości Nadawca żąda, aby był przez odbiorcę powiadamiany o wskazanej informacji oraz o zmianach tej informacji

Zależności między wiadomościami ACL

Typ wiadomości Kategorie wiadomości Przesyłanie informacji Żądanie informacji Negocjacje Wykonanie akcji Osługa błędu accept-proposal + agree cancel + + cfp + confirm disconfirm + + failure + inform inform-if (macro act) inform-ref (macro act) + + + not-understood + propose + query-if query-ref + + refuse + reject-proposal + request request-when request-whenever + + + subscribe +

5. Semantyka wiadomości ACL

Semantyka języka ACL Język semantyki typu Semantic Language (SL) jest formalnym językiem używanych do definicji semantyki języka typu FIPA Agent Communication Language (FIPA ACL).

(I John (B Bob(temperature 10)))

Przykłady Definicja aktu komunikacyjnego <i, act (j, C)> Równoważna definicja aktu komunikacyjnego (act :sender i :receiver j :content C) FP: φ1 RE: φ2 gdzie i jest inicjatorem akcji, j jest uczestnikiem, act jest nazwą aktu, C reprezentuje semantyczny kontekst φ1 and φ2 są propozycjami, FP jest możliwym skutkiem działania act, RE jest racjonalnym efektem działania act.

Przykład (1) ogólny model request Model aktu komunikacyjnego typu request (FIPA00037, 2000): <i, request (j, a)> FP: φ1 RE: φ2 Równoważny zapis (request :sender i :receiver j :content a) FP: FP(a) [i\j] Bi Agent (j, a) Bi Ij Done (a) RE: Done (a)

Przykład (1) zastosowanie request Agent x żąda od agenta y, aby ten zarezerwował mu bilet. (request :sender (agent-identifier :name x) :receiver (set (agent-identifier :name y)) :content "((action (agent-identifier :name y) (reserve-ticket LHR MUC 27-sept-97) ))" :protocol fipa-request :language fipa-sl :reply-with order567)

Przykład (1) ogólny model agree Jeśli agent i może wykonać polecenie, wysyła wiadomość typu agree do agenta j <i, agree (j, <i, request>, φ))> <i, inform (j, Ii Done (<i, act>, φ))> FP: Bi α Bi (Bifj α Uifj α) RE: Bj α gdzie: α = Ii Done(<i, act>, φ)

Przykład (1) - zastosowanie agree Agent y odpowiada agentowi x, że zgadza się, ale pod warunkiem, że na koncie agenta x znajduje się wystarczająca ilość pieniędzy. (agree :sender (agent-identifier :name y) :receiver (set (agent-identifier :name x)) :content "( (action (agent-identifier :name y) (reserve-ticket LHR MUC 27-sept-97)) (sufficient- funds ac12345))" :in-reply-to order567 :protocol fipa-request :language fipa-sl)

Przykład (1) - ogólny model refuse Jeśli agent i odmawia agentowi j wykonania polecenia wysłanego w wiadomości typu request, wysyła do niego wiadomość typu refuse <i, refuse (j,<i, act>,φ)> <i, disconfirm (j, Feasible(<i, act>))>; <i, inform (j, φ Done (<i, act>) Ii Done (<i, act>))> FP: Bi Feasible (<i, act>) Bi (Bj Feasible (<i, act>) Uj Feasible (<i, act>)) Bi α Bi (Bifj α Uifj α) RE: Bj Feasible (<i, act>) Bj α gdzie: α = φ Done (<i, act>) Ii Done (<i, act>)

Przykład (1) zastosowanie refuse Agent y odpowiada, że odmawia rezerwacji biletu agentowi y, ponieważ brakuje pieniędzy na koncie (refuse :sender (agent-identifier :name y) :receiver (set (agent-identifier :name x)) :content "((action (agent-identifier :name y) (reserve-ticket LHR MUC 27-sept-97)) (insufficient- funds ac12345))" :in-reply-to order567 :protocol fipa-request :language fipa-sl)

Przykład (2) call for proposal Agent j składa propozycję agentowi i sprzedania mu 50 skrzynek śliwek (cfp :sender (agent-identifier :name j) :receiver (set (agent-identifier :name i)) :content "((action (agent-identifier :name i) (sell plum 50)))" :ontology fruit-market :reply-with proposal2 )

Przykład (2) refuse Agent i odmawia agentowi j zakupu śliwek, gdy j nie ma wystarczającej kwoty na koncie: (refuse :sender (agent-identifier :name i) :receiver (set (agent-identifier :name j)) :content "((action (agent-identifier :name i) (sell plum 50)) (insufficient-funds ac12345))" :language fipa-sl)

Przykład (2) - propose Agent i informuje j, że sprzeda 50 skrzynek ze śliwkami w cenie $200: ( propose :sender (agent-identifier :name i) :receiver (set (agent-identifier :name j)) :content "((action i (sell plum 50))(cost 200))" :ontology fruit-market :language fipa-sl :in-reply-to proposal3)

Przykład (2) reject-proposal Agent i informuje j, że odrzuca ofertę kupna śliwek od j, ponieważ cena jest za wysoka (reject-proposal :sender (agent-identifier :name i) :receiver (set (agent-identifier :name j)) :content "((action (agent-identifier :name j) (sell plum 50)) (cost 200) (price-too-high 50))" :in-reply-to proposal3)

Przykład (2) - inform (inform :sender (agent-identifier :name i) :receiver (set (agent-identifier :name j)) :content "((action (agent-identifier :name j) (sell plum 50)) (cost 200))" :language sl)

Przykład (2) - failure (failure :sender (agent-identifier :name i) :receiver (set (agent-identifier :name j)) :content "((action (agent-identifier :name j) (sell plum 50)) (error-message "No plum")) :language sl)

6. Protokoły interakcji Używane wiadomości w różnych konwersacjach mogą tworzyć pewien szablon, co prowadzi do definicji nowego typu protokołu interakcji Wymaganie 8: Agent nie musi implementować standardowych protokołów, jednak jeśli przyjęto nazwę standardowego protokołu, musi ona odpowiadać podanej w specyfikacji FIPA. Agent może brać udział w kilku konwersacjach jednocześnie prowadząc dialog z wieloma agentami. Konwersacje te mogą należeć do różnych protokołów. Należy zapewnić rozróżnialność poszczególnych wiadomości należących do różnych protokołów i konwersacji.

Przykład Specyfikacja protokołu, jeśli jest operacją (request :sender i :receiver j :content some-act :protocol fipa-request )

Notacja standardowego opisu protokołu prostokaty z podwójnymi krawędziami reprezentują akt komunikacyjny Biały prostokąt reprezentuje akcje podejmowane przez nadawcę Szare prostokaty reprezentują akcje podejmowane przez pozostałych uczestników protokołu Tekst napisany italikiem reprezentuje komnetarz

Protokół FIPA-request

Protokół FIPA-request-when

FIPA-query Protocol

Protokół FIPA-contract-net

FIPA-Iterated-Contract-Net Protocol

7. Przykład aplikacji realizujacej standardowy protokół Contact- Net Projekt MASE

receive(inform) receive(failure) send(cfp) send(reject-proposal) receive(propose) Deadline for proposals send(accept -proposal)

send(failure) send(inform) receive(cfp) receive(reject -proposal) refuse send(propose) receive (acceptproposal)

8. Zastosowanie różnych mechanizmów JADE (2) zastosowanie szablonów protokołów

Zachowania Jade

Inicjator protokołu import jade.core.*; import jade.lang.acl.aclmessage; import jade.proto.contractnetinitiator; import jade.domain.fipanames; import java.awt.event.*; import java.util.*; import javax.swing.*; // deficja agenta typu inicjator protokołu typu FIPA-Contract-Net public class ContractNetInitiatorAgent1 extends Agent { int inicjowanierandom; //dane do realizacji losowych zadań int liczbaodbiorcow; //liczba agentów usługodawców String odbiorcy = ""; //łańcuch zawierający nazwy agentów usługodawców //wiadomość typu cfp protokolu ContarctNet ACLMessage wiadomosc = new ACLMessage(ACLMessage.CFP); //definicja komponentów interfejsu graficznego agenta typu inicjator //metoda Ramka tworząca interfejs graficzny użytkownika i przygotowująca wiadomość typu cfp void Ramka(Agent a) { final Agent ag = a; ramka = new JFrame("Agent inicjator"); ramka.setsize(300, 420); ramka.setdefaultcloseoperation(jframe.dispose_on_close);

//obsługa zdarzeń GUI agenta usługobiorcy zatwierdz.addactionlistener(new ActionListener() { @Override public void actionperformed(actionevent evt) { // kod źródłowy metody, która przygotowuje wiadomość typu cfp // i wstawia zachowanie typu NowyContractNetInitiator //które po uruchomieniu wysyła wiadomość typu cfp } }); //wstawianie komponentów GUI do obiektu ramka typu JFrame @Override // wywołanie metody setup agenta inicjujące działania agenta protected void setup() { Ramka(this); }} //definicja klasy typu Behaviour do obsługi protokołu typu FIPA-Contract-Net po stronie agenta inicjatora class NowyContractNetInitiator extends ContractNetInitiator { int liczbaodbiorcow; int inicjowanierandom; JTextArea komentarz; //kontakt z GUI agenta inicjatora NowyContractNetInitiator(Agent agent, ACLMessage wiadomosc, int liczbaodbiorcow_, int inicjowanierandom_, JTextArea kom) { // kod źródłowy konstruktora }

@Override //obsługa odbioru wiadomości typu refuse protected void handlerefuse(aclmessage refuse) { // kod źródłowy metody } @Override // obsługa odbioru wiadomości typu propose protected void handlepropose(aclmessage propozycja, Vector v) { // kod źródłowy metody } //obsługa odbioru wiadomości typu propose oraz przygotowanie się do wysłania wiadomości typu //reject-proposal lub accept-proposal @Override protected void handleallresponses(vector odbiorcy, Vector wybrani) { //reakcja na przekroczenie czasu oczekiwania na propozycje // kod źródłowy metody } @Override // obsługa odbioru wiadomości typu failure protected void handlefailure(aclmessage failure) { // kod źródłowy metody } @Override //obsługa wiadomości typu inform protected void handleinform(aclmessage inform) { // kod źródłowy metody } //pomocnicza metoda do obsługi zlecania zadań public byte[] wypelnij(int n, int m, int offset, int zakres) { // kod źródłowy metody return tablica1; } }

Odbiorca import jade.core.agent; import jade.lang.acl.*; import jade.domain.*; import jade.domain.fipaagentmanagement.*; import jade.proto.contractnetresponder; import javax.swing.*; // klasa agenta typu odbiorca public class ContractNetResponderAgent1 extends Agent { // definicja komponentów GUI agenta odbiorcy //metoda Ramka służy do budowy GUI agenta odbiorcy void Ramka() { // kod źródłowy metody tworzacej GUI } // metoda inicjująca agenta typu odbiorca - tworzy GUI użytkownika // i wstawia zachowanie agenta typu NowyContractNetResponder // do obsługi nadawania i odbioru wiadomości po stronie odbiorczej protokołu @Override protected void setup() { // kod źródłowy metody }

// definicja klasy NowyContractNetResponder do obsługi // nadawania i odbioru wiadomości po stronie odbiorczej // protokołu FIPA-Contract-Net class NowyContractNetResponder extends ContractNetResponder { JTextArea komentarz; // elementy łączące z GUI agenta //odbiorcy JFrame ramka; //definicja konstruktora klasy NowyContractNetResponder NowyContractNetResponder(Agent agent, MessageTemplate szablon, JTextArea komentarz_, JFrame ramka_) { //kod źródłowy konstruktora }

// metoda do obsługi wysłania wiadomości propose lub wysłania wiadomości refuse @Override protected ACLMessage prepareresponse( ACLMessage wezwanie_do_propozycji) throws NotUnderstoodException, RefuseException{ // kod źródłowy metody } // metody do obsługi odbioru wiadomości typu reject-proposal @Override protected void handlerejectproposal(aclmessage wezwanie_do_propozycji, ACLMessage propozycja, ACLMessage akceptacja) { // kod źródłowy metody } // metoda do obsługi wysłania wiadomości propose lub wysłania wiadomości refuse oraz // wysłania wiadomości typu inform w przypadku zaakceptowania propozycji zawartej // w wiadomości propose wykonania zadania lub failure w przypadku niepowodzenia // podczas realizacji zadania @Override protected ACLMessage prepareresultnotification( ACLMessage wezwanie_do_propozycji, ACLMessage propozycja, ACLMessage akceptacja) throws FailureException { // kod źródłowy metody } //koniec metody } //koniec definicji klasy NowyContractNetResponder

Start systemu agenta inicjator przygotowuje dane zlecanego zadania, agenci odbiorcy r1 i r2 oczekują na wiadomość typu cfp

Przygotowanie danych do wysłania wiadomości typu propose przez agentów typu odbiorcy

Reakcje agenta inicjatora na spóźnione nadesłanie wiadomości typu propose ze strony agentów usługodawców wysłanie wiadomości reject-proposal

Przypadek odebrania propozycji wysłanych przez agentów usługodawców agentowi wysłanie accept-proposal oraz reject-proposal

Przypadek akceptacji przez agenta usługobiorcę propozycji w wiadomości propose wysłanej przez agenta usługodawcę r1 i następnie wysłanie przez agenta r1 informacji o wykonanym zadaniu wysłanie inform