...

Esercizi su Jade

by user

on
Category: Documents
11

views

Report

Comments

Transcript

Esercizi su Jade
Laboratorio su Jade
(leggete le slides e contemporaneamente, per ogni esempio, svolgete i punti
sotto indicati)
Concetti base
- Aprire il file Hello.java
- Lanciare da linea di comando l'agente (NB: spostarsi prima della directory in cui avete
salvato il codice!!)
javac Hello.java
java jade.Boot hi:Hello
//compilo il file in java
//lancio jade creando un agente chiamato hi con classe Hello
- Ripetere le stesse operazioni con l'agente Hello2 (dovete chiudere prima JADE, con
ctrl+c)
- Modificare Hello2 in modo che stampi, oltre al suo nome, anche il numero di volte che
lo ha scritto, e lanciarlo da linea di comando
- Aprire i file Ping.java e Pong.java, analizzare il codice, e lanciare i due agenti da linea
di comando (attenzione, come dovete chiamarli?)
- Modificare l'agente Pong (creare Pong2) perchè stampi da chi ha ricevuto il messaggio
- Modificare gli agenti in modo da ottenere un continuo scambio di messaggi Ping Pong
(quali classi dovete modificare? e come?)
- Lanciare due agenti Ping (quelli vecchi!) (chiamandoli Ping1 e Ping2) ed un Pong ed
analizzare lo scambio di messaggi
Interfaccia di JADE
- Lanciare l'interfaccia di Jade
java jade.Boot -gui
- Lanciare da interfaccia Jade l'agente Hello2 (Selezionare il Main container, pulsante
destro del mouse "Start new agent", inserire i valori Nome: Hi, Classe: Hello2): cosa
succede? (Vedete qualcosa a livello di interfaccia…? e dietro nella finestra di comando?)
- Lanciate da interfaccia Hello, dopo di che selezionate l’agente appena lanciato fra quelli
associati al Main container, stoppatelo e uccidetelo.
NB: potete anche creare gli agenti mentre aprite l’interfaccia, con il comando
java jade.Boot -gui hi:Hello2 ma provate a farlo non da linea di comando!!
- Come sopra, lanciare da interfaccia Jade l'agente Ping (Nome: Ping, Classe: Ping) e
l'agente Pong (Nome: Pong, Classe: Pong).
Cosa vi dice jade (nel prompt)? perchè?
Rieseguire (uccidendo prima Ping) ma creando prima Pong...
- Lanciare da interfaccia Jade l'agente Pong (Nome: Pong, Classe: Pong2)
(Se per caso non fosse più fra noi...)
- Creare un agente dummy (basta aprire la sua maschera per crearlo! Lo vedrete
comparire nell’elenco degli agenti con un nome generico tipo “a0”. Poi lasciate la
maschera aperta per dopo, altrimenti alla chiusura il dummy muore)
- Lanciare lo sniffer (selezionare il pulsante Start sniffers) e agganciarlo ad entrambi gli
agenti appena creati (selezionare gli agenti e poi premere sul pulsante con Rec "Sniff this
agent").
- mandare dal dummy un messaggio a Pong (pulsante di destra su Receivers, spuntando il
flag, inserire il nome Pong), con oggetto "Ping" e performative Inform, e osservare la
comunicazione sullo sniffer. Cosa succede se inserite il nome “Pong” fra i receiver senza
selezionare la spunta?
Proviamo un esempio un po’ più complicato...
Abbiamo visto due versioni del Ping Pong: la prima, con un solo scambio di messaggi, e
la seconda con lo scambio continuo.
Entrambe non hanno una buona resa via interfaccia, poiché non possiamo "spiare" la
conversazione con lo sniffer (nel primo caso quando creiamo lo sniffer tutto e' già finito,
nel secondo caso i messaggi sono troppi!). Verificatelo da voi!
- Provate a modificare la classe Ping2 (quella che continua a mandare messaggi) in modo
che si comporti così:
- alla sua creazione manda un mess a pong
- dopo di che continua a leggere i messaggi in arrivo ma spedisce il solito
messaggio a Pong se e solo se gli arriva un messaggio da un agente che non sia Pong
(cioè facciamo in modo di inserire un arbitro fra i due: Ping e pong si devono scambiare
un solo messaggio alla volta e solo quando un agente esterno gli dà il via).
Così facendo potete lanciare da interfaccia Ping e Pong, attaccargli lo sniffer, creare un
dummy agent arbitro che manda (voi mandate a mano...) il via a Ping e osservare
finalmente lo scambio di messaggi.
Un suggerimento: non fate affidamento sull' = = fra stringhe...
Guardate le API di JADE per sfruttare al meglio i metodi di AID!
http://jade.tilab.com/doc/api/index.html
DF
- Ping vuole giocare con tanti Pong: modificate la classe pong base in modo che si registri
(una volta sola!) al DF con un servizio di Pong, e poi, come prima, risponda ai messaggi
di Ping
- modificate la classe Ping così che cerchi nel df tutti gli agenti che offrono il servizio
pong, qualunque sia il loro nome, per mandargli poi il classico messaggio Ping
- Provare a lanciare da interfaccia 3 agenti Pong nuovi, con nomi qualunque, poi il
singolo agente Ping, e verificate che il tutto funzioni!
- Se vi rimane tempo, fate registrare anche Ping sul df con un servizio Ping, e fate in
modo che gli agenti Pong usino il DF per trovare l'agente (che sarà uno solo!) Ping.
Parte del materiale e’ tratta da
http://www.iro.umontreal.ca/~vaucher/Agents/Jade/primer4.html
Fly UP