Agenti Software Stefania Costantini Dip. Di Informatica, Univ. degli Studi di L’Aquila Cosa sono gli Agenti? • Webster Dictionary: “one who is authorised to act for or in place of another” • Gli agenti software sono programmi che agiscono per conto di un utente per realizzare compiti specifici, o perseguire obiettivi assegnati. Da dove vengono gli agenti software? • La ricerca sugli agenti è stata iniziata molti anni fa: Carl Hewitt’s actor model (1977) – “a self-contained, interactive and concurrently-executing object, with some encapsulated internal state and which could respond to messages from other similar objects” Definizioni in AI • The MuBot Agent: “The term agent is used to represent two orthogonal concepts. The first is the agent’s ability for autonomous execution. The second is the ability to perform domain oriented reasoning.” Osservazione: autonomia e conoscenza del dominio sono caratteristiche essenziali degli agenti. The Maes Agent: “Autonomous agents are computational systems that inhabit some complex dynamic environment, sense and act autonomously in this environment, and by doing so realise a set of goals or tasks for which they are designed.” Osservazione: gli agenti percepiscono il loro ambiente, sul quale possono agire per perseguire obiettivi. Definizioni in AI • The IBM Agent: “Intelligent agents are software entities that carry out some set of operations on behalf of a user or another program with some degree of independence or autonomy, and in doing so, employ some knowledge or representation of the user’s goals or desires.” • The Wooldridge & Jennings Agent: “ … a system that enjoys the following properties: autonomy social ability reactivity pro-activeness” Perché un agente non è un semplice programma? • Un agente è autonomo: una volta attivato svolge dei compiti (versus dati risultati dei programmi tradizionali). • Un agente è reattivo: percepisce (in qualche misura) l’ambiente in cui opera, reagisce alle percezioni, può effettuare azioni che modificano l’ambiente. Perché un agente non è un oggetto? • Un oggetto “dorme” finchè qualcuno non invoca un metodo. • Un agente è sempre attivo, reattivo e proattivo, ossia capace di operare di propria iniziativa. Sistemi multi-agente • Un sistema multi-agente è composto di vari agenti in grado di comunicare fra di loro – In cooperazione – In competizione – Per offrire/ricevere servizi Perché gli agenti non sono processi? • Gli agenti somigliano a processi concorrenti. • Il “paradigma” però è diverso, ossia gli ambienti per lo sviluppo di agenti supportano esplicitamente proattività, reattività e forme complesse di comunicazione. A cosa servono gli agenti? Un enorme quantità di informazioni è ormai on-line. E’ difficile per un utente gestire direttamente tutte le attività. • Ricerche efficienti su web • Personalizzazione dell’interfaccia • Wrapping, ossia interfaccia interattiva flessibile per applicazioni tradizionali (legacy systems) Caratteristiche degli agenti • • • • • • • • • Autonomi Reattivi Proattivi Socialmente abili (in sistemi multi-agente) Trasparenti Robusti Centrati sull’utente Mobili Adattivi Classi di Applicazioni esistenti degli Agenti 1. 2. 3. 4. 5. 6. 7. 8. Assistenti Personali Gestione di Reti e servizi su Rete Sicurezza delle Reti Gestione dell’informazione su Internet Applicazioni mobili eCommerce Interfacce uomo-macchina Robotica Implementazione • Linguaggi: – – – – C/C++ Java Perl/CGI Linguaggi logici • Architetture – Open-Agent Architecture, Impact, Jade, ecc. Cos’è un’architettura • Linguaggio + struttura di massima dell’applicazione • Es. Open-agent architecture – Meta-agent che mantiene i goals – Agente Facilitator che distribuisce i subgoals agli agenti in grado di eseguirli – Agenti esecutori, con capacità specifiche. Approcci analoghi • Distributed Objects – COM (MS Windows DNA) – COM+ • CORBA • JavaBeans/EJBs Agenti in Logica Computazionale • Linguaggi dichiarativi: permettono di specificare in maniera modulare i vari aspetti degli agenti. • Facilità di sviluppo, modificabilità. • Semantica formale. • Intelligenza… Agenti in Logica Computazionale • Nuovi linguaggi logici per unire: – Ragionamento – Reattività – Proattività Cosa deve fare un agente logico? • Ragionare, reagire, prendere iniziative, agire • Pianificare • Essere capace di “commonsense reasoning” • Gestire conoscenza incerta • Imparare Cosa mostreremo in questo Corso? • Come realizzare tutti i punti menzionati • Linguaggi e formalismi: programmazione logica – Dali (per costruire gli agenti) – Answer Set Programming (per pianificare e gestire l’incertezza) DALI • E’ simile al Prolog, ma: – Prevede e gestisce eventi ed azioni – E’ capace di considerare lo stesso evento sotto vari punti di vista (percepire, reagire, ricordare) – Ha un alto livello di proattività Answer Set Programming • Fornisce soluzioni ai problemi come “Insiemi risposta” alternativi. • Permette di gestire l’incertezza o l’esistenza di soluzioni multiple. • Permette di implementare facilmente forme sofisticate di pianificazione. Prerequisiti • Un minimo di logica del 1^ ordine • Datalog • Prolog