INTRODUZIONE SVILUPPO DI UN AGENTE BDI IN JADEX 7accorgersene invieranno informazioni sul proprio conto ai sistemi connessi in rete in modo da avere una risposta personalizzata da parte dell ambiente. Il termine context-aware computing si riferisce a tutti quei sistemi sensibili al contesto in cui sono utilizzati. Questi sistemi percepiscono o ricordano informazioni sugli utenti e sulle situazioni fisiche o emozionali allo scopo di ridurre lo scambio di informzioni tra computer ed utente e semplificare il processo di interazione. Molti degli elementi dell ambiente fisico e concettuale in cui questi sistemi sono utilizzati, come posizione, tempo, storia, reazione che il computer si aspetta da parte dell utente, informazioni personali o sulle preferenze riguardanti l utente, possono essere inclusi in un unico concetto, che Ł quello di contesto. Raccogliendo ed interpretando le informazioni del contesto, i Context-Aware Systems, cos comunemente chiamati, creano e conservano modelli di utente dai quali sono guidati nel corso dell interazione. In genere, questa raccolta di informazioni Ł resa possibile attraverso l uso di canali di input impliciti, dove tutto ci che fanno gli utenti e che non comunicano direttamente al sistema Ł considerato comunicazione implicita. SCOPO DELLA TESI Lo scopo della tesi Ł quello di analizzare e approfondire tutti gli aspetti coinvolti nella progettazione di un agente BDI, a partire dalla raccolta e dall organizzazione delle informazioni, per arrivare alla progettazione di un agente intelligente che agisca appropriatamente sulla base delle conoscenze acquisite per raggiungere i propri obiettivi e spinto dalle proprie intenzioni. Ci proponiamo di progettare e sviluppare un agente BDI che sia in grado di comunicare, interagire e negoziare all interno di un sistema multi agente con altri
INTRODUZIONE SVILUPPO DI UN AGENTE BDI IN JADEX 8agenti BDI. Per questo motivo ci proponiamo di utilizzare un nuovo tool di realizzazione di agenti: Jadex. Realizzato sulla base dell architettura agente di Jade, il pacchetto Jadex consente di sviluppare agenti rispettosi delle specifiche FIPA, applicando l architettura BDI al progetto e al livello di implementazione. STRUTTURA DELLA TESI Nel Capitolo 1 spiegheremo in cosa consiste la tecnologia ad agenti, cos Ł un agente, quali sono le caratteristiche e come avviene il processo deliberativo. Inoltre introdurremo i Sistemi Multi-Agente (MAS) esponendo i vantaggi e le caratteristiche di tali sistemi, la loro organizzazione interna e in che maniera sono utilizzati per realizzare sistemi di Ambient Intelligence. Nel Capitolo 2 spiegheremo in cosa consiste un agente basato sul modello BDI, quali sono le caratteristiche, l architettura e come avviene il suo processo deliberativo. Inoltre introdurremo i sistemi ad agenti BDI esponendo le caratteristiche, l ambiente e la loro base teorica. Nel Capitolo 3 verranno analizzati i linguaggi di comunicazione tra gli agenti ponendo particolare attenzione a FIPA-ACL di cui spiegheremo l architettura, le caratteristiche pricipali ed i vari servizi forniti di cui verranno evidenziate le finalit e i vantaggi apportati nell ambito della comunicazione fra gli agenti. Nel Capitolo 4 spiegheremo come funziona Jadex, il tool di sviluppo utilizzato per realizzare gli agenti BDI. Verranno esaminate le caratteristiche innovative di questo strumento rispetto a quelli precedenti, gli strumenti di supporto, che esso
INTRODUZIONE SVILUPPO DI UN AGENTE BDI IN JADEX 9fornisce alla realizzazione degli agenti BDI. Esamineremo, inoltre, come realizzare gli agenti BDI con questo tool. Nel Capitolo 5 spiegheremo il sistema multi agente realizzato, gli agenti BDI che lo compongono, il loro funzionamento e il modo in cui negoziano. Il sistema verr presentato partendo da un analisi iniziale per poi passare alla fase di progettazione e implementazione.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 10CAPITOLO 1: AGENTI SOFTWARE 1.1 GLI AGENTI COME PARADIGMA DELL INTELLIGENZA ARTIFICIALE L intelligenza artificiale Ł uno dei numerosi campi di dibattito teorico tra scienziati e filosofi. Per intelligenza artificiale, spesso abbreviata in AI (Artificial Intelligence), si intende generalmente la possibilit di far svolgere ad un calcolatore alcune funzioni e alcuni ragionamenti tipici della mente umana. Nel suo aspetto puramente informatico, comprende la teoria e la pratica dello sviluppo di algoritmi che rendano le macchine capaci di mostrare delle abilit e un attivit intelligente, anche se in domini molto specifici. Tuttavia la definizione piø nota di AI Ł quella di Marvin Minsky nel 1956 [1.1], il quale defin l intelligenza artificiale quel settore dell informatica che cerca di riprodurre nei computer quel tipo di comportamenti che, quando sono assunti dagli essere umani, vengono generalmente considerati frutto della loro intelligenza. Gli aspetti che hanno portato gli scienziati ad un cauto ottimismo circa il fatto che ad una macchina si potesse attribuire il termine intelligente sono molteplici. Considerato che l computer pu essere usato non solo per elaborazione numerica ma anche per quella simbolica, si sono poste sin dagli anni 50 due domande fondamentali:
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 11Un computer pu produrre piø (o poco di piø) di quello che Ł contenuto nei suoi programmi? Pu una machina in qualche modo pensare? Se alla prima domanda si rispose affermativamente gi negli anni 60, attraverso la produzione di un software che dopo un certo periodo di addestramento giocava a dama meglio dei suoi creatori, la seconda domanda invece port ad una discussione senza fine sul concetto di pensare. Per evitare l infruttuosa disputa il matematico inglese Turing propose nel 1950 [1.1] il suo famoso test: un osservatore collegato tramite un computer ad altri computer, dei quali si sa soltanto che ad uno Ł addetto un uomo, all altro una macchina. Se una persona intrattenendo un dialogo sia con l uomo che con la macchina attraverso il terminale non riesce a distinguerli, allora bisognerebbe concedere anche alla macchina la facolt di pensare . Una prima applicazione che cerc di superare il test di Turing fu Eliza [1.1], la quale rappresenta sicuramente, dal punto di vista dell intelligenza artificiale, un esperimento fallimentare in quanto esso riflette la filosofia dell intelligenza artificiale degli anni Sessanta, in cui si cercava di riprodurre delle capacit di elaborazione del linguaggio naturale in un calcolatore attraverso sistemi molto semplici. Eliza funziona, ma Ł basato essenzialmente su un trucco: d apparenza di capire, ma non capisce, in realt , assolutamente niente, in nessun senso di parola. I programmi degli anni Settanta hanno incominciato, viceversa, a porsi il preoblema di come rappresentare effettivamente in un calcolatore le conoscenze che sono alla base della elaborazione dei concetti degli essere umani. La situazione, per quanto riguardain particolare i programmi di comprensione del linguaggio naturale, Ł molto cambiata dai tempi di Eliza .
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 121.2 INTRODUZIONE AGLI AGENTI La teoria degli agenti, rappresenta una delle interessanti teorie proposte nell ambito degli studi riguardanti l intelligenza artificiale, la quale studia il tentativo di riprodurre il comportamento umano all interno di entit software. La definizione esatta di agente ha impegnato non pochi ricercatori del settore, dando corso ad un dibattito non ancora concluso. Esistono, infatti, varie definizioni, Russel e Norving nel 1995, hanno definito gli agenti come: Entit capaci di percepire e agire in maniera razionale, ovvero di eseguire compiti in modo giusto puntando alla massimizzazione della propria misura di prestazione, sulla base delle prove fornite da qualsiasi conoscenza predefinita o acquisita. Gli agenti sono, quindi, enit computazionali (programmi, robot ecc ) in grado di agire in modo autonomo, prelevando informazioni dall ambiente in cui si trovano, ed agendo secondo la propria base di conoscenze allo scopo di scambiare informazioni con altri agenti o con esseri umani e di prendere l iniziativa per soddifare i propri obiettivi. Oggi abbiamo una serie infinita di aggettivi che precedono la parola agent tra i piø ricorrenti si hanno: search agents, report agents, presentation agents, navigation agents, role-playing agents, testing agents, packaging agents, management agents. Secondo quanto appena detto, dunque, una definizione corretta di agente pu essere la seguente:
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 13Si definisce agente software un componente software o/e hardware in grado di compiere azioni al fine di esguire un compito o un desiderio del proprio utente (padrone). [1.1] 1.3 PROPRIETA DEGLI AGENTI Di seguito si elencheranno le propriet fondamentali che possono appartenere e caratterizzare un agente software. Autonomia: ossia la capacit di un gruppo di operare senza direttive esterne, nel senso che esso Ł in grado di effettuare le proprie scelte e prendere la proprie decisioni senza l intetvento di un entit sovra ordinata. Reattivit : ovvero la capacit di reagire alle modifiche dell ambiente che li circonda, ogni qual volta tali cambiamenti influenzino il loro obiettivo. Abilit sociale: ossia la capacit di comunicare con gli altri agenti, magari cooperando nel perseguimento degli obiettivi comuni, scambiando informazioni e conoscenze. Proattivit : s intende la capacit di un agente di prendere iniziative non solo in base agli stimoli esterni ma anche in base ai propri obiettivi interni (goal). Veridicit : un agente non deve comunicare false informazioni. Apprendimento: questo Ł sinonimo di adattivit e consiste nella possibilit per un agente di cambiare un comportamento in base all esperienza precedente.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 14Mobilit : l agente ha la capacit di variare gli interlocutori della comunicazione e di spostarsi in ambienti diversi da quello di partenza. Benevolenza: l agente fa sempre ci che gli si comanda. Flessibilit : si ottiene se le azioni che l agente deve compiere non sono rigidamente specificate. Carattere: implica l implementazione di aspetti relativi alla personalit come le emozioni unite ad un aspetto credibile (spesso reso con l utilizzo di personaggi atti a simboleggiare l agente stesso). Vitalit : Ł la capacit di sopravvivenza di un agente, nel senso che, l agente pu riuscire a risolvere situazioni anomale che lo porterebbero, altrimenti, in uno stato d instabilit che comprometterebbe la sua persistenza. Queste, naturalmente, non rappresentano tutte le caratteristiche che un agente pu possedere, tanto meno non Ł obbiligatorio che un agente le possieda tutte per poter essere definito tale, molto importante infatti Ł stabilire quali delle sue azioni devono essere compiute per il raggiungimento, nel miglior modo possibile, dell obiettivo preposto. In base a quelle che sono le motivazioni, gli obiettivi e le caratteristiche, gli agenti possono essere classificati in differenti tipologie.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 151.4 TIPOLOGIE DI AGENTI 1.4.1 Collaborative Agents Questi agenti hanno caratteristiche di autonomia, cooperazione e proattivit allo scopo di eseguyire i compiti per i loro proprietari . Alcune ricerche di intelligenza artificiale stanno fornando definizioni piø rigorose di tali agenti, queste ricerche rientrano nell ambito degli agenti BDI (Belief Desire - Intention), dove si considera ci che l agente crede (belief), ci che l agente desidera (desire) e ci che intende fare (intentions). Il loro utilizzo eŁ spesso necassario quando un solo agente non riesce a risolvere dei problemi perchØ troppo grandi e complessi. Degli agenti BDI si parler piø approfonditamente in seguito. 1.4.2 Interface Agents Sono degli agenti software proattivi che gestiscono indirettamente le interfacce uomo-macchina. Questa tipologia di agente Ł quindi caratterizzato da autonomia e apprendimento. Sostanzialmente un agente interfaccia supporta e fornisce assistenza ad un utente che sta imparando ad usare una particolare applicazione. L agente controlla le azioni effettuate dall utente con l interfaccia e suggerisce modi migliori per compierle. Si potrebbe considerare questo tipo di agente come un personal assistant autonomo che copera con l utente per effettuare determinati compiti. La cooperazione con altri agenti Ł limitata a chiedere consigli e non consiste in un interazione continua e protratta nel tempo, come accade per gli agenti di collaborazione.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 16Con l uso degli agenti interfaccia ci si vuole spostare da una metafora a manipolazione diretta ad una che delega alcuni dei compiti (proattivit e aiuto) all agente di interfaccia, utile soprattutto nelle interazioni con utenti partecipanti. L uso di un agente di questo tipo ha diversi vantaggi: innanzitutto riduce il lavoro per l utente finale, inoltre l agente pu adattare lo svolgimento dei compiti ad esso affidati alle preferenze dell utente e al contesto. 1.4.3 Mobile Agents Gli agenti mobili sono processi software capaci di navigare in una rete WAN, come in Web, interagendo con gli host e tornando indietro dopo aver eseguito il servizio richiesto dall utente. Ci sono sette buone ragioni per usare gli agenti mobili: riducono il carico della rete; superano la latenza della rete; incapsulano i protocolli di comunicazione; lavorano autonomamente e in modo asincrono; si adattano dinamicamente, sono eterogenei; sono robusti e tolleranti agli errori; Questi agenti sono anche autonomi e cooperano, pur essendo diversi dagli agenti collaborativi. 1.4.4 Information / Internet Agents L agente informativo ha il compito di gestire, manipolare e collegare informazioni di molte risorse distribuite. In pratica l agente di informazione dovrebbe avere la capacit di saper dove cercare, come trovare e come unire le informazioni secondo le preferenze dell utente.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 17L agente informativo pu essere statico o mobile, cooperativo o non, pu apprendere ma potrebbe anche non farlo. Pur sembrado molto simile agli agenti di interfaccia e di collaborazione, effettivamente Ł diverso a questi poichØ gli informatin agents gestiscono informazioni provenienti da sorgenti dati posizionate, ad esempio, su internet e quindi i criteri e le regole da applicare sono molto diverse da quelle applicate negli esempi gi visti. Mentre i collaborative e interface agents si classificano in base a cosa essi sono, valutando gli attributi che possiedono, gli information agent sono classificati in ase a cosa fanno. 1.4.5 Reactive Agents Gli agenti reattivi sono una speciale categoria di agente, che non hanno un modello interno dell ambiente simbolico, ma agiscono / rispondono in una modalit stimolo / risposta per presentare lo stato dell ambiente nel quale sono immersi. Tra le caratteristiche fondamentali per questo tipo di agente sono: dimamismo:le azioni non sono pianificate nella fase di setup dell agente; operazioni a basso livello:questo tipo di agente tende ad usare informazoni che pervengono, ad esempio, da sensori e non da modelli simbolici. La caratteristica piø importante di questi agenti Ł che sono relativamente semplici e interagiscono con altri agenti in modo elementare. Essi sono generalmente visti come insiemi di moduli che operano in modo autonomo e che sono responsabili per compiti specifici come percezione, computazione ecc. altre caratteristiche positive sono rappresentate dal fatto che i sistemi che utilizzano questo tipo di agenti sono robusti e tolleranti. Inoltre, rispetto agli odierni sistemi dell intelligenza artificiale, questi sistemi hanno maggiore flessibilit e adattivit rispetto alle varie situazioni che si possono verificare.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 181.4.6 Hybrid Agents Gli agenti ibridisonola combinazione di due o piø filosofie di agente in un unico agente. Come per i reactive agents, ci sono ancora poche architetture di agenti ibridi. Moltissimi sono stati i progressi nell ambito degli agenti software e tanti sono anche i punti aperti, con difficolt tanto di carattere tecnico, per tutti i possibili cambiamenti che sarebbe possibile effettuare su ogni classe di agente, quanto di carattere sociale perchØ, cos come per l ubiquitus computing, si affaccia una nuova visione di interazione tra l uomo e la macchina. Continua, estesa a piø ambienti, adattata (al contesto e all utente). Un primo problema che deve essere considerato quando si sviluppano sistemi basati su agenti Ł quello della privacy, infatti risulta problematico assicurare che gli agenti riescano a tutelare la privacy dell utente quando agisce per suo conto. Tanti sono i problemi derivanti dalle questioni legali: se un agente fornisce consigli sbagliati ad altri agenti che operano per conto di altre persone, Ł difficile stabilire a chi pu essere attribuita la responsabilit , alla societ che ha realizzato l agente, all utente per cui l agente opera, ad entrambi. E ancora, ci sono numerose altre questioni da considerare. Gli agenti devono essere capaci di riconoscersi, dovrebbero contenere la frequenza di richieste a determinati server, limitare le ricerche ai server appropriati, dividere le informazioni con altri agenti. Infine gli agenti non dovrebbero modificare in modo distruttivo l ambiente, dovrebbero limitare il consumo di risorse nel caso siano scarse.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 191.5 PANORAMICA SUI MULTI AGENT SYSTEM Un Multi Agent System MAS Ł una comunit sociale di entit interdipendenti che agiscono individualmente. Queste entit , che sono gli agenti, esistono ed operano in qualche ambiente che tipicamente Ł sia computazionale che fisico. Per sistema aperto si intende un sistema la cui struttura Ł in grado di cambiare dinamicamente. Ci Ł reso possibile dal fatto che la sue componenti non sono definite in fase di progettazione. Un esempio di sistema di questo tipo Ł Internet. Gli attuali sistemi sono per la maggioparte mono-agente, ossia formati da un unico agente, e tale approccio non risulta essere piø efficace quando il dominio applicativo, nel quale il sistema si inquadra, Ł particolarmente ampio e complesso, questo per i seguenti motivi: Spesso un sistema mono-agente non Ł in possesso di tutte le informazioni e le risorse necessarie per risolvere un particolare problema. Non ci sono sistemi cosiddetti globali, ossia capaci di soddisfare tutte le richieste dell utente. Un sistema mono-agente, possedendo una componente centralizzata per la gestione delle informazioni, inibisce o complica notevolmente la condivisione delle informazioni con altre piattaforme. Un sistema centralizzato offre prestazioni scadenti quando le azioni che l agente svolge sono asincrone, o quando non Ł possibile stabilire una sequenza nelle informazioni da trattare e nei comportamenti da eseguire, e ci accade quando Ł possibile attivare piø comportamenti nello stesso momento. Un sistema mono-agente non Ł in grado di garantire sempre la modularit , soprattutto in domini applicativi ampi.
CAPITOLO 1 AGENTI SOFTWARE SVILUPPO DI UN AGENTE BDI IN JADEX 20Questt ultima carenza Ł uno dei punti di forza di un sistema multi agente (MAS Multi Agent System) che pu essere cos definito: una rete di problem solver debolmente collegati che interagiscono tra loro con lo scopo di risolvere problemi, garantendo comunque, a ciascun agente, quella caratteristica di autonomia che permette la fornitura di servizi legati al proprio dominio applicativo . [1.1] Nella definizione di sistema multi agente Ł evidente il concetto di modularit : tale decomposizione, infatti, permette a ciascun agente di applicare il paradigma piø appropriato per risolvere il particolare problema per il quale Ł stato progettato, si pu ad esempio, immaginare un sistema che inglobi nella propria comunit un agente che svolga funzioni di user-modeling, un altro che invece si preoccupi di presentare le informazioni e i risultati adattati al contestoin cui l utente si trova in quel momento. Se inoltre, la risoluzione di un particolare problema richiede l intervento di piø agenti, Ł possibile definire protocolli di negoziazioneche permettano agli stessi di scambiarsi le informazioni di cui necessitano, e quindi avere la possibilit di sfruttare fonti di dati distribuite. Realizzare un sistema multi-agente significa, inoltre garantire: Efficienza computazionale: derivante dalla possibilit di eseguire parallelamente piø processi. Estensibilit : in modo che il numero di agenti che compongono la comunit possa essere allargato, allo scopo di fornire nuovi servizi. Affidabilit : derivante dal fatto che la comunit degli agenti che collaborano tra di loro non Ł definita a priori e quindi eventuali failure di un agente si superano cercando altri agenti dello stesso tipo. Manutenibilit : localizzando la manutanzione del singolo agente che ne ha bisogno.