Zadanie 1: rozproszona wiedza SKJ (2016)

Podobne dokumenty
Zadanie 2: transakcyjny protokół SKJ (2015)

Instrukcja instalacji usługi Sygnity SmsService

Instrukcja instalacji usługi Sygnity SmsService

Programowanie współbieżne i rozproszone

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Instrukcja instalacji usługi Sygnity Service

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Instrukcja instalacji usługi Sygnity Service

ABA-X3 PXES v Podręczna instrukcja administratora. FUNKCJE SIECIOWE Licencja FDL (bez prawa wprowadzania zmian)

KS-ZSA. Mechanizm centralnego zarządzania rolami

Współpraca z platformą Emp@tia. dokumentacja techniczna

Marek Parfieniuk, Tomasz Łukaszuk, Tomasz Grześ. Symulator zawodnej sieci IP do badania aplikacji multimedialnych i peer-to-peer

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

TRX API opis funkcji interfejsu

Przesyłania danych przez protokół TCP/IP

Instrukcja obsługi DHL KONWERTER 1.6

Internetowy moduł prezentacji WIZYT KLIENTA PUP do wykorzystania np. na stronie WWW. Wstęp

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED INSTRUKCJA OBSŁUGI

Dokumentacja techniczna

INFO-R. Instalacja pakietu programów obsługujących platformę

IG1: INSTALACJA KOMUNIKATORA GADU-GADU

Aplikacja Sieciowa wątki po stronie klienta

1 Moduł Konfigurowanie Modułu

MECHANIZM WYMIANY DANYCH ORAZ ROZLICZEŃ APTEKA NFZ

MECHANIZM WYMIANY DANYCH ORAZ ROZLICZEŃ APTEKA NFZ

Administratora CSIZS - OTM

UNIFON podręcznik użytkownika

Instrukcja obsługi Multiconverter 2.0

Laboratorium 3.4.2: Zarządzanie serwerem WWW

Akademia Techniczno-Humanistyczna w Bielsku-Białej

KARTA KURSU. Administracja serwerami WWW

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

eformatyzacja instrukcja obsługi

Opis modułu pl.id w programie Komornik SQL-VAT

SPECYFIKACJA TECHNICZNA OPROGRAMOWANIA

1 Moduł Inteligentnego Głośnika

Kalipso wywiady środowiskowe

INSTRUKCJA OBSŁUGI SUPLEMENT

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

1 Moduł Inteligentnego Głośnika 3

Instrukcja konfiguracji funkcji skanowania

Win Admin Monitor Instrukcja Obsługi

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

INFRA. System Connector. Opis wdrożenia systemu

Integracja APD z Ogólnopolskim Repozytorium Prac Dyplomowych

Podręcznik użytkownika Konfiguracja Rejestracji Online

Odpowiedzi na pytania do postępowania na zakupu oprogramowania antywirusowego (NR BFI 1S/01/10/05/2019) z dnia

Referat pracy dyplomowej

Wykaz zmian w programie WinAdmin Replikator

a) 7 b) 19 c) 21 d) 34

1. W protokole http w ogólnym przypadku elementy odpowiedzi mają: a) Postać tekstu b) Postać HTML c) Zarówno a i b 2. W usłudze DNS odpowiedź

IBM SPSS Modeler Social Network Analysis 16 podręcznik instalowania i konfigurowania

POŁĄCZENIE STEROWNIKÓW ASTRAADA ONE MIĘDZY SOBĄ Z WYKORZYSTANIEM PROTOKOŁU UDP. Sterowniki Astraada One wymieniają między sobą dane po UDP

Model sieci OSI, protokoły sieciowe, adresy IP

Procedura podłączania węzła lokalnego Elektrowni do węzła centralnego OSP Systemu Monitorowania Parametrów Pracy JWCD (SMPP)

Plan wykładu. Domain Name System. Hierarchiczna budowa nazw. Definicja DNS. Obszary i ich obsługa Zapytania Właściwości.

Plan wykładu. Domain Name System. Definicja DNS. Po co nazwy? Przestrzeń nazw domen Strefy i ich obsługa Zapytania Właściwości.

Zmieniona Tabela nr 1a - Oprogramowanie antywirusowe. Parametry wymagane przez Zamawiającego

Współpraca z platformą dokumentacja techniczna

Opis zmian funkcjonalności platformy E-GIODO wprowadzających możliwość podpisania wniosku bezpośrednio w oknie przeglądarki.

Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet.

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

Opis administracji terminali ABA-X3 v.1.5.0

Warstwy i funkcje modelu ISO/OSI

Uwaga!!! Autentykacja LDAP/AD zaimplementowana w Vigor wspiera tylko proste uwierzytelnianie (hasło przesyłane jest jawnym tekstem).

Zarządzanie infrastrukturą sieciową Modele funkcjonowania sieci

TM PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Konspekt pracy inżynierskiej

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Przewodnik użytkownika (instrukcja) AutoMagicTest

Opis modułu pl.id w programie Komornik SQL-VAT

INSTRUKCJA INSTALACJI I OBSŁUGI ZBIORCZE E-DEKLARCJE. dla Kadr Plac i ZUS PRO

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

XML i nowoczesne technologie zarządzania treścią 2007/08

System Kancelaris. Zdalny dostęp do danych

Tom 6 Opis oprogramowania

Kurs walut. Specyfikacja projektu. Marek Zając

Instalacja pakietu SAS 9.3 Audit, Performance and Measurement na platformie Windows

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

Bazy danych 2. Wykład 1

Analiza możliwości złośliwego oprogramowania vjw0rm w kampanii phishingowej PayU

Procedura zgłaszania problemów z obsługą oraz nieprawidłowości w funkcjonowaniu systemu PEFS 2007 w zakresie Programu Operacyjnego Kapitał Ludzki

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

7. zainstalowane oprogramowanie zarządzane stacje robocze

Laboratorium Protokoły sieci teleinformatycznych

Instrukcja EQU Kantech

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

1. Poprawienie mechanizmu łączenia danych dla rozdziałów monografii wieloautorskich 2. Rozbudowa podpowiedzi do programu

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania.

Kancelaria Prawna.WEB - POMOC

Procedura Walidacyjna Interfejs

LABORATORIUM WIRTUALNE W DYDAKTYCE I BADANIACH NAUKOWYCH

INSTRUKCJA UŻYTKOWNIKA Repozytorium Dokumentów Elektronicznych KS-EDE ISO 9001:2008 Dokument: Wydanie:

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

Transkrypt:

Zadanie 1: rozproszona wiedza SKJ (2016) Wstęp Zadanie polega na zaimplementowaniu systemu do utrzymywania rozproszonej wiedzy pomiędzy agentami. Agent to program uruchomiony na hoście posiadający pewną wiedzę lokalną i mogący komunikować się z innymi agentami, z którymi jest bezpośrednio połączony. Wiedza lokalna reprezentowana jest przez drzewo, którego węzły etykietowane są napisami. Etykieta w korzeniu takiego drzewa jest nazwą agenta. Zakładamy, że w systemie nazwy agentów są unikalne. Ponadto, korzeń musi posiadać następujące dzieci: węzeł z etykietą ip opisuje adres IP, na którym działa agent; jedynym dzieckiem tego węzła jest węzeł zawierający adres ip w formacie XXX.XXX.XXX.XXX, węzeł z etykietą port opisuje port, na którym działa agent; jedynym jego dzieckiem jest węzeł zawierający numer portu, węzeł z etykietą neighbours opisuje lokalną wiedzę o bezpośrednich sąsiadach agenta; etykietą każdego dziecka tego węzła jest nazwa sąsiada i węzeł ten posiada woje dzieci, węzły ip i port z potomkami w formacie jak wyżej. Na Rysunku 1 przedstawiono przykładową wiedzę lokalną agenta agent 1. Oprócz wymaganych dzieci ip, port, neighbours, korzeń dodatkowo posiada poddrzewo measurements z dziećmi voltage i power. Zakładamy, że żaden z węzłów nie może mieć więcej niż jednego syna z daną etykietą. Wiedza globalna to las, którego drzewa stanowią wiedzę lokalną agentów działających w systemie. Sąsiedztwo agentów wyznaczane jest przez wiedzę globalną jeżeli agent A ma wpisanego lokalnie B jako sąsiada, lub wie (dowiedział się na skutek wymiany komunikatów), że B ma wpisanego lokalnie A jako sąsiada, to B jest sąsiadem A. Czyli, po rozpropagowaniu wiedzy, relacja sąsiedztwa jest symetryczna (jest symetrycznym domknięciem relacji wyznaczanej przez wiedzę lokalną ze wszystkich agentów), ale nie jest przechodnia z tego, że A jest sąsiadem B, a B jest sąsiadem C, nie wynika, że A jest sąsiadem C (sąsiad mojego sąsiada, nie musi być moim sąsiadem). Warto też zwrócić uwagę, że relacja sąsiedztwa staje się symetryczna dopiero po rozpropagowaniu wiedzy jeżeli A 1

2 Rysunek 1: Przykładowa wiedza lokalna agenta. ma wpisanego B jako sąsiada, a B nie ma wpisanego A jako sąsiada, to B będzie uważał A jako sąsiada dopiero po pozyskaniu wiedzy lokalnej od A. Na Rysunku 2 przedstawiono przykładową wiedzę globalną widzianą z perspektywy agenta agent 2 działającego w systemie, w którym uruchomiony jest jeszcze dodatkowy agent agent 1 i agent 3. Pomimo, że agent 2 nie ma wpisanego żadnego agenta jako sąsiada (węzeł neighbours jego wiedzy lokalnej jest pusty), uważa on agenta agent 1 za swojego sąsiada od czasu pozyskania wiedzy agenta agent 1 (w posiadanej wiedzy globalnej agent 1 ma wpisanego w węźle neighbours agenta agent 2 ). Należy zaprojektować aplikację agenta, która komunikując się z sąsiednimi agentami potrafi utrzymywać wiedzę rozproszoną. Wymagana jest następująca funkcjonalność: wczytanie inicjalnej wiedzy z pliku konfiguracyjnego dodawanie/usuwanie/modyfikacja wiedzy lokalnej w agencie wymiana wiedzy globalnej pomiędzy bezpośrednimi sąsiadami, prezentacja wiedzy lokalnej i globalnej na stronie www danego agenta (można użyć programu Graphviz do wygenerowania obrazków z drzewami wiedzy). Specyfikacja Aplikacja agenta powinna być uruchamiana z czterema parametrami: ścieżką do pliku z inicjalną konfiguracją agenta, ścieżką do pliku ze stroną w formacie HTML, na której będą

3 Rysunek 2: Przykładowa wiedza globalna widziana z perspektywy agent 2. prezentowane informacje o wiedzy globalnej agenta, adresem oraz portem po którym można zarządzać wiedzą lokalną. Plik konfiguracyjny ma opisywać drzewo z wiedzą początkową agenta w następującej składni: drzewo ::= "string"(drzewo,..., drzewo) "string" Gdzie string to napis z etykietą węzła. Dla przykładu, plik z wiedzą początkową odpowiadającą Rysunkowi 1 ma następującą postać (białe znaki poza napisami w etykietach są nieistotne): "agent 1"( "ip"("192.67.4.1"), "port"("12345"), "neighbours"( "agent 2"( "ip"("192.67.4.2"), "port"("12345")), "agent 3"( "ip"("192.67.4.1"), "port"("12346")), "measurements"( "voltage"("4.2v"), "power"("7kw"))) Dodawanie/usuwanie/modyfikacja wiedzy lokalnej agenta ma odbywać się za pomocą komend tekstowych wysyłanych na gniazdo TCP wyspecyfikowane podczas uruchomienia agenta. Komendy mają mieć następującą postać: komenda ::= (ADD REMOVE MODIFY) "string" "string"... "string"

4 Semantyka komend jest następująca: ADD "etykieta 1" "etykieta 2"... "etykieta n" dodaje do drzewa ścieżkę etykieta 1, etykieta 2,..., etykieta n, gdzie etykieta 1 jest etykietą korzenia drzewa. REMOVE "etykieta 1" "etykieta 2"... "etykieta n" usuwa z drzewa całe poddrzewo począwszy od wierzchołka etykieta n identyfikowanego przez ścieżkę etykieta 1, etykieta 2,..., etykieta n, gdzie etykieta 1 jest etykietą korzenia drzewa. MODIFY "etykieta 1" "etykieta 2"... "etykieta n" "nowa etykieta" zmienia etykietę węzła etykieta n identyfikowanego przez ścieżkę etykieta 1, etykieta 2,..., etykieta n, gdzie etykieta 1 jest etykietą korzenia drzewa, na etykietę nowa etykieta Dla przykładu, wysłanie komendy: ADD "agent 1" "misc" "circle" "radius" "22" do agenta agent 1 o drzewie wiedzy lokalnej jak na Rysunku 1, zmieni jego wiedzę do stanu z Rysunku 3, późniejsze wysłanie komendy: MODIFY "agent 1" "misc" "circle" "radius" "diameter" doprowadzi do wiedzy jak na Rysunku 4, a po komendzie: REMOVE "agent 1" "misc" "circle" "diameter" otrzymamy wiedzę jak na Rysunku 5. Każdy agent odpowiada tylko i wyłącznie za swoją wiedzę lokalną nie może bezpośrednio modyfikować wiedzy globalnej. Protokół wymiany wiedzy pomiędzy agentami powinien odbywać się według następujących zasad: każde drzewo wiedzy agenta jest rewizjonowane (rewizja wiedzy lokalnej zmienia się poprzez modyfikację wiedzy za pomocą komend ADD/REMOVE/MODIFY, a rewizja pozostałej wiedzy w procesie komunikacji z innymi agentami; każdy agent odpowiada za spójność rewizji swojej wiedzy lokalnej) jeżeli agent zmienia rewizje to wysyła informacje do swoich sąsiadów o nowej rewizji jeżeli za pomocą komendy REMOVE został usunięty sąsiad danego agenta, to usunięty sąsiad jest także informowany o zmianie rewizji (i może cały czas prosić o dosłanie brakujących danych)

5 Rysunek 3: Modyfikacja wiedzy komendą ADD. Rysunek 4: Modyfikacja wiedzy komendą MODIFY.

6 Rysunek 5: Modyfikacja wiedzy komendą REMOVE. jeżeli agent nie może przesłać informacji o rewizji do któregoś ze swoich sąsiadów, to co ustaloną jednostkę czasu ponawia próbę komunikacji jeżeli agent A otrzyma informacje o rewizji nowszej, niż posiadana od agenta B, to pobiera od agenta B brakującą wiedzę (tym samym zmieniając rewizję i informując o tym sąsiadów) Protokół powinien być zoptymalizowany pod względem ilości danych przesyłanych przez sieć. W szczególności nisko punktowane będą projekty, w których agenci po każdej modyfikacji wysyłają na nowo całą swoją lokalną wiedzę. Warto zwrócić uwagę, że graf agentów może w pewnym momencie się rozspójnić, ewoluować osobno, po czym znowu połączyć się w spójny graf. Protokół musi zapewnić spójność wiedzy globalnej także po takim ponownym połączeniu. Zadanie 1. Poprawny i pełny projekt wart jest 6 punktów (plus 2 dodatkowe za zrealizowanie opcjonalnej funkcjonalności): za funkcjonalność obejmującą utrzymywanie wiedzy lokalnej agenta (wczytanie pliku konfiguracyjnego agenta, utrzymywanie lokalnego drzewa wiedzy za pomocą komend ADD/REMOVE/MODIFY) można otrzymać do 2 punktów. za prezentowanie wiedzy w formacie strony HTML można otrzymać do 1 punktu.

7 Jeśli programista zdecyduje się na dodatkową implementację serwera HTTP, za pomocą którego agent będzie udostępniał swoja wiedzę w sieci (po połączeniu na dodatkowy port podany do konfiguracji podczas startu programu agenta), może otrzymać dodatkowo maksymalnie 2 punkty. za prawidłowo i efektywnie zaimplementowany mechanizm rewizjonowania i wymiany wiedzy pomiędzy agentami można otrzymać do 3 punktów. W tym przypadku sprawdzający bedą zwracali uwagę na informacje, które są przesyłane, sposób ich przesyłania w grafie połączeń (nie tylko kwestię implementacji obsługi sieci, ale również minimalizację liczby przesyłanych komunikatów). 2. Aplikację agenta piszemy w języku Java zgodnie ze standardem Java 8 (JDK 1.8). 3. Projekty powinny zostać zapisane do odpowiednich katalogów w systemie EDUX w nieprzekraczalnym terminie 20.11.2016 (termin może zostać zmieniony przez prowadzącego grupę). 4. Spakowany plik projektu powinien obejmować: pełen opis protokołu komunikacyjnego pomiędzy agentami, który powinien zawierać opis i fomat kominikatów przesyłanych między węzłami (co i w jakiej sytuacji jest przesyłane), pliki źródłowe (dla JDK 1.8) (włącznie z wszelkimi bibliotekami nie należącymi do standardowej instalacji Javy, których autor użył) - aplikacja musi dać się bez problemu skompilować na komputerach w laboratorium w PJA. plik Readme.txt z opisem i uwagami autora (co zostało zrealizowane, czego się nie udało, gdzie ewentualnie są błędy, których nie udało się poprawić). 5. Prowadzący oceniać będą w pierwszym rzędzie organizację komunikacji sieciowej i poprawność utrzymywanej wiedzy globalnej, ale na ocenę wpływać będzie także zgodność wytworzonego oprogramowania z zasadami inżynierii oprogramowania i jakość implementacji. 6. JEŚLI NIE WYSZCZEGÓLNIONO INACZEJ, WSZYSTKIE NIEJASNOŚCI NA- LEŻY PRZEDYSKUTOWAĆ Z PROWADZĄCYM ZAJĘCIA POD GROŹBĄ NIE- ZALICZENIA PROGRAMU W PRZYPADKU ICH NIEWŁAŚCIWEJ INTERPRE- TACJI.