Ten typ jest zachowaniem periodycznym, powtarzany jest w stałych odstępach czasu („tyknięciach” zegara)...

Linki


» Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.
»
139rozwizania umowy, niezachowanie formy pisemnej, niezachowanie terminu, w ktrym moe nastpi rozwizanie, jak i rozwizanie umowy bez zachowania wymaganego...
»
— Słuchaj no, synu, wiesz doskonale, że nie mam czasu martwić się o jedzenie dla czarnuchów — powiedział Tay Tay...
»
— Chyba nie — odparł — ale przecież wszyscy jesteście nomami, nie? A miejsca tu starczy dla każdego, więc spędzanie czasu na kłótniach o...
»
Psychologia społeczna jest nauką empiryczną i dysponuje rozwiniętą grupą metod, które pomagają odpowiedzieć na pytania dotyczące zachowań społecznych,...
»
 On przezwycięży nieprzyjaciół swoich – zachowana zostanie resztka Izraela: I stanie się w całym kraju – mówi PAN: Dwie...
»
odpowiedzialności, by zachować odpowiednią atmosferę i czuwać nad prawidłowym przebiegiem eksperymentu...
»
- Jak ty, Bobo - miaa si, lecz achn si z dezaprobat i poprosi, aby zachowaa powag i bya wraliwsza na sztuk, a mniej rozmiowana w krwawych intrygach...
»
Jeeli m odmawia powice, nie chce pomc o w zachowaniu aktywnoci w rnych dziedzinach y~ postpuje nierozsdnie i egoistycznie...
»
hodować rasę niewolników, jakimi dzisiaj sami jesteśmy – dlatego teŜw poprzednim przebiegu czasu to my mogliśmy być tymi ufonautami, którzy...
»
“George Patterson zachowuje pogodę ducha” czy też rąbnąć szkolnym warsztatem naprawy obuwia, co ma gorliwych uczniów i nie uskarża się na...

Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.

Poniżej mamy kod zachowania sprawdzającego ceny co 300 sekund:
150 Rozdział 5
public class CheckQuoteBehaviour extends TickerBehaviour {
public CheckQuoteBehaviour(Agent a) {
super(a, 300*1000); // okres w milisekundach
}
protected void onTick() {
// pobierz aktualną cenę
if (getCurPrice() < 5.0) {
//wyślij wiadomość zakupu – do zdefiniowania później
}
// zatrzymaj po 1000 "tyknięciach"
if (getTickCount() > 1000) {
stop();
}
}
}
Działanie kończy się po wywołaniu metody stop — po 1000 „tyknięciach” zegara. Teraz podepniemy tę klasę do agenta.
public class QuoteAgent extends jade.core.Agent {
protected void Setup() {
addBehaviour(new CheckQuoteBehaviour(this));
}
}
W ten sposób mamy pełnego agenta. Możemy załadować go do serwera
agentów bądź to z pomocą graficznej nakładki Jade, bądź też pisząc kod, który wykona to zadanie. Następnie wyślemy wiadomość zakupu akcji do agenta-kupca, zastępując metodę onTick zdefiniowaną wcześniej. Gdy agent jest załadowany do systemu, zostaje mu przypisany unikatowy numer identyfikacyjny (AID — ang.
Agent Identifier). AID może być identyfikatorem lokalnym lub globalnym. Za-
łóżmy, że mamy już agenta-kupca nazwanego PurchasingAgent o lokalnym AID
„buyer” (dokumentacja Jade wyjaśnia, jak przypisać AID agentowi). Oto popra-wiona metoda onTick:
// wewnątrz QuoteAgent...
protected void onTick() {
// pobierz aktualną cenę
if (getCurPrice() < 5.0) {
// wyślij wiadomość do agenta-kupca
jade.core.AID buyingAgent = new jade.core.AID("buyer",
AID.ISLOCALNAME);
// prosimy innego agenta o wykonanie pewnej czynności
ACLMessage msg = new ACLMessage(ACLMessage.REQUEST);
// wyślij wiadomość (typu String)
Z a s t o s o w a n i a w n a u k a c h ś c i s ł y c h i m a t e m a t y c z n o - p r z y r o d n i c z y c h 151
msg.setContent("kup 100 czegokolwiek");
msg.addReceiver(buyingAgent);
send(msg);
// zatrzymaj po 1000 "tyknięciach"
if (getTickCount() > 1000) {
stop();
}
}
}
Kod dla agenta-kupca (czytanie wiadomości i odpowiedź):
import jade.lang.acl.ACLMessage;
public class PurchasingAgent extends jade.core.Agent {
protected void setup() {
addBehaviour(new jade.core.behaviours.CyclicBehaviour(this) {
public void action() {
ACLMessage msg = receive();
if (msg != null) {
String data = msg.getContent();
//wywołaj odpowiednią metodę agenta
Serializable result = tryToBuy(data);
// istnieje specjalny skrót do wysyłaniu odpowiedzi
ACLMessage reply = msg.createReply();
reply.setPerformative(ACLMessage.INFORM);
reply.setContentObject(result);
send(reply);
}
block();
}
});
}
}
Obiekt klasy CyclicBehaviour powtarza swoje działanie w nieskończoność lub dopóki metoda done nie zwróci true. Metoda block spowoduje blokadę instancji klasy, dopóki nie nadejdzie nowa wiadomość. Typ wiadomości performative oznacza wiadomość wysyłaną do odbiorcy. Istnieją inne typy zachowań w Jade.
Klasa SequentialBehaviour zarządza grupą podległych jej zachowań sekwencyjnie.
Klasa ParallelBehaviour wykonuje grupę zachowań równolegle. Bardziej skompli-kowanym zachowanie jest FSMBehaviour (ang. Finite-State-Machine Behaviour), która działa jak skończona maszyna stanów. W tej klasie definiujesz zachowania reprezentujące różne stany systemu oraz przejścia pomiędzy poszczególnymi sta-nami zdeterminowanymi przez wydarzenie kończące poprzedni stan.
152 Rozdział 5
Jade posiada wiele innych cech ułatwiających tworzenie rozproszonych systemów wieloagentowych. Agenty mogą działać na serwerach J2EE, w apletach, w małych urządzeniach takich jak telefony komórkowe czy PDA. Jade posiada nawet szkielet ontologiczny dla semantyki agentów, tak aby agenty mogły się komunikować odnośnie swoich zadań i posiadać wspólne ich rozumienie. Przykłady zawarte w dokumentacji Jade pokazują niektóre bardziej zaawansowane zastosowania. Technologie agentowe odegrają prawdopodobnie wielką rolę w przyszłym rozwoju „internetu semantycznego”, a umiejętność pracy z już istniejącymi struk-turami na pewno pomoże programistom Javy przygotować się do tego.
Dla wielu badaczy lingwistyka komputerowa (ang. computational linguistic) to JWordNet

Powered by MyScript