Software Agent (agent programowy).doc

(176 KB) Pobierz
Software Agent (agent programowy)

 

 

 

 

 

Software Agent (agent programowy)

 

 

 

 

 

 

 

 

 

 

 

 

 

1.   
Wstęp

 

Idea agenta oprogramowania jest nowa i najwięcej informacji o Software Agents można znaleźć głównie w Internecie. Źródła, z których korzystaliśmy pochodzą głównie ze stron uniwersytetów, które organizowały konferencje na temat Software Agents bądź też od różnych pracowników naukowych tychże uczelni. Oczywiście większość informacji przedstawiana jest w języku angielskim i jak to zazwyczaj bywa przy tłumaczeniu tekstów specjalistycznych pojawiają się problemy z doborem polskich odpowiedników do specjalistycznych zwrotów angielskich. Tak popularny termin jak Software Agent może być przetłumaczony na język polski jako: Agent Programowy oraz Agent Oprogramowania. Z takimi tłumaczeniami można się spotkać najczęściej i takich tłumaczeń będziemy używać zamiennie w naszym referacie. Jednak wiele firm produkujących lub zajmujących się agentami oprogramowania wymyśla własne nazwy dla swoich produktów np. web-bot, bot (skrót z angielskiego robot), asystent, pomocnik itd. Wszystkie te nazwy odnoszą się do jednej: Software Agent a różnica pomiędzy konkretnymi nazwami uwidacznia się w specyficznych funkcjach, jakie pełni dany agent lub asystent. Celem takiego rozległego nazewnictwa jest również zmylenie klienta, że dany produkt jest czymś innym bądź lepszym niż produkt konkurencji. Jest to chwyt marketingowy. Skoro mamy już nazewnictwo za sobą możemy zająć się teraz tym, czym jest agent oprogramowania.

 

Co to jest agent oprogramowania?

Teraz zajmiemy się wyjaśnieniem, czym są agenci oprogramowania i jak powinni być używani. Agenci oprogramowania różnią się między sobą nie tylko pod względem budowy, ale również zastosowania, specjalizacji oraz użyteczności. W literaturze i w sieci można się spotkać z takimi oto definicjami Agentów oprogramowania:

a)     Agenci to pseudo ludzie przebywający cały czas on-line

b)     Agenci to pewna forma lub reprezentacja sztucznej inteligencji

c)     Agenci to inteligentni asystenci zdolni do ciągłej pracy

d)     Agenci to negocjatorzy

e)     Inne punkty widzenia

Wszystkie definicje różnią się między sobą. Jedna wnosi coś nowego, czego brakuje w drugiej, ale zapomina o innych aspektach. Teraz omówimy pokrótce te definicje, aby lepiej wyjaśnić ich zakres:

a)     Agenci to pseudo ludzie przebywający cały czas on-line

W tej definicji agentów utożsamia się z prawdziwymi ludźmi. Takie podejście skutkuje tym, że przypisuje się agentom programowym cechy ludzkie i np. mówi się, że Agent 1 wysłał Agentowi 2 e-mail ponieważ czuł się do tego zobowiązany, Agent 2 poczuł potrzebę zawiadomienia administratora o problemie. Yoav Shoham wymyślił nawet język programowania stanów mentalnych agenta poprzez logikę. Język ten nazywa się AGENT-0 i jest bardzo podobny do języka Prolog. Tego typu agenci nadają się do zadań w których więcej wymaga się „myślenia” niż działania.

 

b)     Agenci to forma reprezentacyjna sztucznej inteligencji

Agenci oprogramowania mogą także służyć jako abstrakcja dla wizualizacji i strukturalizowania coraz bardziej skomplikowanych systemów komputerowych. Odpowiednio wyposażeni w wiedzę agenci mogą prowadzić negocjacje przy zamówieniach materiałów do produkcji, zarządzać procesem produkcyjnym oraz w porozumieniu z agentami odbiorców uzgadniać szczegóły dostaw gotowych produktów, jednocześnie automatyzując wystawianie rachunku. Wszystko to może dziać się z wykorzystaniem najnowszych technologii multimedialnych np.: rozpoznawanie mowy przez agenta lub graficzna reprezentacja twarzy wirtualnego agenta.

 

c)     Agenci to inteligentni asystenci zdolni do ciągłej pracy

Ta definicja agenta oprogramowania wypływa z zadań jakie agent powinien wykonywać. Ma on pełnić rolę sekretarki i prywatnego doradcy. Agent traktowany jako asystent może być wykorzystywany do przeglądania list oraz grup dyskusyjnych w poszukiwaniu ważnych informacji. Może również przeszukiwać całą sieć a więc zająć się rzeczami na, które użytkownik nie chciałby tracić cennego czasu. W tej kategorii mieści się również tak zwany Interface Agent (agent interfejsu). Jest to znany z popularnego edytora tekstu MS Word,Asystent MS Office czyli „spinacz”. Interface Agent pozwala na szybsze opanowanie nowej aplikacji i przyzwyczajenie do nowych nawyków. Służy zawsze pomocą korzystając ze skromnej bazy wiedzy o programie.

 

d)     Agenci to negocjatorzy

Agenci zdolni są do inteligentnego działania a więc również do podejmowania niezależnych decyzji na cudzy rachunek. Grupa agentów może współpracować ze sobą aby osiągnąć cel jaki wyznaczyli im ich użytkownicy. Jak to bywa w negocjacjach cele są w najlepszym wypadku rozbieżne jeżeli nie sprzeczne. Tacy agenci mogą być wykorzystywani do planowania spotkań bądź negocjowania cen akcji. Bardzo prosty przykład agenta negocjatora można znaleźć na polskim portalu Allegro, który zajmuje się aukcjami internetowymi. Agenci negocjują pomiędzy sobą bez wiedzy i poleceń użytkownika, którego interesuje tylko efekt końcowy. Zamiast samemu tracić czas na żmudne negocjacje można poświęcić czas inteligentnego agenta, który zrobi to za nas (prawdopodobnie) lepiej a na pewno szybciej i sprawniej.

 

Wiemy już, że każda z tych definicji agenta oprogramowania traktuje go z innego punktu widzenia. Ale czym tak naprawdę są agenci oprogramowania. Inteligentni agenci są nową klasą oprogramowania, która działa w imieniu i na zlecenie użytkownika. Odpowiednio zaprogramowane mogą służyć do realizacji dowolnych zadań. Przykładami ich zastosowań jest znajdowanie i filtrowanie informacji, automatyzacja skomplikowanych zadań oraz przez połączenie wiedzy wielu agentów rozwiązywanie skomplikowanych problemów.

Generalną zasadą działania agentów oprogramowania jest delegacja zadań. Agenci oprogramowania mają autonomicznie realizować zadania w imieniu użytkownika. Muszą mieć możliwość komunikowania się z użytkownikiem, aby otrzymać niezbędne instrukcje jak i dostarczyć rezultatów swojej pracy. Istnieją dwa podejścia do budowania systemów opartych na agentach oprogramowania. Można wykorzystać pojedynczego agenta realizującego określone zadanie lub wprowadzić wieloagentowy system. Pojedynczy agent komunikuje się wyłącznie z użytkownikiem i musi dostarczyć całej funkcjonalności dla programu. Jest to podejście łatwiejsze do zrealizowania, jednak nieodpowiednie dla bardziej skomplikowanych zadań.

W systemach wieloagentowych w których wiele agentów współpracuje ze sobą dla realizacji celów trudnych lub niemożliwych do wykonania dla pojedynczego agenta komunikacja musi odbywać się nie tylko pomiędzy użytkownikiem i agentem, ale także pomiędzy agentami. Oto jak może wyglądać podział agentów:

 

 

2.    Cechy agenta oprogramowania

 

W naukach o sztucznej inteligencji, systemach ekspertowych, systemach wspomagania decyzji można znaleźć wiele przykładów programów pełniących funkcje agenta oprogramowania jednak nie będącymi agentami oprogramowania. Czasami trudno rozróżnić agenta oprogramowania od zwykłego inteligentnego lub pół inteligentnego programu. Aby móc odróżnić agenta oprogramowania od innego inteligentnego programu należy poznać najważniejsze cechy agenta oprogramowania:

·         Agenci raczej angażują się w dialogi niż tylko przyjmują komendy aczkolwiek gramatyka ich języka oraz słownictwo mogą być ograniczone bądź odmienne od naszego.

·         Agenci mogą komunikować się nie tylko z użytkownikiem ale również między sobą, wymieniając się danymi i prowadząc dialogi.

·         Agenci są inteligentni i autonomiczni (działają niezależnie), odpowiadają na skomplikowane pytania w sposób właściwy dla zadanego problemu.

·         Agenci mogą się rozwijać poprzez zdobywanie nowej wiedzy. Jako, że agenci posiadają własną pamięć mogą również zbierać dane o swoich użytkownikach i reagować w miarę spontanicznie dostosowując swoje zachowanie i odpowiedzi do wywołującego ich użytkownika.

·         Agenci monitorują środowisko w jakim działają.

·         Agenci powinni być dostępni w każdej chwili kiedy użytkownik będzie ich potrzebował.

·         Agenci działają zazwyczaj w sieci a więc ich działanie może mieć efekty lokalne jak i globalne. Jeżeli agent ma zbyt wiele działań globalnych do wykonania poziom abstrakcji ulega znacznemu rozmyciu.

 

Można jeszcze dodać iż w kategoriach programowania agenta można traktować jako obiekt. Obiekt taki posiada następujące cechy:

·         Komunikatywność ( potrafią komunikować się z innymi agentami i/lub użytkownikiem)

·         Kontrola ( ich zachowanie jest zdeterminowane przez akcje które mogą podjąć)

·         Podejmowanie decyzji ( mogą przeprowadzać wnioskowanie i podejmować decyzje)

·         Autonomiczne działanie ( nie wymagają zewnętrznej pomocy do działania)

·         Trwałość ( przetrzymują informację o własnym stanie)

 

Agent jako obiekt wykorzystywany do abstrakcji działania systemu zapewnia następujące mechanizmy wspomagające tę abstrakcję:

·         Kapsułkowanie polegające na ukrywaniu wewnętrznych informacji przez agenta. Podobnie jak w podejściu obiektowym inni agenci mogą komunikować się z nim poprzez odpowiednio sformułowane komunikaty,

·         Modularność i możliwość łatwego ponownego użycia wynikające z autonomii działania agenta, łatwości jego skopiowania i oddzielenia jego ciała od maszyny na jakiej jest wykonywany,

·         Odporność systemu na błędy będąca wynikiem autonomiczności agenta. System zbudowany z wielu niezależnych komponentów nie uszkodzi się nawet jeśli jeden lub kilka jego komponentów ulegnie uszkodzeniu,

·         Skalowalność pociągająca za sobą niższe koszty rozbudowy systemu,

·         Możliwość wykonywania zadań wielu agentów w jednym czasie gwarantowana przez autonomiczne działanie agentów,

·         Możliwość zdalnego działania, znakomicie ułatwiająca budowę systemów rozproszonych.

 

 

3.    Podział agentów oprogramowania

Autonomia działania

Współpracujący agenci

Sprytni

agenci

Agenci interfejsu

Uczenie się

Współpracujący agenci uczący się

Współpraca







 

Rys.1 Typologia agentów

 

Jest to podział agentów ze względu na możliwość uczenia się, zdolności do współpracy i samodzielnego działania. Współpracujący agenci to agenci charakteryzujący się autonomią działania oraz zdolnością do współpracy z innymi agentami w celu realizacji celów. Są używani do rozwiązywania rozproszonych problemów w sytuacji w której pojedynczy zcentralizowany agent byłby nieprzydatny. Bardzo ważnym aspektem tworzenia tych agentów jest dobrze zdefiniowany język komunikacji między agentami. Obecnie może to być na przykład KQML (Knowledge Query and Manipulation Language), Agent Communication Language.

Agenci interfejsu powinni charakteryzować się autonomią działania oraz zdolnością do uczenia się aby skutecznie realizować zadania użytkownika. Ta klasa agentów jest implementowana w postaci asystentów, pomocników współpracujących z użytkownikiem i służących mu pomocą. Współpracujący agenci uczący się mogą dostosowywać się do zmian otoczenia oraz działania innych agentów dzięki zdolności uczenia się. Z uwagi na istotne znaczenie środowiska na ich działania nie są oni w pełni autonomiczni. Sprytni agenci to jednostki posiadające zdolność do uczenia się i komunikacji z innymi agentami, jednocześnie zachowując autonomię działania.

 

4.    Budowa agenta oprogramowania oraz zasada działania

 

Do pisania agentów oprogramowania używa się specjalistycznych języków do tego stworzonych oraz tradycyjnych języków programowania. Poniższa tabela przedstawia najpopularniejsze dostępne języki do tworzenia agentów:

 

Agent type(s)

Language Class

Example(s)

Collaborative agents

Actor Languages

Actors

Agent-oriented programming languages

Agent-0

Placa

Interface agents Information agents

Mobile agents

Scripting languages

TCL/Tk 

Safe-TCL

Safe-Tk

Java

Telescript

Active web tools

Python

Obliq

April

Scheme-48

Reactive agents

Reactive languages

RTA/ABLE

 

Aby przybliżyć strukturę budowy agenta oprogramowania należałoby się posłużyć przykładem. W naszym referacie wykorzystaliśmy projekt RESTINA (Reusable Environment for Task-Structured Intelligent Networked Agents) pochodzący z instytutu robotyki na Carnegie Mellon University.

·         Moduł komunikacji i koordynacji przyjmuje oraz interpretuje wiadomości i zgłoszenia od innych agentów.

·         Moduł planowania na wejściu przyjmuje zbiór celów i zadań z, których  generuje plan wykonania.

·         Moduł terminów używa planu wykonania zadań do zarządzenia wykonania odpowiedniego zadania w odpowiednim czasie.

·         Moduł wykonania monitoruje cały proces i zapewnia, że podjęte są odpowiednie kroki aby cały proces został właściwie wykonany.

 

Schemat budowy agenta można zobaczyć na rysunku:

Rys.2 Schemat budowy RESTINA

 

Cały system RESTINA składa się z czterech typów agentów:

·         Agenci interfejsu – zajmują się interakcją z użytkownikiem (system wejścia / wyjścia)

·         Agenci zadań – pomagają użytkownikom wykonywać i planować zadania, wymieniają się informacjami  z innymi agentami

·         Agenci informacji – dostarczają dostęp do heterogenicznych źródeł informacji w sposób inteligentny.

·         Średni agenci – ułatwiają kontakt agentom potrzebującym usług dostęp do agentów świadczących usługi.

Rys.3 Powiązania pomiędzy agentami w systemie RESTINA

 

5.    Zastosowanie agentów.

 

Zadania lub aplikacje w których agent może asystować użytkownikowi są wirtualnie nieograniczone: filtrowanie i przetwarzanie informacji, zarządzanie pocztą, ustalanie spotkania, środowiska do nauki on – line, inteligentne systemy wspomagania decyzji.

Oto trzy przykłady „agentów jako osobistych asystentów”:

1.                                           The Do-I-Care Agent:

2.                                           KIMSAC

3.   &...

Zgłoś jeśli naruszono regulamin