Wrocław, 01.05.2007 Paradygmat agenta: rodowód, różnorodność definiowania, zastosowania Praca zaliczeniowa z przedmiotu: Informatyka Systemów Autonomicznych Prowadzący: dr inż. Marek Piasecki Autor: Szymon Stawiński nr indeksu: 133371
1. Przyczyny powstania idei oprogramowania agentowego Pod koniec XX wieku wraz z popularyzacją komputerów klasy PC coraz większego tempa nabrał rozwój Internetu. Dostęp do komputerów uzyskali ludzie niewykształceni, nieposiadający umiejętności informatycznych ani odpowiedniego doświadczenia w posługiwaniu się komputerem, jednocześnie bardzo wymagający wobec posiadanego komputera. Spopularyzowanie komputerów stało się główną przyczyną nagłego wzrostu znaczenia Internetu jako źródła informacji. Inter net stał się kopalnią wiedzy. Jednakże ze względu na nieuporządkowany charakter przechowywania informacji w sieci oraz brak kontroli nad jakością i kompletnością dostępnej w niej wiedzy, coraz trudniej znaleźć w Internecie poszukiwaną przez nas informację. Często bardzo dużo czasu tracimy na przeglądanie i filtrowanie linków zwróconych przez wyszukiwarkę internetową. Ponieważ jednym z celów informatyki jest maksymalne wyręczenie człowieka w czynnościach, do wykonania których nie zawsze potrzebna jest inteligencja człowieka, pojawiła się idea stworzenia internetowego, spersonalizowanego szperacza (agenta), który w oparciu o wiedze na temat zainteresowań i wiedzy użytkownika ułatwiłby mu korzystanie z Internetu. Kolejnym powodem powstania idei stworzenia agenta programowego stało się spopularyzowanie urządzeń mobilnych takich jak laptopy i palmtopy. Mała moc obliczeniowa, słabe łącze internetowe oraz konieczność zminimalizowania użycia procesora w celu umożliwienia jak najdłuższego korzystania z baterii, uniemożliwiają wykonywanie bardziej złożonych obliczeniowo zadań na tych urządzeniach. Pojawił się, więc pomysł, aby odciążyć urządzenia te poprzez zdalne wykonywanie zadań. Użytkownik laptopa zlecałby wykonanie zadania, następnie zadanie przesyłane byłoby do jednej lub wielu innych stacjonarnych maszyn w celu wykonania obliczeń zdalnie. Stałe dążenie programistów do jak najbardziej uniwersalnego podejścia do dekompozycji problemów świata rzeczywistego było kolejną z przyczyn powstania idei opracowania i prac nad systemami agentowymi. Programowanie obiektowe tylko częściowo rozwiązywało ten problem, ponieważ zakładało ono, że obiekty są biernymi tworami. Tymczasem obiekty świata rzeczywistego są istotami aktywnymi, które same inicjują akcję. W umożliwieniu rozpatrywania agenta programowego jako niezależnego tworu istniejącego w czasie dostrzeżono szansę na znaczne ułatwienie dekompozycję i modelowanie dużych systemów informatycznych. W literaturze idea tworzenia oprogramowania agentowego po raz pierwszy pojawiła się około roku 1994. Od tego czasu technologia agentowa jest stale rozwijana, a na rozwój i badanie systemów agentowych wydawane są bardzo duże fundusze ze środków Unii Europejskiej oraz firm przemysłu informatycznego. Podsumowując głównymi przyczynami rozwoju technologii agentowej były: wzrost potrzeb użytkowników rosnąca liczba informacji w Internecie rozwój technologii mobilnych dążenie do stworzenia jak najbardziej naturalnego sposobu projektowania oprogramowania
2. Definicja agenta Nie istnieje jedna ogólnie przyjęta ani jednoznaczna definicja agenta. Niemal, że każdy ośrodek pracujący nad technologią agentową stworzył własną definicję agenta. Często definicje te są wzajemnie sprzeczne oraz niekompletne. Dlatego, zgodnie z radą Marcina Paprzyckiego autora publikacji Agenci programowi jako metodologia tworzenia oprogramowania, przy definiowaniu agenta posłużyć się należy własną intuicją, opartą głównie na pojęciu agenta wywiadu i agenta ubezpieczeniowego. Dlatego w oparciu o intuicję postaram się zdefiniować agenta na podstawie skojarzeń z agentem 007 (Jamesem Bondem). W tym celu stworzyłem listę cech tego agenta: Tajny nikt nie wie o jego działaniu Niebezpieczny stanowi zagrożenie dla swojego otoczenia Inteligentny potrafi wnioskować na posiadanej wiedzy Mobilny posiada samochód zdolność przemieszczania się Szybki dąży do maksymalnego skrócenia czasu wykonania zadania Zdeterminowany ukierunkowany na cel Towarzyski posiada zdolności komunikowania się z otoczeniem oraz zleceniodawcą Samodzielny posiada zdolność decydowania o akcji Działa na zlecenie cel jego akcji został określony przez zleceniodawcę Dobrze wyszkolony posiada wiedzę, umiejętności oraz sprzęt niezbędny do wykonania zadania Teraz przyjrzyjmy się sposobem, w jaki zdefiniować agenta próbowali twórcy i badacze systemów agentowych. Definicji takich w literaturze pojawia się około 15. Zacytuje trzy najbardziej znane. 1. Cokolwiek, co może być uznane jako obserwujące otoczenie poprzez sensory i działające w ramach tegoż otoczenia poprzez efektory, Russel i Norvig 2. Jednostki programowe podejmujące działania w imieniu użytkownika lub innych programów, w pewnym stopniu niezależne lub autonomiczne, które działając stosują pewną wiedzę lub reprezentację celów lub potrzeb użytkownika IBM 3. Zamknięty system komputerowy znajdujący się w pewnym otoczeniu posiadający umiejętności elastycznego działania w tymże otoczeniu, działania polegającego na wypełnieniu celów, dla jakich został stworzony. Wooldridge Na podstawie tych definicji oraz pozostałych cech systemu agentowego opisywanych w literaturze można sporządzić bardziej precyzyjną listę cech, które powinien spełniać komputerowy system agentowy. Jak można łatwo zauważyć lista ta niewiele różni się od wyżej opisanej listy stworzonej na podstawie intuicji. Agenta programowego definiuje następująca lista cech: reaktywny reaguje na zmiany otoczenia, stara się je modyfikować autonomiczny samodzielnie podejmuje decyzje o wykonaniu akcji ukierunkowany na osiąganie celów jest systemem stworzonym w celu zapewnienia określonych funkcjonalności
posiadający cechy oprogramowania inteligentnego: umiejętność dostosowania się do otoczenia umiejętność nabywania wiedzy umiejętność rozumowania na wiedzy umiejętność przewidywania zjawisk posiadający umiejętność komunikacji - z innymi systemami agentowymi posiadający umiejętność współdziałania z innymi systemami agentowymi w celu wypełnienia zadania interaktywny potrafi komunikować się z użytkownikiem mobilny posiada umiejętność przemieszczania się w otoczeniu (kopiowanie, klonowanie) niezawodny skuteczny w wykonywaniu zadania W przypadku kiedy system agentowy spełnia wszystkie wyżej wymienione cechy mówimy o silnej agentowości (storng agency). Jednakże, ze względu na poważne trudności w implementacji większości z tych cech, zostało zdefiniowane pojęcie słabej agentowości (weak agency) czyli minimalny zbiór cech, które musi posiadać system, aby dalej mógł być nazywany systemem agentowym. Do cech tych zaliczamy: reaktywność autonomiczność interaktywność umiejętność przewidywania w celu świadomej modyfikacji otoczenia Dotychczas stworzone systemy agentowe w większości spełniają wymagania tylko słabej agentowośći. Są one nastawione w głównej mierze na autonomiczne reagowanie na zmiany otoczenia, oraz komunikację z użytkownikiem. Kolejnym krokiem, niezbędnym w celu pełnego zdefiniowania agenta, jest wskazanie różnic między klasycznym (obiektowym) podejściem do tworzenia oprogramowania a podejściem agentowym. oprogramowanie agentowe długoterminowe działanie autonomiczne decydowanie o akcji posiada wiedzę i metody niezbędne do rozwiązania zadania (do stworzenia algorytmów) pośrednio zarządzane adaptacyjne działanie rozpatrywane w dziedzinie czasu (ogólnie przyjęte pojęcie czasu) oprogramowanie klasyczne działanie do czasu zakończenia wykonywania funkcji pełny determinizm, brak losowości posiada zaimplementowane algorytmy rozwiązania zadania zarządzane bezpośrednio przez użytkownika niezmienne w czasie działanie rozpatrywane w dziedzinie czasu wykonania programu
3. Klasyfikacja systemów agentowych Klasyfikacja została przeprowadzona na podstawie opisu w publikacji Stana Franklina i Arta Graessera. Klasyfikacja ta w bardzo poglądowy, ale i zarazem subiektywny sposób pozwala spojrzeć na agentów programowych jako specyficzny rodzaj agenta w ogólnym tego słowa znaczeniu. agent biologiczny mechaniczny (roboty) komputerowy programowy sztuczne życie specjalizowane przemysłu rozrywkowego wirusy Zaprezentowany podział agentów programowych zakłada istnienie trzech generalnych typów oprogramowania agentowego. Są to między innymi systemy specjalizowane do wykonywania ściśle określonego zadania. Ich działanie jest ściśle ukierunkowane na osiągnięcie założonego celu. Przykład mogą tutaj stanowić agenci zarządzający pocztą elektroniczną. Kolejną grupą są agenci przemysłu rozrywkowego. Ich głównym zadaniem jest interakcja z użytkownikiem. Nie ma dużego nacisku na efekt działania takiego oprogramowania, ponieważ nie jest on najważniejszy. Ostatnią grupę agentów programowych stanową wirusy. Ze względu na swoje cechy, takie jak zdolność do przemieszczania się w otoczeniu, samoistnego powielania, możliwości zlecania wykonania zadań na zdalnych maszynach, agenci programowi stanowią potencjalne wirusy. Ponadto, agent programowy posiada często szeroką wiedzę na temat użytkownika, co stwarza zagrożenie uzyskania poufnych danych przez osoby trzecie.
4. Zastosowanie systemów agentowych Systemy agentowe znalazły potencjalne zastosowanie w trzech obszarach informatyki. 1. W zarządzaniu informacją. Są to systemy działające zazwyczaj lokalnie. Wykonują one na zlecenie użytkownika zadania z zakresu: 1. kompleksowego zarządzania i filtrowania poczty elektronicznej 2. planowania dnia (uwzględniając możliwość komunikowania się agentów w celu uzgodnienia terminu spotkania itp.) 3. indywidualizowania dostarczanej informacji (np. filtrowanie linków zwróconych przez wyszukiwarkę internetową) 4. Agenci monitorujący i zarządzający. Przykładem mogą tutaj być agenci monitorujący giełdę papierów wartościowych oraz w razie potrzeby zlecające kupno/sprzedaż akcji. 2. W systemach rozproszonych Systemy agentowe działające w sieci Internet pozwalają w prosty sposób: 1. monitorować sieć i prowadzić statystyki jej użycia 2. poszukiwać ściśle określonych informacji w Internecie 3. poszukiwać nowych dziedzin wiedzy w Internecie 4. obsługiwać sklepy internetowe, porównywać ceny. (e-biznes i m-biznes) 3. W modelowaniu systemów złożonych Systemy agentowe znajdują zastosowanie w symulowaniu zjawisk świata rzeczywistego. Pozwalają między innymi 1. modelować zachowanie klienta w czasie negocjacji cenowych 2. modelować procesy zarządzania produkcją Istnieje jeszcze wiele innych zastosowań systemów agentowych związanych z możliwościami, jakie oferują takie systemy. Jak już wyżej wspomniałem, systemy te mogą być wykorzystane między innymi w celu niszczenia innych systemów (wirusy), czy zbierania informacji o użytkownikach (spyware). 5. Problemy w tworzeniu systemów agentowych Głównymi problemami opisywanymi w literaturze przez badaczy i twórców systemów agentowych są: odkrywanie informacji implementacja algorytmów przeszukiwania Internetu w poszukiwaniu oczekiwanej informacji. Trudniejsza tym bardziej, że Internet nie jest usystematyzowanym źródłem wiedzy, wiedza przechowywana w nim jest w wielu językach, formach lokalizacjach. komunikacja i ontologia zaprojektowanie i implementacja sposobu porozumiewania się agentów między sobą. Brak określonego, uniwersalnego standardu, który przestrzegany byłby przez wszystkich twórców systemów
agentowych. problem długowiecznego oprogramowania kłopoty integracji oprogramowania agentowego ze starszym oprogramowaniem obiektowym, oraz ze starszymi wersjami oprogramowania agentowego. rozumowanie problemy w implementacji algorytmów umożliwiających symulowanie inteligentnego zachowania poprzez rozumowanie na posiadanej wiedzy. monitorowanie - problem w określeniu sposobów obserwowania sieci w poszukiwaniu nowych zjawisk, lub w celu stwierdzenia zajścia jakiegoś zdarzenia. 6. Zalety stworzenia złożonych systemów informatycznych w oparciu o technologię agentową. Analiza złożonych systemów informatycznych może zostać znacznie uproszczona dzięki zastosowaniu agentowego podejścia do projektowanego oprogramowania. Większy system można podzielić na mniejszych niezależnych agentów. Taki sposób dekompozycji problemu jest znacznie bardziej naturalny niż ten stosowany przy podejściu obiektowym, ponieważ zdekomponowane mniejsze systemy agentowe istnieją w pewnym sensie niezależnie. Realizują po części autonomicznie określone zadania, a ich działanie definiowane jest w czasie. Znacznie bardziej naturalnym wydaje się, więc być na przykład podział struktury dużego przedsiębiorstwa na agentów reprezentujących poszczególne działy tego przedsiębiorstwa niż jak w przypadku programowania obiektowego na obiekty. Podejście agnetowe pozwala również w sposób oczywisty i naturalny uogólniać problemy złożone, czyli wprowadzać poziomy abstrakcji. Złożone struktury informatyczne można, bowiem wstępnie modelować jako system agentowy o bardziej ogólne sformułowanych celach. Ich sprecyzowanie może nastąpić podczas dekompozycji systemu na mniejsze systemy agentowe. W literaturze podkreślane jest również to, że podejście agentowe pozwala znacznie uprościć modelowanie komunikacji między fragmentami systemu, traktowanymi jako agentów. Komunikację taką można, bowiem potraktować jako wymianę danych pomiędzy dwoma agentami. Sposób ich przesyłania, przyczyny oraz sposób reagowania na informacje może zostać w prosty sposób zamodelowany przy użyciu metod komunikacji agentów. Podsumowując, technologia agentowa w modelowaniu systemów znacznie upraszcza: dekompozycję wprowadzanie poziomów abstrakcji modelowanie zależności 7. Przykłady istniejących systemów agentowych W literaturze pojawia się stwierdzenie, że nie istnieje żaden system agentowy spełniający założenia silnej agencji. Istnieje około 8 poważnych wersji testowych systemów agentowych. Spośród tych 8, cztery systemy godne są szczególnej uwagi. Aglets (IBM) Concordia (Mitsubishi)
Grasshopper (IKV) Voyager (Object Space) Twórcy tych systemów główny nacisk położyli na takie aspekty agentowości jak: interaktywność, mobilność oraz współdziałanie agentów. Wszystkie te systemy posiadają zaimplementowane metody klonowania oraz umożliwiają tworzenie agentów na odległość. Ponadto Voyager jest systemem, który umożliwia przesyłanie obiektów między agentami. Intensywne prace zostały przeprowadzone nad zdolnościami komunikacji między agentowej w systemach Voager i Grasshopper. Obecnie systemy te mogą realizować komunikację dynamiczną (wiadomości potrafią podążać za mobilnymi agentami). Z kolei bardzo rozwinięte mechanizmy współpracy międzyagentowej zostały zaimplementowane w Concordii. Agenci Concordii tworzą grupy, które używają rozproszonych obie któw w celu wymiany informacji. Wszystkie wymienione systemy zostały zaimplementowane w języku JAVA. 8. JADE Java Development Framework Jade stanowi oprogramowanie wspierające tworzenie systemów agentowych przy użyciu języka Java. Framework zapewnia środowisko wykonania programu agenta, zbiór bibliotek implementujących podstawowe metody systemu agentowego, oraz zestaw narzędzi do monitorowania struktury systemu. W systemie JADE agenci tworzeni są poprzez dziedziczenie własności podstawowej klasy jade.core.agent i przedefiniowanie podstawowych jej metod: setup() oraz takedown(); Przykładowa implementacja agenta typu hallo world autorstwa dr inż. Marka Piaseckiego wygląda następująco: import jade.core.agent; public class HalloWorldAgent extends Agent { protected void setup() { System.out.println( Hallo World! my name is + getaid().getname()); } } Ze względu na poglądowy charakter pracy, możliwości frameworka JADE nie zostaną szczegółowo opisane. Szczegółowe informacje na temat frameworka JADE, forum oraz bezpłatną wersję instalacyjną można znaleźć na stronie: http://jade.tilab.com/ 9. Krytyka Literatura na temat systemów agentowych nie jest wolna od krytyki. Jej twórcami są zwłaszcza Nwana i Ndumu, którzy prowadzili badania nad możliwościami systemów agentowych. Przeprowadzili oni również próbę implementacji internetowej agencji turystycznej. Pośród krytyki najczęściej pojawiające się zarzuty wobec systemów agentowych stanowią: brak zasadności stosowania oprogramowania agentowego, ponieważ te same efekty i założenia można spełnić używając technik klasycznych (programowania
obiektowego) Odpowiedź na ten zarzut jest oczywista: tworzenie agentów programowych ma na celu uproszczenie implementacji wymienionych założeń. Większość cech agenta programowego można zaimplementować metodami programowania obiektowego, jednakże wiązałoby się to ze sporym nakładem pracy, którego próbuje się uniknąć poprzez rozwój technologii agentowej brak ścisłej i jednoznacznej definicji agenta Odpowiedź: Jako, że technologia ta jest stale rozwijana, a jej możliwości nie są do końca określone, nie jest konieczne precyzyjne definiowanie agenta programowego. Pełna i kompletna definicja z pewnością pojawi się wraz z rozwojem technologii. problem z bezpieczeństwem i ochroną danych Odpowiedź: problem ten dotyczy również klasycznego oprogramowania sieciowego. brak znaczących implementacji systemów agentowych Odpowiedź: Konstruowane testowe wersje agentów programowych mają za zadanie przetestowanie możliwości zastosowania takich agentów. Systemy agentowe o komercyjnych zastosowaniach zapewne pojawią się wraz z rozwojem technologii. 10. Literatura 1. Agenci programowi jako metodologia tworzenia oprogramowania, Ma rcin Paprzycki 2. Is it an agent or just a program?: ataxonomy of autonomous agents, Stan Franklin, Art Graesser 3. Agenci Programowi, Szymon Stawiński, prezentacja do seminarium z przedmiotu Kierowanie projektem programistycznym 4. Informatyka Systemów Autonomicznych materiały do wykładu, Marek Piasecki 5. en.wikipedia.org