AGENCI MOBILNI

Do tej pory koncentrowaliśmy się na samowystarczalnej i adaptacyjnej naturze agentów oprogramowania i mogliśmy być winni sugerowania, że ​​„poruszają się” po sieci, polując na okazyjne witryny. W rzeczywistości większość z nich nic takiego nie robi. Wiele z nich znajduje się po prostu na komputerze klienckim i po prostu ściąga strony internetowe, które analizują lokalnie. Jednak niektórzy agenci posiadają również właściwość mobilności. Oznacza to, że fragmenty kodu wykonywalnego, reprezentujące instancje agentów, mogą być uruchamiane, powiedzmy, z klienta na serwer lub odwrotnie, aby uruchomić jakiś proces na tym ostatnim. Możliwe jest również uruchomienie kilku agentów w sieci komputerowej, z których każdy zajmuje się rozwiązywaniem tego samego zadania lub jego wariantów. Oczywistym zastosowaniem może być próba znalezienia ceny za krótkotrwały towar – na przykład umowę dotyczącą usług finansowych lub miejsce w linii lotniczej. Przykład tego ostatniego podano w [136]. Agent następnie uruchamia się na hoście docelowym, być może negocjując z innymi agentami i albo wysyłając prostą wiadomość „o zakończeniu” do swojego nadawcy, albo uruchamiając się albo do oryginalnego hosta albo do innego komputera, przy czym projekcja samego siebie zawiera informacje do dalszego przetwarzania. Problemy tutaj wyraźnie dotyczą przeciążenia sieci i reakcji na jej awarię lub opóźnienia, problemów z wydajnością uruchamiania wielu agentów na „obcych” maszynach i bezpieczeństwa. Aby rozwiązać te problemy, opracowano szereg wdrożeń [137]. Wszystkie nakładają ograniczenia na swobodę działania agenta w systemie hosta, być może przypisując go do określonych wirtualnych miejsc w pamięci, ograniczając jego prawa dostępu do określonych miejsc na serwerze plików i przerywając go, jeśli wystąpią anomalie procesora. Dobre systemy w dużym stopniu wykorzystują również zabezpieczenia, oparte na przekazywaniu poświadczeń kryptograficznych („certyfikaty”), które można wykorzystać do wywołania uprawnień dla agenta (dostęp do plików, maksymalny czas procesora itp.). Aspekty wydajności i niezawodności zostały potraktowane na wiele różnych sposobów: niektóre systemy wolą traktować każdego agenta jako pojedynczy wątek w pojedynczym, wielowątkowym procesie, co przyspiesza komunikację między agentami kosztem złożoności; inni uruchamiają każdego agenta jako oddzielny proces w środowisku wielozadaniowym. Systemy mogą być całkowicie rozproszone lub obejmować centralny serwer, który nadzoruje każdą interakcję. Większość systemów jest interpretowana, a nie kompilowana, a JAVA jest szeroko stosowana. Prowadzi to do dość niskiej wydajności w porównaniu ze skompilowanymi rozwiązaniami.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *