Java Agent Development Framework: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pac72 (discussione | contributi)
Categorizzazione; piccole modifiche di formattazione e contenuto
Xr1blu (discussione | contributi)
Funzionalità collegamenti suggeriti: 1 collegamento inserito.
 
(58 versioni intermedie di 31 utenti non mostrate)
Riga 1:
{{Software
{{E|allo stato vi sono forti dubbi di intenti non enciclopedici|software|gennaio 2009}}
|Nome = Jade
{{C|tradotta? ripresa da quali fonti?|software|gennaio 2009}}
|Logo =
{{F|software|gennaio 2009}}
|Screenshot =
{{S}}
|Didascalia =
|Sviluppatore = Jade Team
|UltimaVersione = 4.4
|DataUltimaVersione = {{data e tempo|23|12|2015}}
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = multipiattaforma
|Genere = ide
|Licenza = [[GNU Lesser General Public License|LGPL]]
|Lingua =
|SoftwareLibero = sì
| SitoWeb = jade.tilab.com
}}
 
'''Java Agent DEvelopment Framework''', o '''JADE''', è un [[framework]] sviluppato in [[Java (linguaggio di programmazione)|Java]] che supporta lo sviluppo di [[Sistema distribuito|applicazioni distribuite]] e basate sul paradigma di programmazione ad [[Agente software|agenti]], fornendo un insieme di servizi di base, conformi allo standard FIPA<ref>[http://www.fipa.org Welcome to the Foundation for Intelligent Physical Agents<!-- Titolo generato automaticamente -->]</ref> e necessari alla creazione e al mantenimento di un [[sistema multiagente]].<ref>{{cita libro|cognome=Bellifemine|nome=Fabio|coautori=Giovanni Caire, Dominic Greenwood|anno=2007|mese=aprile|lingua=inglese|titolo=Developing Multi-Agent Systems with JADE|url=https://archive.org/details/developingmultia0000bell|editore=[[John Wiley & Sons|Wiley]]|città=|isbn=978-0-470-05747-6}}</ref><ref>{{cita web|url=http://jade.tilab.com/doc/programmersguide.pdf|titolo=JADE Programmer's Guide|accesso=26 gennaio 2009|formato=pdf|lingua=en|pagine=4|urlmorto=sì|dataarchivio=4 dicembre 2008|urlarchivio=https://web.archive.org/web/20081204105100/http://jade.tilab.com/doc/programmersguide.pdf}}</ref><br />JADE è un software [[open source]] e viene distribuito con licenza [[LGPL]].
JADE è un software [[open source]] e viene distribuito con licenza [[LGPL]].
 
== Descrizione della piattaforma ==
 
La distribuzione di JADE include un ambiente di [[Run-time|runtime]], alcune librerie che il programmatore può utilizzare per sviluppare le proprie applicazioni ed alcuni tool grafici per attività di amministrazione e monitoraggio.<br />
La distribuzione di JADE include un ambiente di [[Run-time|runtime]], alcune librerie che il programmatore può utilizzare per sviluppare le proprie applicazioni ed alcuni tool grafici per attività di amministrazione e monitoraggio.<br />Ogni istanza dell’ambientedell'ambiente runtime di JADE è chiamata ''containerplatform'' (contenitore) ed all’internoal deisuo interno vi è un main-container possonoed esserealtri attivicontainer unoopzionali oad piùesso agenticonnessi. UnÈ insiemepossibile avviare più istanze di containerJade costituiscee ladunque più ''platform'' (piattaforma). All’internoAll'interno di ogni piattaformaplatform deve sempre essere attivo unolo speciale container, chiamato ''main container'' (container principale). Il main container è, inoltre, il primo container ad essere attivato alla partenza della piattaforma e tutti gli altri container si collegano ad esso al loro avvio.<br />All'interno del main container, in conformità a quanto previsto da FIPA, sono presenti degli agenti con ruoli speciali deputati alla gestione della piattaforma stessa ed in particolare:
* '''Agent Management System (AMS)''': è il supervisore della piattaforma, controllandone il suo accesso e il suo utilizzo. È responsabile delle operazioni di creazione e terminazione di agenti e container, dell’autenticazionee dell'autenticazione e registrazione degli Agenti,agenti mediante l'assegnazione ad essi di un AID (Agent IDentifier, identificatore di agente) univoco all'interno della piattaforma stessa. Fornisce, inoltre, il servizio di Paginepagine Bianchebianche della piattaforma, mantenendo un elenco di tutti gli agenti che in un certo istante risiedono nella piattaforma stessa e memorizzando per ciascuno di essi il relativo AID.
All'interno del main container, in conformità a quanto previsto da FIPA, sono presenti degli agenti con ruoli speciali deputati alla gestione della piattaforma stessa ed in particolare:
* '''Directory Facilitator (DF)''': fornisce il servizio di [[Pagine Gialle (software)|pagine gialle]] della piattaforma, mediante cui un agente può pubblicizzare i propri servizi e/o ricercare servizi offerti da altri agenti.
*'''Agent Management System (AMS)''': è il supervisore della piattaforma, controllandone il suo accesso e il suo utilizzo. È responsabile delle operazioni di creazione e terminazione di agenti e container, dell’autenticazione e registrazione degli Agenti, mediante l'assegnazione ad essi di un AID (Agent IDentifier, identificatore di agente) univoco all'interno della piattaforma stessa. Fornisce, inoltre, il servizio di Pagine Bianche della piattaforma, mantenendo un elenco di tutti gli agenti che in un certo istante risiedono nella piattaforma stessa e memorizzando per ciascuno di essi il relativo AID.
*'''Directory Facilitator (DF)''': fornisce il servizio di [[Pagine Gialle (software)|pagine gialle]] della piattaforma, mediante cui un agente può pubblicizzare i propri servizi e/o ricercare servizi offerti da altri agenti.
 
== Agenti e behaviour ==
Come precedentemente accennato JADE è stato sviluppato completamente in Java e, pertanto, la creazione di un agente in JADE corrisponde alla definizione di una classe che estende la classe jade.core.Agent.
All’interno di un container JADE possono essere attivi uno o più agenti, responsabili dell’esecuzione di uno o più task che sono loro assegnati.<br />
Gli agenti attivi all'interno di un container JADE sono responsabili dell'esecuzione dei compiti loro assegnati.<br />In JADE i taskcompiti assegnati ad un agente sono modellati mediante un’astrazioneun'astrazione chiamata ''behaviour'' (comportamento). Il programmatore può definire specifici behaviour ed assegnarli agli agenti di una piattaforma estendendo la classe jade.core.behaviours.behaviourBehaviour. Sono previste due tipologie di behaviour, realizzate come sottoclassi della classe behaviour: i ''SimpleBehaviour'' ed i ''CompositeBehaviour''.<br />
== Modello di comunicazione ==
Un SimpleBehaviour rappresenta un'azione composta da un task unico non interrompibile. Esempi di SimpleBehaviour sono:
Uno degli aspetti chiave di un [[sistema multiagente]] è la comunicazione. Gli agenti devono, infatti, essere in grado di comunicare gli uni con gli altri, per cooperare, collaborare, negoziare e così via.
*'''OneShotBehaviour''' in cui il task viene eseguito una sola volta;
Il ''modello di comunicazione'' adottato da Jade è l’''Asynchronous Message Passing'' in cui ad ogni agente è associata una coda di messaggi ricevuti dagli altri agenti, aggiornata ogniqualvolta arrivi un nuovo messaggio. Le modalità e le tempistiche di recupero dei messaggi è demandata alla logica applicativa dei singoli agenti.<br />Il formato dei messaggi scambiati dagli agenti segue le specifiche del linguaggio ACL (''[[Agent Communication Language]]'') definito da FIPA.
*'''CyclicBehaviour''' in cui il task viene eseguito ciclicamente finchè l’agente rimane attivo;
 
*'''TickerBehaviour''' in il task viene eseguito periodicamente ad intervalli regolari.
== Ontologie ==
I CompositeBehaviour rappresentano invece un comportamento più complesso ed è ottenuto come aggregazione di più behaviour, chiamati ''behaviour Children''. Quando viene avviato, un CompositeBehaviour manda in esecuzione uno dei suoi children. La politica di scelta del children e le condizioni di terminazione del behaviour devono essere definite dal programmatore. I CompositeBehaviour si dividono in due tipologie in base alla modalità di esecuzione dei children:
Affinché gli agenti di una piattaforma possano comunicare, è necessario che essi condividano non solo linguaggi e protocolli di comunicazione, ma anche un comune vocabolario di termini utilizzati nei messaggi scambiati. La definizione di tale vocabolario in JADE è basata sul concetto di [[Ontologia (informatica)|ontologia]] che trova frequenti applicazioni nell'ambito dell'intelligenza artificiale e della [[rappresentazione della conoscenza]].<br />Un'ontologia rappresenta un modo formale per definire un vocabolario comune di concetti relativi ad un preciso dominio, nonché le relazioni che intercorrono tra di essi.<br />JADE fornisce numerosi strumenti software per la definizione di ontologie.<ref>[http://wwwmath.uni-muenster.de/u/lammers/EDU/ws03/Landminen/Abgaben/Gruppe4b/jade/doc/CLOntoSupport.pdf Jade Tutorial<!-- Titolo generato automaticamente -->]</ref>
*'''ParallelBehaviour''' in cui i behaviour Children vengono eseguiti in maniera concorrente;
 
*'''SerialBehaviour''' in cui i behaviour Children sono eseguiti in modo seriale. Tra i SerialBehaviour possiamo fare un'ulteriore distinzione tra ''Sequential behaviour'', in cui i behaviour children vengono eseguiti sequenzialmente, e l'''FSM behaviour'' che esegue i suoi children in base ad un automa a stati finiti definito dall'utente.
== JADE per il mobile ==
JADE-Leap è una versione modificata di JADE che consente l'esecuzione di Agenti JADE su un'ampia gamma di dispositivi che varia dai server ai dispositivi mobili.<br />In particolare, esistono le seguenti versioni di JADE-Leap:
* '''j2se''': consente l'esecuzione di JADE-Leap su Personal Computer o Server;
* '''pjava''': consente l'esecuzione di JADE-Leap su dispositivi mobili con piattaforme [[J2ME]] CDC;
* '''midp''': consente l'esecuzione di JADE-LEAP su dispositivi mobili che supportano la versione MIDP 1.0 o successiva.
Infine, recentemente è stato distribuito un Add-on di Jade, chiamato JADE-ANDROID Add-On, che consente l'utilizzo di JADE-Leap su sistema operativo [[Android]].<br />Un primo esempio delle potenzialità offerte dall'add-on JADE-Android è rappresentato da jChat, un'applicazione open source basata sul paradigma ad agenti. jChat consente la comunicazione con i contatti registrati sul proprio dispositivo ed aventi lo stesso software, mediante diversi canali, quali telefonata, chat testuale e messaggi SMS. Inoltre, jChat visualizza contemporaneamente in tempo reale sia la propria posizione, sia la posizione degli altri contatti sulle mappe di Google.
 
== Note ==
<references />
 
== Voci correlate ==
[[Categoria:Software libero]]
*[[Sistema multiagente]]
*[[Agente intelligente]]
 
== Collegamenti esterni ==
* {{cita web|1=http://jade.tilab.com|2=Sito ufficiale|lingua=en|accesso=26 gennaio 2009|urlarchivio=https://web.archive.org/web/20100621141053/http://jade.tilab.com/|dataarchivio=21 giugno 2010|urlmorto=sì}}
* {{cita web|https://code.google.com/p/jchat4android/|JChat|lingua=en}}
 
{{Portale|software libero}}
 
[[Categoria:Librerie software]]
[[Categoria:Software liberoJava]]