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



Podobne dokumenty
Komunikacja w systemie wieloagentowym

Informatyka Systemów Autonomicznych Praca zaliczeniowa

Architektury usług internetowych. Laboratorium 5. JADE

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

Java Agent DEvelopment Framework Systemy Agentowe

JADE - Java Agent DEvelopment Framework

Dialogowe akty mowy w modelach sztucznej inteligencji

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

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

Architektury Usług Internetowych. Laboratorium 5

Programowanie obiektowe

Przetwarzanie Zespołowe

JADE Java Agent Development Framework. MiASI2, TWO2,

Java: interfejsy i klasy wewnętrzne

Technologia inteligentnych agentów. Autor: dr Jacek Jakieła

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Zaawansowane aplikacje WWW - laboratorium

Podstawy Programowania

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Algorytmy z powrotami. Algorytm minimax

Generatory. Michał R. Przybyłek

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor

Programowanie telefonów z Windows Phone 7, cz. 4

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

JADE Java Agent Development Framework. MiASI2, TWO2,

Programowanie obiektowe

Klasy i obiekty cz II

Obsługa SMS i telefonii

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Systemy operacyjne na platformach mobilnych

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Programowanie obiektowe

Programowanie obiektowe

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Platformy Programistyczne Podstawy języka Java

Współbieżność w środowisku Java

Diagram stanów Laboratorium 9

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Komponenty sterowane komunikatami

Microsoft IT Academy kurs programowania

Laboratorium 8 Diagramy aktywności

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

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

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Wstęp do Programowania 2

Wykład 7: Pakiety i Interfejsy

ANALIZA PROCESÓW KOMUNIKACYJNYCH W SYSTEMACH WIELOAGENTOWYCH Z WYKORZYSTANIEM JĘZYKA KQML

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

Wykład 4: Klasy i Metody

namespace HostedReceiver { public class Receiver: IConfigureThisEndpoint, AsA_Server {

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

Język ludzki kod maszynowy

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

Enkapsulacja, dziedziczenie, polimorfizm

Metody Metody, parametry, zwracanie wartości

Podstawy programowania w języku C

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Wykład 2: Podstawy Języka

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

KOTLIN. Język programowania dla Androida

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

Dokumentacja do API Javy.

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Wprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM

Wprowadzenie do programowania w języku C

Programowanie obiektowe

Bezpieczne uruchamianie apletów wg

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Wykład 5: Więcej o Klasach i Metodach

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)


Tworzenie aplikacji w języku Java

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Tworzenie i wykorzystanie usług

Aplikacje internetowe i rozproszone - laboratorium

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

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

Wstęp do programowania

Zasady programowania Dokumentacja

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Aplikacje WWW - laboratorium

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

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Podstawy Języka Java

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

Programowanie obiektowe

Transkrypt:

WYKŁAD 7 Agentowe języki komunikacji (KIF, KQML, ACL) System autonomiczny potrafi: obserwować (monitorować stan własny i stan otoczenia) działać (modyfikować stan własny i stan otoczenia) W przypadku systemów sprzętowych (hardware agent), działających w świecie rzeczywistym (np. robotów przemysłowych), wykorzystywane są: fizyczne układy percepcji: mechaniczne czujniki dotykowe, ultradźwiękowe dalmierze, kamery wideo,... oraz fizyczne układy wykonawcze: elektryczne silniki napędowe, pneumatyczne chwytaki,... W przypadku systemów programowych (software agent), typowymi elementami otoczenia są zasoby komputera: pamięć operacyjna, czas obliczeniowy procesora, zajętość łączy transmisyjnych. Działanie i obserwacja mogą być zrealizowane poprzez: bezpośredni dostęp do zasobów bezpośrednią modyfikację zawartości pamięci operacyjnej np. start samolotu: Lotnisko::IloscSamolotowNaZiemi--; bezpośrednie uruchamianie podprogramów np. wywołanie procedury obsługi przerwania czy metody modyfikującej zmienną: Lotnisko::ZmniejszIloscSamolotowNaZiemi(); przesłanie komunikatu do innego procesu (serwisu) zarządzającego modyfikacją lub obserwacją jakiegoś fragmentu otoczenia Pilot01::SendMessage( tekst ); z przykładowym tekstem: ( achieve :sender Pilot01 :receiver Lotnisko :content ( = (IloscSamolotow (PopIlosc-1))) ) 1

Teoria aktu mowy : Komunikaty Akcje Przesyłane komunikaty mogą być traktowane jako akcje działania lub obserwacji ponieważ mogą powodować zmiany lub odczyty stanu otoczenia. Podstawowe rodzaje komunikatów: poinformowanie (inform) przekonanie rozmówcy, że jakieś zdanie - wyrażenie - twierdzenie jest prawdziwe, żądanie (request) próba wymuszenia wykonania jakiegoś działania przez słuchacza, potwierdzenie zlecenia, obietnica (promise) przekonanie rozmówcy o planowanym przebiegu dalszych działań, Można wyróżnić trzy różne aspekty aktów mowy (John Austin): locutionary act (akt umiejscowiony) sam fizyczny akt wygłoszenia wysyłanie ciągów symboli, fal akustycznych, radiowych, świetlnych (wyświetlanie obrazów na ekranie), np. uderzenie ręką w stół lub ziewanie illocutionary act (akt nieumiejscowiony) rzeczywiste działanie wykonywane przez fakt wypowiedzenia np. zwrócenie uwagi, poinformowanie innych, że jestem zdenerwowany lub znużony perlocution (następstwo umiejscowienia) osiągany efekt aktu wypowiedzi np. zaprzestanie rozmów przez uczestników wykładu czy skrócenie czasu wykładu przez prowadzącego DARPA Knowledge Sharing Effort (1990...) stowarzyszenie rozwijające standardy i technologie ułatwiające współdzielenie oraz wszechstronne wykorzystywanie zasobów systemów baz wiedzy. Współdzielenie wiedzy wymaga komunikacji, która z kolei wymaga wspólnego języka komunikacji. W ramach języka można wyróżnić różne składowe związane z różnymi poziomami abstrakcji: syntaktyka np. KIF semantyka np. Ontolingua pragmatyka np. KQML 2

KIF - Knowledge Interchange Format http://www.cs.umbc.edu/kse/kif Jednym z jego efektów jest opracowanie standardu KIF umożliwiającego reprezentowanie zawartości baz wiedzy za pomocą wyrażeń logiki pierwszego rzędu. Format ten służy do reprezentowania zawartości przesyłanych komunikatów (content language). Najważniejsze cechy: (ilustracja z artykułu T.Finin Y.Labrou, 1990)! implementacja niezależna od semantyki,! ekspresyjność, łatwość tłumaczenia możliwość wyrażenia zawartości większości obecnie istniejących systemów reprezentacji wiedzy,! reprezentacja czytelna dla ludzi Przykłady wyrażeń zapisanych za pomocą formatu KIF: ( > (stan-paliwa Samolot03) (stan-paliwa Samolot07) ) Informacja, że stan paliwa w samolocie numer 3 jest większy od stanu paliwa w samolocie numer 7 ( => ( and (liczba-rzeczywista?x) (liczba-parzysta?n ) ) (> (exp?x?n) 0 ) Reguła: że wynik podniesienia dowolnej liczby rzeczywistej, do parzystej potęgi, zawsze będzie dodatni ( => ( (stan-paliwa?s) 0 ) ( (stan-pojazdu?s) niesprawny) ) Reguła, że jeżeli pojazd s nie ma paliwa, to jest niesprawny 3

KQML - Knowledge Query and Manipulation Language http://www.cs.umbc.edu/kqml Komunikat KQML nazywamy performative bo perform some action by virtue of being sent. Ogólny schemat komunikatu KQML: ( typ_komunikatu :parametr_1 :parametr_2... :parametr_n ) Parametr Znaczenie :content zawartość komunikatu :sender nadawca komunikatu :receiver odbiorca komunikatu :language język zapisu zawartości :ontology ontologia zapisu zawartości :replay-with informacja czy nadawca oczekuje odpowiedzi i identyfikator odpowiedzi :in-replay-to powiązanie odpowiedzi z zapytaniem Wybrane typy komunikatów (S - sender, R - receiver) Typ Znaczenie achieve S chce aby R spowodował, że coś stanie się prawdą w ich otoczeniu advertise S ogłasza, że może realizować usługę opisaną w content ask-one S prosi R o odpowiedź na pytanie opisane w content ask-all S pyta wszystkich evaluate S prosi R o przeliczenie wyrażenia 4

Przykłady komunikatów KQML: (evaluate :sender A :receiver B :language KIF :ontology motors :reply-with q1 :content (val (torque m1))) (reply :sender B :receiver A :language KIF :ontology motors :in-reply-to q1 :content (= (torque m1) (scalar 12 kgf))) (ask-one :content (PRICE IBM?price) :receiver stock-server :language LPROLOG :ontology NYSE-TICKS) (ask-all :content price(ibm, [?price,?time]) :receiver stock-server :language standard-prolog :ontology NYSE-TICKS) (stream-all :content (PRICE?article?price) :receiver stock-server :language LPROLOG) (standby :content (stream-all :content (PRICE?article?price)) :receiver stock-server) (next :receiver stock-server) (monitor :content (PRICE IBM?price)) (advertise :content (monitor :content(price?x?y))) 5

Rozwój języków komunikacji międzyagentowej: (ilustracja z materiałów T.Finin & Y.Labrou, 1999) FIPA - Foundation for Intelligent Physical Agent ACL - Agent Communication Language W ramach systemu JADE, 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(); 6

Przykład przygotowania i wysłania prostego komunikatu: ACLMessage msg = new ACLMessage( ACLMessage. INFORM); msg.addreceiver( new AID( Peter, AID. ISLOCALNAME)); msg.setlanguage( English ); msg.setontology( Weather- Forecast- Ontology ); msg. setcontent( Today it s raining ); send( msg); // myagent.send( msg ); Odbieranie komunikatu: ACLMessage msg = receive(); // myagent.receive( msg ); if (msg!= null) { // Przetwarzanie komunikatu //... else { 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( XYZ ); public void action() { ACLMessage msg = myagent.receive(tpl); if (msg!= null) { // Przetwarzanie komunikatu //... 7

PRZYKŁAD: File AgentReceiver.java package examples.receivers; import java.io.*; import jade.core.*; import jade.core.behaviours.*; import jade.lang.acl.aclmessage; import jade.lang.acl.messagetemplate; public class AgentReceiver extends Agent { class my3stepbehaviour extends SimpleBehaviour { final int FIRST = 1; final int SECOND = 2; final int THIRD = 3; private int state = FIRST; private boolean finished = false; public my3stepbehaviour(agent a) { super(a); public void action() { switch (state){ case FIRST: {if (op1()) state = SECOND; else state= FIRST; break; case SECOND:{op2(); state = THIRD; break; case THIRD:{op3(); state = FIRST; finished = true; break; public boolean done() { return finished; 8

private boolean op1(){ System.out.println( "\nagent "+getlocalname()+ " in state 1.1 is waiting for a message"); MessageTemplate m1 = MessageTemplate.MatchPerformative(ACLMessage.INFORM); MessageTemplate m2 = MessageTemplate.MatchLanguage("PlainText"); MessageTemplate m3 = MessageTemplate.MatchOntology("ReceiveTest"); MessageTemplate m1andm2 = MessageTemplate.and(m1,m2); MessageTemplate notm3 = MessageTemplate.not(m3); MessageTemplate m1andm2_and_notm3 = MessageTemplate.and(m1andm2, notm3); //The agent waits for a specific message. If it doesn't arrive // the behaviour is suspended until a new message arrives. ACLMessage msg = receive(m1andm2_and_notm3); if (msg!= null){ System.out.println("\nAgent "+ getlocalname() + " received the following message in state 1.1: " + msg.tostring()); return true; else { System.out.println("\nNo message received in state 1.1"); block(); return false; private void op2() { /*... */ private void op3() { /*... */ // End of my3stepbehaviour class protected void setup() { my3stepbehaviour mybehaviour = new my3stepbehaviour(this); addbehaviour(mybehaviour); 9