Capitolo 1
Introduzione
I modelli di computazione basati sugli Agenti sono oggi utilizzati prevalente-
mente in ambiti molto specici. Il pi u classico e il pi u conosciuto e senz’altro
quello dell’Intelligenza Articiale, che fa uso dei cosiddetti ‘Agenti Intelli-
genti’, ovvero entit a che emulano comportamenti deniti appunto intelli-
genti. Tuttavia, i concetti su cui si fonda questo approccio Agent Oriented
si rivelano estremamente utili ed ecaci per realizzare sistemi software gen-
eral purpose, orendo un livello di astrazione che rappresenta un’evoluzione
di quello ad Oggetti.
Vi sono infatti caratteristiche che permettono di gestire agilmente i pro-
blemi pi u rilevanti nello sviluppo odierno del software, quali concorrenza,
distribuzione, autonomia e adattabilit a.
Nel corso di questo elaborato spiegher o prima di tutto cosa signica il
termine Agente nell’accezione informatica e conseguentemente introdurr o
i concetti di Ambiente e Sistema Multi-Agente; dopodich e mostrer o i
princ pi su cui si fonda questo paradigma di programmazione.
Il funzionamento degli Agenti e basato concettualmente su modelli di com-
portamento umano enunciati dai loso, con l’aggiunta di schemi di ragio-
namento volti a conferire propriet a decisionali.
Da un punto di vista pratico analizzer o la piattaforma orientata agli Agenti
chiamata JaCa, la quale integra la tecnologia Jason (linguaggio di program-
mazione ad Agenti, estensione di AgentSpeak) unitamente a CArtAgO (per
realizzare gli Ambienti).
Un esempio concreto fornir a un caso di studio per evidenziare i concetti
1
2 CAPITOLO 1. INTRODUZIONE
precedentemente deniti, e per mostrare altres le potenzialit a della tec-
nologia utilizzata.
La seconda parte di questo elaborato tratter a l’argomento dei Design
Pattern. Occorre studiare le origini di questo movimento e capire quali
sono le esigenze che spingono ad utilizzare questi schemi di progettazione,
per poi applicare questo concetto alla Programmazione Orientata agli Agenti.
Tali strumenti ingegneristici sono stati ideati appositamente per il mondo
Object Oriented: ci chiediamo quindi se abbia senso modicare i Pettern
esistenti al ne tradurli in schemi adatti ai Sistemi Multi-Agente, oppure se
la soluzione migliore risulti quella di creare una nuova tipologia di Design
Pattern che sia in grado di sfruttare le caratteristiche presenti nel paradig-
ma oggetto della Tesi.
Anche in questo caso, l’analisi del Model-View-Controller, la compo-
sizione di Pattern che permette di creare sistemi dotati di interfaccia graca,
consente di osservare direttamente le problematiche incontrate e le soluzioni
adottate per realizzare Design Pattern Agent Oriented.
2
Capitolo 2
Agent Oriented Programming
L’Agent Oriented Programming e stato introdotto per denotare un frame-
work computazionale basato sugli Agenti.
Partiamo quindi dalla denizione di Agente, il suo signicato, proseguen-
do nel descriverne le caratteristiche principali, che lo rendono un’astrazione
unica nell’ambito informatico; enunciamo inne gli strumenti necessari al
funzionamento di queste entit a.
Ogni Agente esiste, e collocato e lavora in un environment, che rap-
presenta l’ambiente a lui circostante. Non si tratta semplicemente di un
componente secondario, ma e parte essenziale del sistema che realizza il
software nale. Anche in questo caso occorre descrivere i punti cardine di
questo concetto.
Negli scenari reali, solitamente un solo agente non e suciente ad adem-
piere a tutte le mansioni che occorrono; si adottano quindi molteplici entit a
situate nello stesso ambiente, che cooperano e interagiscono in maniera con-
corrente: nascono cos i sistemi Multi-Agente.
Una volta esaminati questi aspetti essenziali, potremo analizzare il mo-
dello su cui si basa la programmazione orientata agli Agenti, evidenziandone
i punti di forza che consentono di arontare in maniera eciente le proble-
matiche del moderno sviluppo dei Sistemi Software.
Per gli argomenti trattati in seguito, si faccia riferimento ai primi due
capitoli di [3], a [9], a [7] e inne a [12].
3
4 CAPITOLO 2. AGENT ORIENTED PROGRAMMING
Figura 2.1: Denizione del termine agente [2]
2.1 Essere un Agente
Un Agente e un sistema reattivo che esibisce un certo grado di autonomia.
Autonomia e un termine di origine greca, che deriva dalle parole aut os (se
stesso) e nom os (legge); nel nostro caso questo corrisponde alla possibilit a
di poter adare al nostro sistema un determinato compito, ed esso deter-
mina da solo il modo migliore di espletare tale mansione. Chiamiamo tali
sistemi \agenti" perch e li possiamo pensare come esseri attivi, inseriti in
un particolare contesto per soddisfare le nostre esigenze, senza il bisogno
di istruirli dettagliatamente, ma lasciandogli l’arbitrio su come lavorare al
meglio.
Gli Agenti sono situati in un Ambiente: sono dotati di sensori che
permettono di percepire le propriet a di questo ambiente, e possiedono un
insieme di azioni che possono eseguire, mediante eettuatori o attuatori,
al ne di modicare l’ambiente circostante.
Il punto essenziale che qualica gli agenti consiste nel fatto che essi possono
decidere cosa fare, che azioni eseguire, in relazione alle percezioni ricevute
dall’ambiente.
Possiamo gi a intuire che essi si discostano notevolmente dall’astrazione che
gli Oggetti orono in ambito informatico. L’Oggetto ha una natura pas-
siva, rappresenta appunto una modellazione astratta di un oggetto (reale)
inanimato, che non agisce di propria iniziativa.
Vi sono inoltre una serie di propriet a che caratterizzano gli Agenti:
Autonomia : l’autonomia e un concetto che racchiude in s e un ampio
ventaglio di possibilit a; il grado minimo di questa caratteristica si ha
4
CAPITOLO 2. AGENT ORIENTED PROGRAMMING 5
quando non vi e nessuna iniziativa nell’agire, una totale passivit a. Un
esempio comune sono le applicazioni da ucio, come i programmi di
scrittura o i fogli di calcolo, che sono totalmente sotto il nostro control-
lo, ogni cosa avviene perch e noi la facciamo avvenire. Il grado pi u alto
di autonomia e quello posseduto dagli esseri umani, che possiedono il
libero arbitrio sulle proprie azioni.
Gli Agenti si piazzano tra questi due estremi, in quanto sono i pro-
grammatori a delegare a queste entit a dei compiti ben precisi, unita-
mente a una serie di possibili piani per indirizzare il modo di agire,
che avr a lo scopo di assecondare le nostre richieste. Questo garantisce
che gli Agenti lavorino in maniera autonoma, senza alcun bisogno di
intervenire per manovrare il loro operato, che sar a frutto di decisioni
indipendenti.
Reattivi a : questa capacit a permette di reagire ai cambiamenti che avven-
gono nell’ambiente. Nella vita di tutti i giorni possono avvenire im-
previsti, eventi improvvisi che rovinano i nostri piani e a cui dobbiamo
fare fronte per cercare di raggiungere il nostro scopo. Lo stesso avviene
per gli Agenti.
Proattivit a : signica essere abile di esibire un comportamento volto al
raggiungimento degli obiettivi. E’ la perseveranza con cui si cerca
di adempiere al proprio compito. Tale caratteristica rende gli Agenti
dinamici, e questa e un’ulteriore dierenza con il mondo degli Oggetti.
Interattivit a : un Agente e sempre situato in un ambiente. E’ in grado
di percepire le sue caratteristiche, cos come e in grado di inuenzarle
mediante azioni performate da attuatori. Interagire con l’ambiente e
quindi un requisito essenziale per ogni agente. Oltre a questo, come
abbiamo gi a accennato, nei sistemi reali e comune fare riferimento a
sistemi costituiti da una moltitudine di agenti, che collaborano assieme
per realizzare le funzionalit a del sistema. Occorre dunque che essi
siano in grado di comunicare, e pi u in generale, di interagire gli uni
con gli altri.
Impredicibilit a : gli Agenti possono mostrare un certo gradi di impredici-
bilit a, inteso come comportamento non deterministico. Le dinamiche
che si sviluppano all’interno dell’ambiente spesso portano l’Agente a
5
6 CAPITOLO 2. AGENT ORIENTED PROGRAMMING
dover prendere delle decisioni su come e meglio agire, e il risultato che
emerge non e denibile a priori, da un punto di vista esterno. Il ragio-
namento si basa sulle percezioni acquisite, sulle ‘credenze’ (i pensieri)
possedute dall’Agente e dal modo stesso di ragionare; ogni scelta pu o
portare quindi a risposte diverse.
Abilit a sociali : nei sistemi Multi-Agente occorre organizzare il lavoro;
gli Agenti devono essere in grado di cooperare, eseguire attivit a in
maniera coordinata, al ne di raggiungere gli obiettivi da noi ssati.
E’ qui che entra in gioco la capacit a di interagire sopra citata.
L’Agente pu o essere pensato come un lavoratore umano: viene assun-
to per un motivo preciso, che cercher a di perseguire costantemente, no al
suo adempimento. Per realizzare tale compito deve prendere decisioni in
autonomia, grazie al proprio intelletto, e spesso accade che sia necessario
completare altre mansioni, oltre a quelle prestabilite, necessarie ai ni della
buona riuscita del lavoro. Nel caso succeda qualche imprevisto, deve essere
in grado di elaborare una soluzione ecace.
Di solito, sono necessari diversi lavoratori per eseguire compiti complessi, e
vi e quindi la necessit a di collaborare, comunicare e interagire rispettando
la gerarchia sociale vigente.
In questa metafora, noi siamo i datori di lavoro, che scelgono le gure ne-
cessarie a realizzare le funzionalit a del sistema, organizzano la struttura e
adano gli incarichi ai vari impiegati, lasciando loro il compito di decidere
il modo migliore di lavorare, fornendo solamente indicazioni di base.
Quanto sopra descritto mostra chiaramente che gli Agenti possiedono
propriet a che risultano estremamente utili nell’arontare la progettazione e
realizzazione dei moderni sistemi software, molto pi u di quanto l’approccio
basato sugli Oggetti sia in grado di orire. Al giorno d’oggi i dispositivi com-
putazionali sono ovunque, e soprattutto, sono interconnessi attraverso varie
reti, e in generale attraverso Internet. Spesso l’esigenza e quella di realizza-
re Sistemi Distribuiti, decentralizzati, e le interazioni assumono un aspetto
fondamentale. Persino i pi u moderni calcolatori sono dotati di pi u Core,
che permettono l’esecuzione veramente contemporanea di diversi processi.
Ogni Agente possiede un proprio usso di controllo, che si riassume in una
concreta dimostrazione della propria autonomia; sotto questo aspetto si pos-
sono quindi sfruttare adeguatamente le architetture attuali dei calcolatori,
6
CAPITOLO 2. AGENT ORIENTED PROGRAMMING 7
al contrario dei sistemi basati sugli Oggetti, che nativamente possiedono un
unico usso di controllo che si sussegue da un Oggetto all’altro.
2.2 L’importanza dell’ambiente
Un aspetto centrale riguardante il mondo degli Agenti e che questi sono
collocati in un Ambiente.
Questo e il luogo in cui viene eseguito il lavoro degli Agenti; nella prati-
ca pu o trattarsi di un sito del mondo reale, o anche di un vero e proprio
ambiente software realizzato appositamente, oppure lo stesso Internet pu o
fungere da ambiente.
L’idea che sta alla base di questo concetto riguarda l’edicio, la struttura
nella quale si lavora, che e in grado di fornire agli impiegati gli strumenti e i
mezzi a loro necessari per compiere le speciche mansioni. Inoltre, permette
di gestire le risorse che rappresentano il risultato del lavoro compiuto.
Tuttavia, l’astrazione di Agente non risulta la pi u adatta per realizzare
l’Ambiente, perch e quest’ultimo e di natura passiva e ore strumenti che
non incapsulano alcuna forma di comportamento attivo. L’approccio Ob-
ject Oriented soddisfa appieno i bisogni descritti.
Possiamo quindi aermare che la nozione di Ambiente rappresenta un con-
cetto di prima-classe che denisce il contesto nel quale gli Agenti operano
al ne di raggiungere i propri obiettivi.
Abbiamo gi a detto che gli Agenti sono in grado di percepire l’ambiente
grazie ai sensori, e soprattutto che essi sono in grado di agire su di esso
al ne di modicarlo e manipolarlo, mediante attuatori. Questo aspetto si
riferisce alle risorse presenti nell’ambiente.
Per essere utilizzate dagli Agenti, le risorse devono orire un insieme di ope-
razioni che incapsulano le funzionalit a richieste. Queste fanno parte delle
azioni che gli Agenti sono in grado di performare. E’ dunque evidente che
l’insieme di azioni che un Agente e in grado di eseguire dipende da quali
sono le risorse a disposizione all’interno dell’ambiente.
Queste entit a attive e autonome sono inoltre capaci di creare e rimuovere le
risorse, cos come in un luogo di lavoro un dipendente pu o sostituire i suoi
strumenti, o comprarne di nuovi.
7
8 CAPITOLO 2. AGENT ORIENTED PROGRAMMING
Le capacit a speculari rispetto alle azioni sono quelle che consistono nel-
l’osservare l’ambiente circostante, al ne di percepire le gli eventi che ac-
cadono e le propriet a delle risorse. Le ‘propriet a osservabili’ rappresentano
lo stato che le risorse ambientali mostrano agli Agenti; e possibile modi-
care tali caratteristiche attraverso l’esecuzione di operazioni apposite sulle
speciche risorse.
Gli ‘eventi osservabili’ sono invece quei segnali generati dall’esecuzione delle
operazioni, che indicano in che condizioni si trovano le risorse.
Inne, possiamo notare che gli Agenti non possiedono un controllo com-
pleto sull’ambiente, e pi u in generale su tutte le risorse ivi presenti. Non
si tratta di un problema, anzi, questa scelta e frutto di alcune osservazioni:
primo, non e realistico assumere che in un sistema complesso esista un’en-
tit a che ne conosca ogni aspetto, e secondo, non e nemmeno necessario.
Nella realt a i sistemi sono costituiti da un insieme, da un gruppo di Agenti,
ognuno dei quali svolge compiti precisi, per i quali e stato concepito. Ognu-
no di essi controller a e utilizzer a solamente le risorse di cui ha bisogno per
adempiere ai propri doveri, senza l’onere di avere qualche responsabilit a su
strumenti a lui non necessari.
Ci o non signica che ogni Agente fa uso di strumenti strettamente ‘person-
ali’, al contrario li condivide (concorrentemente) con i suoi colleghi.
In questo modo, i Sistemi Multi-Agente agiscono in armonia all’interno
dell’ambiente.
2.3 Sistemi Multi-Agente
I sistemi Multi-Agente sono composti da una moltitudine di Agenti si-
tuati in un ambiente condiviso, organizzati attraverso una relazione sociale
precisa. Ogni entit a ha una propria ‘sfera di inuenza’, ovvero una porzione
di ambiente che e in grado di controllare. Sovente accade che una parte di
ambiente sia controllata da pi u di un Agente, occorrono quindi meccanismi
di concorrenza per gestire il lavoro.
Inne, per completare il quadro generale, possiamo aermare che gli Agenti
sono a conoscenza del fatto che altri Agenti lavorano nello stesso ambiente,
anche se non e necessaria una conoscenza globale dell’organizzazione.
8
CAPITOLO 2. AGENT ORIENTED PROGRAMMING 9
Nella costruzione di sistemi software complessi si va spesso in contro a
problemi di varia natura, che grazie all’ingegnerizzazione e possibile risolvere
attraverso metodi ecaci ed eleganti. Queste soluzioni si basano sullo studio
accurato dei fattori comuni alle problematiche gi a arontate e risolte in
precedenza.
Per gestire i sistemi software, la dicolt a spesso risiede nella gerarchia del
problema: quanti e quali sottosistemi compongono l’insieme, che relazioni
vigono tra di essi e come si evolvono, con che velocit a e quale forma di
interazione occorre per amalgamare i componenti.
Queste osservazioni portano ad adottare tre principali mezzi per costruire
sistemi complessi:
Decomposizione : la tecnica per eccellenza nell’arontare sde impegna-
tive, consiste nel suddividere il problema in sottoproblemi pi u piccoli,
quindi pi u facilmente risolvibili, anche singolarmente, per poi aggre-
gare tutto secondo un ordine prestabilito.
Questa metodologia si applica agevolmente ai Sistemi Multi-Agente,
in quanto ogni singola entit a pu o essere delegata alla risoluzione di
una sottoparte del problema.
Astrazione : il meccanismo che porta a denire un modello semplicato
del sistema, volto a enfatizzare alcuni dettagli o propriet a di mag-
giore interesse, tralasciandone altre; questo si traduce nell’adare so-
lamente i compiti pi u importanti agli Agenti, oppure stabilendo le
opportune priorit a negli obiettivi.
Organizzazione : questo processo denisce e gestisce le relazioni vigenti
tra le diverse sottoentit a risolutrici del problema. E’ possibile rag-
gruppare i componenti basilari in insiemi, che saranno percepiti come
una singola entit a da un punto di vista di alto livello, grazie al quale
si regoleranno poi le relazioni tra le varie macro-entit a.
I sistemi Multi-Agente necessitano di una organizzazione sociale accu-
rata, che rispecchia quella presente nelle societ a umane: possono es-
serci Agenti che dirigono il lavoro delle varie aree del sistema, oppure
gruppi di Agenti che svolgono mansioni distinte, ma che collaborano
assieme per ottenere un risultato comune. Le organizzazioni sociali
possono persino evolversi nel corso del tempo.
9
10 CAPITOLO 2. AGENT ORIENTED PROGRAMMING
Riassumendo quanto sopra detto, adottare un approccio ad Agenti nel-
l’ingegneria del software consiste nel decomporre il problema in diverse com-
ponenti autonome che agiscono e interagiscono al ne di raggiungere gli
obiettivi del problema.
I sistemi Multi-Agente possono essere quindi sfruttati per realizzare ogni
tipo di sistema software, perch e racchiudono intrinsecamente caratteristi-
che adatte a risolvere i problemi attuali dell’informatica. La distribuzione
e ormai una necessit a, i sistemi computazionali sono pervasivi, e possibile
trovarli ovunque, e la potenza delle reti di telecomunicazioni permette di
sfruttare appieno le funzionalit a di Internet. L’approccio orientato agli
Oggetti e diventato ormai obsoleto, ore astrazioni superate dalla visione
ad Agenti, che comunque racchiudono al loro interno tecnologie ad Oggetti,
mediante il concetto di Ambiente. Cos come l’uomo crea organizzazioni
di lavoratori per realizzare ogni sorta di cosa, e possibile gestire il software
attraverso gli Agenti per simulare un comportamento quanto pi u possibile
vicino alla realt a umana.
2.4 Il modello di Programmazione
Il concetto di Agente e ispirato dalla capacit a dell’uomo di agire liberamente
al ne di raggiungere gli obiettivi che si pone. Un linguaggio di program-
mazione deve catturare gli aspetti essenziali che stanno alla base del modello
scelto, fornendo validi strumenti che permettono di realizzare ogni sorta di
sistema software.
Un modello utilizzato in alcuni linguaggi ad Agenti si basa sulla teoria
del comportamento umano sviluppata dai loso e chiamata belief-desire-
intention (BDI). Un’idea di particolare rilievo in questo contesto aerma
che i programmi creati possiedono uno ‘stato mentale’, ed e a questo che
si riferiscono i concetti di belief (credenza), desire (desiderio) e intention
(intenzione).
Ecco una loro breve descrizione:
Belief : sono le informazioni che l’Agente possiede riguardo al mondo.
Non e necessario che esse siano vere, rappresentano il frutto di una
percezione o di un ragionamento.
Desire : si tratta di ci o che l’Agente e interessato a fare, ci o che vuole o
vorrebbe raggiungere. Avere un desiderio pu o inuenzare il compor-
10