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
Scarica

Agenti - Stefania Costantini