Techniki wnioskowania z użyciem rozproszonej bazy wiedzy



Pobieranie 347.22 Kb.
Strona9/10
Data24.10.2017
Rozmiar347.22 Kb.
1   2   3   4   5   6   7   8   9   10

Agent


Agent w systemie JADE reprezentowany jest przez klasę Agent. Agenty tworzone przez programistę będą instancjami tej właśnie klasy. W systemie, agenci działają jako pojedyncze wątki (wątki w rozumieniu Javy). Schemat życia agenta przedstawia następujący diagram:

Rys.9 Model życia agenta


Tworzenie agentów w JADE wygląda następująco: wykonywany jest konstruktor klasy agenta, agentowi przydzielany jest identyfikator AID, agent rejestrowany jest w usłudze AMS i wykonywana jest metoda setup() agenta. Metoda setup() to miejsce, gdzie rozpoczyna się ingerencja programisty - tutaj należy umieszczać wszelkie rzeczy związane z inicjalizacją agenta. Należy zauważyć, że w momencie uruchamiania tej metody agent jest już zarejestrowany w systemie. Posiada on, zatem unikalną globalną nazwę oraz swój adres, a także referencje umożliwiające odwołanie się do usług katalogowych.

W przypadku zatrzymywania agenta, JADE oferuje metodę takeDown(), która spełnia analogiczną rolę jak setup(). W trakcie wykonywania tej metody, agent jest ciągle zarejestrowany w AMS i może jeszcze wysyłać komunikaty do innych agentów.

Do komunikacji międzyagentowej służy metoda send(). Sama metoda wysyła wcześniej skonstruowany komunikat; co ważne, komunikat może mieć paru adresatów. Każdy agent posiada własną kolejkę komunikatów, do której może otrzymać dostep za pomocą metod blockingReceive() (metoda blokująca agenta aż do otrzymania komunikatu) lub receive() (metoda nieblokująca).

Można oczywiście tworzyć agentów z graficznym interfejsem użytkownika, w przypadku systemów wymagających interakcji z użytkownikiem. Implementacja GUI w JADE nie jest jednak idealna, ponieważ model wątkowy (każdy agent jest reprezentowany przez osobny wątek w Javie) koliduje nieco z modelem Swingowym, również bazującym na wątkach. Większość elementów Swingowych nie jest thread-safe (co oznacza, że mogą wymagać zewnętrznej synchronizacji). Aby poradzić sobie z tym problemem, JADE udostępnia specjalne rodzaj zdarzenia, GuiEvent, które jest przekazywane z GUI (chodzącego na swoich wątkach) do agenta (będącego innym wątkiem) w postaci komunikatu.




Pobieranie 347.22 Kb.

Share with your friends:
1   2   3   4   5   6   7   8   9   10




©operacji.org 2020
wyślij wiadomość

    Strona główna