Università degli Studi di Parma Sistemi ad agenti Agostino Poggi IA - Agenti Cosa è un agente? Un agente è un sistema computazionale che può vivere in ambienti dinamici e complessi; ha dei sensi che gli permettono di percepire l’ambiente e, in particolare, di interagire con i suoi simili e con gli umani; agisce autonomamente soddisfando i suoi obiettivi e eseguendo i compiti per cui è stato progettato. Agostino Poggi IA - Agenti Perché servono gli agenti? Il computer non è più uno strumento per specialisti, ma uno strumento di massa, infatti: • molte operazioni di uso comune sono sempre più basate sul computer o potrebbero essere migliorate con l’uso del computer, ma: – molti utenti non sono in grado di sfruttare i vantaggi del computer; – molti utenti non sono in grado di utilizzare un computer; – molti utenti vogliono utilizzare liberamente un computer. Agostino Poggi IA - Agenti Perché servono gli agenti? • l’informazione è ormai la risorsa più importa per ogni tipo di attività, i computer sono sicuramente lo strumento più adatto per accedervi, ma l’operazione non è semplice per: – la quantità di informazione accessibile; – la dinamicità del inserimento e della modifica dell’informazione; – la strutturazione eterogenea e spesso molto soggettiva dell’informazione. Agostino Poggi IA - Agenti Perché servono gli agenti? • Esistono migliaia di prodotti software che forniscono una grande varietà di informazioni e servizi. • il lavoro di un utente è spesso basato sull’uso combinato di più prodotti. • questo lavoro può essere facilitato se questi prodotti sono in grado di interoperare cioè di scambiarsi informazioni e/o servizi, ma ciò e quasi sempre impossibile per l’eterogeneità dei prodotti dovuta a: – – – – sono sviluppati da persone diverse; sono sviluppati in periodi diversi; sono sviluppati con strumenti diversi; sono spesso modificati. Agostino Poggi IA - Agenti Perché servono gli agenti? Gli agenti possono semplificare l’interazione dell’utente con il computer e quindi facilitarne la diffusione in tutti i settori di applicazione. In particolare, gli agenti possono: • fornire una guida e un aiuto nell’esecuzione delle operazioni; • adeguare il sistema al gusto, all’abilità dell’utente; • eseguire automaticamente sequenze di operazioni ripetitive; • nascondere l’eterogeneità dell’informazione e dei prodotti. Agostino Poggi IA - Agenti Attività miliari : Agent0 • Agent0 può considerarsi il primo linguaggio ad agenti sviluppato da Shoham nei primi anni `90. • I maggiori contributi di questo lavoro sono: – l’introduzione del concetto di programmazione orientata agli agenti; – l’introduzione di un primo linguaggio di comunicazione per gli agenti; – l’uso delle speech acts come base di questo linguaggio di comunicazione. Agostino Poggi IA - Agenti Attività miliari: DARPA Knowledge Sharing Effort • È un progetto sponsorizzato dall’agenzia americana per i progetti di ricerca avanzata il cui scopo è quello di sviluppare tecnologie per facilitare la condivisione e lo scambio di conoscenza tra sistemi anche eterogenei. • I maggiori contributi di questo lavoro sono: – la realizzazione di un linguaggio completo per la comunicazione ad agenti, KQML (Knowledge Query Manipulation Language); – la realizzazione di un formato per lo scambio di conoscenza tra sistemi eterogenei KIF (Knowledge Interchange Format); – il loro utilizzo combinato in sistemi basati su agenti. Agostino Poggi IA - Agenti Attività miliari: Telescript • È il primo linguaggio di programmazione commerciale basato sugli agenti sviluppato dalla General Magic nel 1994. • I maggiori contributi di questo lavoro oltre a quello di essere il primo linguaggio commerciale sono: – l’uso della mobilità del codice in alternativa alle remote procedure call; – lo studio e la presentazione di alcune soluzioni per la gestione della sicurezza in sistemi ad agenti distribuiti. Agostino Poggi IA - Agenti Proprietà di un agente • Un sistema computazionale per essere considerato un agente deve avere le seguenti proprietà: – – – – autonomia reattività intraprendenza. abilità sociale – adattabilità – mobilità Agostino Poggi IA - Agenti Proprietà di un agente • Un agente è autonomo, cioè ha controllo diretto sulle proprie azioni e sul suo stato interno. • Un agente è reattivo, cioè è capace di percepire l’ambiente e di reagire per tempo ai suoi stimoli. • Un agente è intraprendente, cioè è capace di mostrare comportamenti mirati alla soddisfazione dei suoi obiettivi e di prendere l’iniziativa. Agostino Poggi IA - Agenti Proprietà di un agente • Un agente ha abilità sociale, cioè è capace di interagire con degli altri agenti per coordinare il loro operato e per negoziare risorse e attività. • Il coordinamento permette: – la risoluzione dei conflitti fra gli agenti; – la realizzazione di compiti comuni. • La negoziazione permette: – la risoluzione dei conflitti fra gli agenti; – lo scambio di risorse e attività. • L’abilità sociale di un agente è possibile grazie a: – uso di un linguaggio di comunicazione ad agente comune; – uso di strategie di coordinamento e negoziazione. Agostino Poggi IA - Agenti Linguaggio di comunicazione ad agente • Un linguaggio per la comunicazione ad agenti dovrebbe avere le seguenti proprietà: – esprimere i diversi atti linguistici (informare, richiedere, …); – essere indipendente dal protocollo di comunicazione utilizzato; – essere indifferente al contenuto e al formato dell’informazione; – essere comprensibile da tutti gli altri agenti. Comunicazione Messaggio Contenuto Agostino Poggi IA - Agenti Linguaggio di comunicazione ad agente: FIPA ACL ACL message Begin message structure Communicative act type Message parameter (inform :sender agent1 :receiver hpl-auction-server :content (price (bid good02) 150) :in-reply-to round-4 :reply-with bid04 :language sl :ontology hpl-auction ) Message content expression Parameter expression Agostino Poggi IA - Agenti Linguaggio di comunicazione ad agente: FIPA ACL • Un agente che comprende il linguaggio ACL potrà provare a soddisfare un messaggio solo se: – capisce il linguaggio del contenuto; – capisce l’ontologia a cui si riferisce il contenuto. • Tuttavia: – degli agenti detti mediator o facilitator possono mediare l’interazione tra agenti che operano con linguaggi del contenuto diversi; – degli agenti detti ontology server possono: » offrire le ontologie necessarie a soddisfare un messaggio; » trasformare le componenti di una ontologia nelle componenti di un’altra ontologia. Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione • Servono a fondere gli agenti in un gruppo di individui operanti in modo coerente: – per evitare il caos durante eventuali conflitti di interesse tra due o più agenti; – usufruire delle diverse abilità degli agenti; – sincronizzare le attività degli agenti. • L’uso di una o di un altra strategia dipende principalmente dal tipo di organizzazione: – – – – gerarchica; ad autorità strutturata; a mercato; a comunità. Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione: pianificazione multi-agente Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione: pianificazione multi-agente • È una organizzazione completamente master-slave: – il master: » definisce i diversi piani parziali; » invia i piani a un insieme di agenti (slave) che possono eseguire questi piani; – ogni slave: » esegue il suo piani; » invia il risultato; – il master: » compone i risultati. Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione: contrattazione Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione: contrattazione • È una organizzazione parzialmente master-slave • Ad esempio in una rete di contrattazione: – un banditore annuncia un compito ad un insieme di possibili contraenti; – ogni possibile contraente può candidarsi presentando anche le sue credenziali; – il banditore sceglie un contraente; – il contraente può accettare o rifiutare il compito; – il banditore può licenziare il contraente; – il contraente può inviare un rapporto sull’esecuzione del compito. Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione: risoluzione distribuita dei problemi Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione: risoluzione distribuita dei problemi • È una organizzazione completamente democratica. • Ad esempio con il metodo dei piani parziali globali: – ogni agente: » definisce un piano locale; » invia il piano locale agli altri agenti coinvolti nel piano; » riceve i piani locali degli altri agenti; » costruisce un piano parziale globale; – e ciclicamente: » invia il piano parziale globale agli altri agenti; » riceve i piani parziali globali degli altri agenti; » modifica il suo piano parziale globale; – finché il piano inviato non è uguale ai ricevuti. Agostino Poggi IA - Agenti Strategie di coordinamento e negoziazione: un esempio Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: Scelta dell’architetture • Esistono tre tipi di architetture: – deliberative; – reattive; – ibride. • Una architettura deliberata richiede che l’agente abbia un esplicito modello simbolico del mondo. L’agente agisce tramite ragionamento logico. • Una architettura reattiva evita la necessità che l’agente abbia un esplicito modello simbolico del mondo e un sistema di ragionamento. L’agente agisce combinando le routine attivate in risposta agli stimoli esterni. Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: l’architettura BDI • Una architettura BDI si basa su tre componenti: – Belief: informazioni che l’agente ha sul mondo; – Desire: obiettivi che l’agente è interessato a raggiugere; – Intention: obiettivi che l’agente può correntemente perseguire. • Un agente BDI: – continua ad acquisire informazioni dal mondo esterno; – ragiona su quali obiettivi poter puntare; – esegue le azioni atte a raggiungerle. Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: scelta del linguaggio • Un linguaggio di programmazione è solo uno strumento per realizzare un agente. • Ma: – un agente può inseguire diversi obiettivi contemporaneamente; – la comunicazione tra agenti avviene attraverso lo scambio di messaggi; – non esiste conoscenza in comune se non quella scambiata con i messaggi. • Un agente è una estensione di un oggetto. Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: scelta del linguaggio Componenti Processo computazionale Oggetto stato e metodi Tipi di messaggi passaggio di messaggi e esecuzione metodi di risposta richiesta di un servizio Parallelismo Costrizione sui messaggi Multi-thread precondizioni Agente convinzioni, impegni, capacità, scelte, ... richiesta e offerta di servizi, invio di informazioni, promesse, ... diversi comportamenti attivi consistenza, onestà, ... Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: seguire uno standard • Per poter interoperare con sistemi sviluppati da altre aziende o da altre organizzazioni, è necessario seguire degli standard. • Esistono varie organizzazioni interessate alla definizione di standard per le tecnologie ad agenti: – Agent Society; – Foundation for Intelligent Physical Agents; – Internet Engineering Task Force; – Object Management Group; – WWW Consortium. Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: lo standard FIPA • La Foundation for Intelligent Physical Agents (FIPA) è una associazione internazionale non-profit di aziende il cui scopo è produrre le specifiche per una tecnologia ad agenti che possa divenire uno standard. • In particolare, FIPA è in corso di specificare: – – – – – – – Agent management ; Agent communication language; Agent/software integration; Human/Agent Interaction; Agent Security; Agent Mobility; Ontology Service. Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: la piattaforma FIPA Software Agent Agent Platform Agent Managem ent System Directory Facilitator ACC Internal Platform Message Transport Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: JADE • Ambiente di sviluppo di sistemi multi-agenti in Java le cui proprietà sono: – distribuzione degli agenti di un sistema su diversi calcolatori; – uso di agenti leggeri multi-tasking; – sviluppo di piattaforme conformi allo standard FIPA; – registrazione degli agenti trasparente al programmatore; – offre interfacce grafiche per la gestione e lo sviluppo dei sistemi; – uso di IIOP per connettersi ad altri sistemi standard FIPA. Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: JADE Agent container ACC Agent Management System Agent Agent container Agent Directory Facilitator Communication thread Agent Agent Management System Agent Communication thread Agent container Agent Agent Agent Management System Agent Communication thread Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: JADE AGENT CONTAINER (FE) Agent Container Table Agent Global Descriptor Table Communication thread AGENT CONTAINER AGENT CONTAINER Agent1 event Agent2 Agent3 Local cache event Communication thread Java RMI Communication thread Agostino Poggi IA - Agenti Realizzazione di sistemi ad agenti: JADE Agostino Poggi IA - Agenti Applicazioni Gli agenti sono già utilizzati per un vasto insieme di applicazioni: • per il recupero e il filtraggio delle informazioni; • per la gestione di agende, meeting; • per il mercato elettronico; • per la gestione di servizi on demand; • per la gestione di reti; • per l’automazione di processi. Agostino Poggi IA - Agenti Applicazioni: un sistema per video on demand Agostino Poggi IA - Agenti Applicazioni: un sistema per video on demand Web Agent container GA ACC Agent Management System CA Agent container UPA Directory Facilitator Communication thread Agent Management System IA Communication thread Agent container Agent Management System IA Communication thread Agostino Poggi IA - Agenti Applicazioni: un sistema per il controllo di braccio robotico Agent container MMI ACC Agent Management System Communication thread P Agent container PE Directory Facilitator SDI D Agent Management System S Communication thread Agostino Poggi