C1. Simple Agents in Jade
Slide: file:///C:/UNI/Magistrale/ISE/C1%20Simple%20Agents%20in%20Jade.pdf
Indice
Obiettivo del Modulo
Definizione
JADE (Java Agent DEvelopment Framework) e un framework Java per sviluppare applicazioni multi-agente conformi alle specifiche FIPA.
Il modulo mostra come passare dalla definizione teorica di agente a una piattaforma concreta in cui gli agenti sono oggetti Java, hanno un ciclo di vita, comunicano con messaggi e sono eseguiti dentro una piattaforma distribuita.
In pratica: JADE e utile per vedere che un agente non e solo una classe Java. La classe fornisce codice, ma la piattaforma fornisce identita, registrazione, comunicazione, lifecycle e servizi di scoperta.
Agenti come Componenti Autonomi
Weak notion of agent
Definizione
La weak notion of agent descrive un agente attraverso quattro proprieta: autonomia, abilita sociale, responsiveness e proactiveness.
Le proprieta principali sono:
- Autonomia: l’agente svolge la maggior parte dei propri compiti senza intervento diretto di umani o altri agenti.
- Abilita sociale: l’agente interagisce con altri agenti o persone quando serve per raggiungere i propri obiettivi.
- Responsiveness: l’agente percepisce l’ambiente e risponde tempestivamente ai cambiamenti.
- Proactiveness: l’agente non reagisce soltanto, ma prende iniziativa rispetto ai propri goal.
Esempio
Un agente che gestisce prenotazioni non aspetta solo richieste: puo controllare nuove disponibilita, inviare notifiche e negoziare alternative con altri agenti.
Agenti come entita autonome
Definizione
Un agente e un’entita computazionale autonoma: incapsula controllo e possiede un criterio per governarlo.
L’idea importante e che l’autonomia non e un accessorio. Da essa derivano molte altre caratteristiche: interazione, socialita, proattivita, situatezza, possibilita di avere task o goal, mobilita e comportamento intelligente.
Nel contesto dei sistemi distribuiti, incapsulare autonomia nei componenti aiuta a ottenere sistemi piu robusti. Se un componente continua a computare anche quando la connessione con altri componenti manca, il sistema puo mantenere almeno una forma locale di liveness.
JADE e FIPA
Che cosa e JADE
Definizione
JADE e un middleware agent-oriented: fornisce una piattaforma completa per eseguire agenti e un insieme di API per costruire applicazioni multi-agente.
JADE ha due obiettivi:
- essere una piattaforma FIPA-compliant per MAS, occupandosi di lifecycle, comunicazione e trasparenza distributiva;
- offrire agli sviluppatori Java un framework semplice ma completo per creare agenti personalizzati.
Note
FIPA (Foundation for Intelligent Physical Agents) e stata l’organizzazione di standardizzazione che ha promosso interoperabilita e specifiche per tecnologie agent-based.
Piattaforme e container
Definizione
Una piattaforma JADE e un sistema logico che puo essere distribuito su piu host, ciascuno dei quali ospita uno o piu container di agenti.
Un container fornisce l’ambiente runtime per eseguire agenti: gestione del ciclo di vita, servizi di messaggistica e interazione con la piattaforma. Il primo container avviato diventa di solito il main container.
In pratica: piu macchine possono partecipare alla stessa piattaforma JADE. Gli agenti non devono conoscere tutti i dettagli di rete: la piattaforma mantiene registri e servizi per ritrovarsi e comunicare.
Servizi della Piattaforma
AMS
Definizione
L’Agent Management System (AMS) e il servizio che mantiene traccia degli agenti registrati nella piattaforma JADE.
Un agente, prima di agire pienamente, deve essere registrato presso l’AMS. L’AMS fornisce quindi un servizio di white pages: permette di identificare e localizzare agenti tramite il loro nome, anche se vivono in container remoti.
Directory Facilitator
Definizione
Il Directory Facilitator (DF) e il servizio che mantiene l’elenco delle capacita e dei servizi pubblicati dagli agenti.
Il DF e l’equivalente delle yellow pages: non cerco un agente per nome, ma un agente che dichiara di offrire un certo servizio.
Esempio: un agente che vuole prenotare un viaggio puo cercare nel DF chi offre il servizio flight-booking, senza conoscere a priori il nome dell’agente.
Agent Communication Channel
Definizione
L’Agent Communication Channel (ACC) e il sistema di message passing distribuito che gestisce lo scambio di messaggi ACL tra agenti JADE.
L’ACC offre comunicazione asincrona: ogni agente ha una coda di messaggi, simile a una mailbox. Quando arriva un messaggio, JADE lo consegna alla coda dell’agente destinatario, ma spetta all’agente decidere quando processarlo.
Punto chiave
La ricezione fisica di un messaggio non implica che l’agente lo elabori subito. Questo preserva autonomia e controllo interno dell’agente.
Agenti JADE
Lifecycle FIPA
Definizione
Il lifecycle FIPA descrive gli stati attraversati da un agente durante la sua esecuzione nella piattaforma.
Stati principali:
- Initiated: l’oggetto agente e stato creato ma non e ancora registrato.
- Active: l’agente e registrato e i suoi behaviour possono essere eseguiti.
- Waiting: l’agente e bloccato in attesa di un evento, spesso un messaggio.
- Suspended: l’agente e sospeso e non esegue behaviour.
- Transit: l’agente e in fase di migrazione.
- Unknown: l’agente e terminato o deregistrato.
Behaviour
Definizione
Un behaviour JADE e un’attivita eseguita da un agente per svolgere un compito proattivo o reattivo.
Gli agenti JADE sono oggetti Java che estendono jade.core.Agent, ma la logica applicativa non dovrebbe stare tutta in un unico metodo. Viene organizzata in behaviour, cioe attivita interne che JADE schedula.
La scelta progettuale e pragmatica: ogni agente e eseguito da un singolo thread Java, ma puo gestire piu attivita tramite uno scheduler interno non preemptive e round-robin.
Tip
Un behaviour dovrebbe cedere controllo quando non ha lavoro da fare, altrimenti blocca le altre attivita dello stesso agente.
Comunicazione ACL
Definizione
Un messaggio ACL e un messaggio strutturato secondo la Agent Communication Language di FIPA, con campi che specificano mittente, destinatari, performativa, contenuto, linguaggio e ontologia.
Campi tipici:
sender: agente mittente, spesso impostato automaticamente.receiver: uno o piu destinatari.performative: atto comunicativo, per esempio richiesta, informazione o proposta.content: informazione trasmessa.language: sintassi usata per codificare il contenuto.ontology: significato condiviso dei termini del contenuto.
JADE offre primitive pronte:
send, per inviare un messaggio;receive, per recuperare asincronamente un messaggio;blockingReceiveo timed receive, per attendere con timeout;- ricezione selettiva tramite template, per filtrare messaggi specifici.
In pratica: due agenti possono comunicare solo se condividono abbastanza semantica. Avere lo stesso formato non basta: devono anche interpretare il contenuto nello stesso modo.
Fast Lab
Il laboratorio chiede di clonare il repository indicato nelle slide e seguire gli esempi JADE:
https://dvcs.apice.unibo.it/pika-lab/courses/ise/ay2526/lab-jadeObiettivi pratici:
- creare un agente JADE semplice;
- osservare registrazione e lifecycle;
- organizzare la logica in behaviour;
- inviare e ricevere messaggi ACL;
- capire il ruolo dei servizi AMS, DF e ACC.
Prossimi Argomenti
Continueremo con:
- AgentSpeak(L) e Jason - programmazione di agenti intenzionali basati su BDI.
- Lab Jason - esercizi pratici su MAS Jason, goal, piani e comunicazione.
- Reasoning Agents - collegamento teorico tra agenti, intenzioni e ragionamento pratico.