380 likes | 521 Views
Università degli Studi di Parma. Sistemi ad agenti Agostino Poggi. Cosa è un agente?.
E N D
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: • 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.
Comunicazione Messaggio Contenuto 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.
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; • il master: • compone i risultati.
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.
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: 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: 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.
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 il controllo di braccio robotico