Università degli Studi di Parma Sistemi ad agenti Agostino Poggi
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.
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.
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.
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.
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.
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.
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.
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.
Proprietà di un agente Un sistema computazionale per essere considerato un agente deve avere le seguenti proprietà: autonomia reattività intraprendenza. abilità sociale adattabilità mobilità
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.
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: 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.
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. Messaggio Contenuto Comunicazione
Linguaggio di comunicazione ad agente: FIPA ACL
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.
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à.
Strategie di coordinamento e negoziazione: pianificazione multi-agente
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; compone i risultati.
Strategie di coordinamento e negoziazione: contrattazione
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.
Strategie di coordinamento e negoziazione: risoluzione distribuita dei problemi
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.
Strategie di coordinamento e negoziazione: un esempio
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.
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.
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.
Realizzazione di sistemi ad agenti: scelta del linguaggio
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.
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.
Realizzazione di sistemi ad agenti: la piattaforma FIPA
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.
Realizzazione di sistemi ad agenti: JADE
Realizzazione di sistemi ad agenti: JADE
Realizzazione di sistemi ad agenti: JADE
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.
Applicazioni: un sistema per video on demand
Applicazioni: un sistema per video on demand
Applicazioni: un sistema per il controllo di braccio robotico