• Nie Znaleziono Wyników

Agentów Personalnych. Agent Koordynuj ˛acy w taki sposób rozdziela zadania, aby w ka˙zdym momencie pozostawała pewna ilo´s´c wolnych Agentów Wyszuku-j ˛acych. Niemniej jednak w przypadku braku wolnych zasobów, Agent Koordynu-j ˛acy ko ´nczy zadanie, którego lista wyników jest najdłu˙zsza i zwolnionych Agen-tów przydziela do nowego zadania. Aby zapobiec cz˛estemu przeł ˛aczaniu grup szeregowych agentów pomi˛edzy zadaniami, wprowadzono minimalny i maksy-malny okres trwania zadania. Je´sli natomiast zabraknie Agentów Personalnych do obsługi zapyta ´n u˙zytkowników, Agent Koordynuj ˛acy, tak jak w poprzednim przypadku, ko ´nczy najlepiej wykonane zadanie i zwolnione zasoby przydziela nast˛epnemu u˙zytkownikowi. W sytuacjach awaryjnych, gdy zadanie przedłu˙za si˛e a nie znaleziono odpowiedzi na postawione pytanie, Agent Koordynuj ˛acy ma obowi ˛azek zako ´nczy´c zadanie z odpowiedzi ˛a negatywn ˛a.

5.4. Realizacja systemu

5.4.1. Dobór narz˛edzi, urz ˛adze ´n i protokołów

Do stworzenia systemu agentowego wykorzystano gotow ˛a bibliotek˛e napi-san ˛a w j˛ezyku Java – JADE (ang. Java Agent DEvelopment Framework). Bi-blioteka ta zawiera narz˛edzia, ułatwiaj ˛ace tworzenie ´srodowisk jak równie˙z sa-mych agentów. Ka˙zdy agent powinien by´c klas ˛a dziedzicz ˛ac ˛a po klasie bazowej

jade.core.Agent. Aby w ten sposób stworzony agent mógł wykonywa´c przy-dzielone zadania, nale˙zy zaimplementowa´c w nim metod˛e init(), która jest wykonywana przy starcie obiektu agenta. W metodzie tej mo˙zna na przykład dodawa´c kolejne zachowania. Konkretne zachowanie nale˙zy zdefiniowa´c jako klas˛e, dziedzicz ˛ac ˛a pojade.core.Behaviouri zaimplementowa´c w niej metody

action()orazdone(). Do ka˙zdego agenta, u˙zywaj ˛ac metodyaddBehaviour(), dodawa´c mo˙zemy wiele ró˙znych zachowa ´n. Ka˙zde zachowanie w˛edruje do ko-lejki, po czym wszystkie wykonywane s ˛a po kolei. Po zako ´nczeniu wykonywania okre´slonego zachowania, uruchamiana jest metodadone(), zwracaj ˛aca warto´s´c typu boolean. Je˙zeli metoda ta zwrócitrue, zachowanie usuwane jest z kolejki, w przeciwnym wypadku b˛edzie ono wywołane po raz kolejny w ramach nast˛ep-nej kolejki.

Do komunikacji mi˛edzy agentami udost˛epniony został j˛ezyk ACL (ang. Agent Communication Language). Jest to specjalna klasa, która posiada szereg me-tod umo˙zliwiaj ˛acych wygodne konstruowanie i przetwarzanie tre´sci komunika-tów. Aby wysła´c komunikat nale˙zy wypełni´c odpowiednie atrybuty, a nast˛ep-nie wywoła´c metod˛esend(). Agent odbieraj ˛acy dan ˛a wiadomo´s´c u˙zywa metody

receive(). Do postawowych atrybutów nale˙z ˛a:

• get/setPerformative()– pobiera/ustawia performatyw, • get/setSender()– pobiera/ustawia nadawc˛e,

• add/getAllReceiver()– dodaje/pobiera wszystkich odbiorców, • get/setLanguage()– pobiera/ustawia j˛ezyk komunikatu, • get/setOntology()– pobiera/ustawia ontologi˛e,

• get/setContent()– pobiera/ustawia komunikat. Ka˙zdy agent posiada swoj ˛a unikaln ˛a nazw˛e postaci:

<nazwa-agenta>@<nazwa-hosta>:<nr-portu>/JADE

Nie jest wymagane aby poszczególni agenci umieszczeni byli na jednym kom-puterze. System JADE umo˙zliwia tworzenie agentów na ró˙znych maszynach, a komunikacja mi˛edzy nimi odbywa si˛e wtedy przy pomocy mechanizmu RMI (ang. Remote Method Invocation).

5.4.2. Przykłady implementacji

Poni˙zej zamieszczone zostały przykłady implementacji klas agenta oraz za-chowania.

• Klasa przykladowego agenta: package Agent ;

/ / ladujemy b i b l i o t e k e agenta import jade . core . Agent ; / / klasa przykladowego agenta

public c l a s s PrzykladowyAgent extends Agent

{

/ / metoda wywolywana przy i n i c j a l i z a c j i agenta protected void i n i t ( )

{

System . out . p r i n t l n ( " PrzykladowyAgent z o s t a l uruchomiony . " ) ; addBehaviour (new PrzykladoweZachowanie ( ) ) ;

}

/ / metoda wywolywana przy konczeniu z y c i a agenta ( po wykonaniu / / na nim metody doDelete ( ) )

protected void takeDown ( )

{

System . out . p r i n t l n ( " PrzykladowyAgent konczy d z i a l a n i e . " ) ; }

}

• Klasa przykładowego zachowania: package Agent ;

/ / ladujemy b i b l i o t e k e z zachowaniami import jade . core . behaviours . * ; / / klasa przykladowego zachowania

public c l a s s PrzykladoweZachowanie extends Behaviour

{

i n t l i c z n i k = 0 ;

/ / metoda opisujaca zachowanie agenta public void action ( )

{

/ / pole myAgent zawiera wskaznik agenta , do ktorego odnosi s i e / / aktualne zachowanie

5.4. Realizacja systemu

System . out . p r i n t l n ( " Agent " + myAgent . getName ( ) + " wykonuje swoje zachowanie . " ) ;

}

/ / metoda informujaca czy zakonczyc wykonywanie danego zachowania public boolean done ( )

{ i f ( ++ l i c z n i k == 3 ) { myAgent . doDelete ( ) ; return true ; } return f a l s e ; } }

Po uruchomianiu ´srodowiska agentowegojade.Bootoraz przykładowego agenta poleceniem:

java jade.Boot <nazwa-agenta>:<pakiet>.<klasa-agenta>(argumenty),

otrzymuje si˛e informacj˛e o uruchomieniu agenta. Nast˛epnie zaimplementowane zachowanie jest wywoływane 3 razy, po czym działanie agenta zostaje zako ´ n-czone.

5.4.3. Opis instalacji

Poni˙zej opisano sposób instalacji na serwerze systemu oraz na kom-puterze u˙zytkownika b˛ed ˛acym klientem. We wszystkich przypadkach na-le˙zy w zmiennej systemowej CLASSPATH doda´c ´scie˙zk˛e z bibliotekami Jade, np../jade/lib/jade.jar.

Instalacja i uruchomienie ´srodowiska i Agenta Koordynuj ˛acego na serwerze przebiega w nast˛epuj ˛acych krokach:

• skopiowanie kataloguprojektdo dowolnego katalogu, • wywołanie z linii polece ´n

java jade.Boot -gui AgentKoordynujacy:Agent.AgentKoordynujacy. Instalacja i uruchomienie Agenta Personalnego na komputerze u˙zytkownika przebiega w nast˛epuj ˛acych krokach:

• skopiowanie kataloguprojektdo dowolnego katalogu, • wywołanie polecenia zjava Gui.Guilinii polece ´n,

• ustawienie adresu hosta z Agentem Koordynuj ˛acym poprzez wybranie zMenu głównegozakładkiOpcje.

Literatura

[1] Jasques Ferber, Multiagent Systems: An Introduction To Disturbed Aritificial Intelligence, Harlow: Addison Wesley Longman 1999

[2] Peter Norvig,Sturart Russell, Artificial Intelligence: A Modern Approach, druga edycja, Upper Saddle River: Prentice Hall: Pearson Education Inter-national, 2003

[3] Krzysztof Ciesielski, Barbara Dunin–K˛epicz, Systemy wieloagentowe – Mul-tiagent systems, Skrypt, 2001

[4] Michael Wooldridge, An Introduction to MultiAgent Systems,John Wiley & Sons Ltd, 2002,

[5] Yoav Shoham and Kevin Leyton-Brown, Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations, Cambridge University Press, 2008

[6] Giovanni Caire, JADE Tutorial: JADE Programming For Beginners,Telecom Italia S.p.A, 2009,

R

O Z D Z I A Ł

6

METODY DR ˛A ˙ZENIE DANYCH I ICH

ZASTOSOWANIA

G. Wi´sniewski, M. Szulc

6.1. Wst˛ep

Post˛ep technologiczny w zakresie cyfrowego generowania i gromadzenia in-formacji doprowadził do przekształcenia si˛e baz danych wielu przedsi˛ebiorstw, urz˛edów i placówek badawczych w zbiorniki ogromnych ilo´sci danych. Wraz z gwałtownym wzrostem ilo´sci gromadzonych danych coraz trudniej jest je ana-lizowa´c i rozumie´c. Koniecznym stało si˛e wprowadzenie metod pozwalaj ˛acych na ich sensowne przetwarzanie. Doprowadziło to do powstania teorii i narz˛e-dzi, które zebra´c mo˙zna pod jednym mianownikiem: eksploracja danych K DD (ang. knowledge discovery in databases) [1].

Podstawowym problemem KDD jest przetwarzanie du˙zej ilo´sci danych w formy bardziej zwi˛ezłe (np. raport) lub u˙zyteczne (np. estymowanie warto´sci dla przyszłych przypadków). Eksploracja danych jest procesem zautomatyzowa-nym, w którym poszukiwane s ˛a nietrywialne, dotychczas nieznane, potencjalnie u˙zyteczne reguły, zale˙zno´sci itd. w du˙zych repozytoriach danych. Jego celem jest analiza procesów w celu lepszego ich rozumienia. W procesie odkrywania wiedzy wyró˙znia si˛e nast˛epuj ˛ace etapy (rys. 6.1):

• Selekcja danych (ang. data selection) - wybieranie tych danych z bazy danych, które s ˛a istotne dla zada ´n analizy.

• Przetwarzanie wst˛epne (ang. data preprocessing) - przygotowanie danych, usu-wanie „zanieczyszcze ´n” i niespójno´sci w danych itp.

• Transformacja danych (ang. data transformation) – przekształcanie i konsoli-dowanie danych do postaci przydatnej dla eksploracji, na przykład ich sumo-wanie i/lub agregosumo-wanie (np. w hurtowni danych).

• Eksploracja danych (ang. data mining) – stosowanie „inteligentnych” metod w celu odkrycia istotnych zale˙zno´sci zwanych wzorcami (ang. patterns). • Ocena wzorców (ang. pattern evaluation) – identyfikacja naprawd˛e interesuj ˛

Rys. 6.1: Kroki w procesie eksploracji danych (wg [1]).

• Reprezentacja wiedzy (ang. knowledge presentation) – przedstawienie odkrytej wiedzy u˙zytkownikowi za pomoc ˛a technik wizualizacji i reprezentacji wiedzy.

Eksploracja danych (inaczej te˙z dr ˛a˙zenie danych) mo˙ze by´c wykonywana za pomoc ˛a osobnej aplikacji lub algorytmu wbudowanego w proces KDD. Prowadzi ona, przy okre´slonych ograniczeniach obliczeniowych, do znalezienia wzorców w danych (których mo˙ze by´c niesko ´nczenie wiele). Wa˙znym czynnikiem w dr ˛ a-˙zeniu danych jest okre´slenie celu dr ˛a˙zenia. Mo˙zna wyró˙zni´c dwa typy celów: • weryfikacja – system jest ograniczony do weryfikacji hipotezy u˙zytkownika, • odkrycie – system odkrywa nowe wzorce