Che Cos'è?
AgentService è un framework per la sviluppo di applicazioni basate su sistemi multi-agente.
AgentService è stato sviluppato utilizzando come piattaforma la Common Language Infrastructure (CLI) di cui l'architettura .NET è un'implementazione.
AgentService è offre un supporto completo per la realizzazione di applicazioni orientate agli agenti:
AgentService offre inoltre una serie di estensioni al linguaggio di programmazione C# atte a semplificare lo sviluppo delle applicazioni con AgentService e fornire una prospettiva maggiormente orientata agli agenti anche a livello di codice sorgente.
Nota Bene: questa pagina descrive gli aspetti principali di questo progetto di ricerca. Per informazioni più dettagliate è possibile consultare il sito ufficiale del progetto
Le persone che partecipano allo sviluppo del framework sono:
Agenti
Secondo la definizione di Michael Wooldridge "un agente software è un sistema informatico, collocato in un determinato ambiente, che per raggiungere i propri obiettivi è in grado di compiere azioni autonome che vanno ad influire ed a modificare l'ambiente stesso".
Il concetto di agente nasce inizialmente nell'ambito del settore dell'intelligenza artificiale distribuita (DAI) come evoluzione del concetto di actor ovvero oggetto attivo, successivamente si è evoluto ed ha beneficiato anche dei contributi di altro importante settore dell'informatica l'ingegneria del software.
Attualmente non è possibile dare una definizione unica ed universalmente accettata di agente sebbene quella precedentemente data mette in luce quali siano gli aspetti più di questo modello computazionale.
Un agente è di fatto un componente software (programma, demone software, od altro) che svolge differenti attività in maniera autonoma, perseguendo degli obbiettivi.
A differenza degli oggetti, gli agenti controllano non solo il loro stato ma anche il loro comportamento.
Tale aspetto fornisce mette in risalto alcune delle caratteritiche che normalmente sono attribuite ad un agente:
Il concetto di agente è un'astrazione di alto livello che permette di modellare sistemi dinamici e fortemente complessi in cui le interazioni tra i diversi componenti nel tempo cambiano.
In tale ambito viene esaltata un'altra caratteristica di tale modello che è l'abilità sociale, ovvero la capacità di interagire con i propri pari secondo meccanismi si competizione, cooperazione, e negoziazione.
Tutte queste caratteristiche rendono gli agenti degli elementi sufficientemente sofisticati su cui costruire complesse e realistiche applicazioni.
Sistemi Multi-Agente
Il modello ad agenti risulta maggiormente efficace quando si organizzano gli agenti in comunità dando vita a quello che viene definito sistema multi-agente (MAS - Multi Agent System):
il comportamento aggregato che nasce dall'interazione degli agenti nella comunità definisce le funzionalità del sistema che si intende modellare.
Un sistema multi-agente è un sistema computazionale concorrente e distributito.
Il sistema multi-agente costituisce l'ambiente all'interno del quale gli agenti svolgono le loro attività e fornisce ad essi un'infrastruttura necessaria per il loro ciclo di vita nonch´ servizi di alto livello per rendere efficace l'interazione tra gli agenti.
Struttura interna di un Agente
![]() |
AgentService modella un agente come un'entità software la cui base di conoscenza è definita da un insieme di dati chiamati Knowledge e le cui attività sono descritte da task concorrenti che prendono il nome di Behaviour objects. L'insieme delle Knowledge utilizzate da un agente ne definiscono il suo stato, mentre il suo comportamento è descritto dall'insieme dei Behaviour che sono in esecuzione. La figura sulla destra mostra come sia organizzato internamente un agente. Una Knowledge è di fatto simile ad un record del linguaggio Pascal od ad una struct del linguaggio C, sebbene possa essere caratterizzata anche da metodi è principalmente pensara per esporre delle proprietà (queste possono fare riferimento ai tipi base della CLI od a classi anche definibili dal programatore). I Behaviour sono a tutti gli effetti delle classi generiche definibili dall'utente i quali presentano un metodo particolare che costituisce l'entry point della loro esecuzione. A tutti gli effetti possono essere considerati dei task autonomi. I Behaviour di un agente possono condividere le Knowledge che ne definiscono lo stato e l'ambiente di run-time garantisce l'accesso esclusivo alle Knowledge, in modo relativamente trasparente. |
Schedulazione di un Agente
Dal punto di vista implementativo ad ogni istanza di agente viene associato un differente Application Domain che garantisce l'esecuzione in maniera autonoma del codice in esso contenuto.
L'Application Domain è una struttura nuova introdotta con la CLI ed è assimilabile ad un processo leggero in quanto ha un proprio spazio di memoria, in esso è possibile creare in esso più thread di esecuzione ed associarvi differenti permessi di esecuzione, ma il suo setup è più leggero di quello di un processo.
L'esecuzione di un agente all'interno di un Application Domain ne garantisce l'autonomia e l'isolamento dagli altri agenti: l'unico modo per mantenere dei riferimenti ad oggetti in Application Domain differenti e tramite l'impiego di tecniche di comunicazione esplicite quali il Remoting.
La Piattaforma ad Agenti
La piattaforma ad agenti è una delle componenti principali del framework AgentService.
La piattaforma costituisce l'infrastruttura per la realizzazione del sistema multi-agente.
La piattaforma deinisce l'ambiente all'interno del quale gli agenti svolgono la loro attività e fornisce loro diversi servizi:
La figura che segue mostra l'architettura interna della piattaforma:
I Moduli
La piattaforma realizza molte delle proprie funzionalità utilizzando l'astrazione del modulo.
Attraverso i moduli la piattaforma customizza i propri servizi per i diversi scenari applicativi ed estende le proprie funzionalità.
Il concetto di modulo pervade l'intera architettura della piattaforma che utilizza tale astrazione sia per modellare le funzionalità base (core) che quelle addizionali.
I moduli si dividono in due classi:
L'architettura modulare ha permesso uno sviluppo più efficace della piattaforma, ne rende migliore il mantenimento e la sua evoluzione.
Progetti Dipendenti da AgentService
AgentService è la base su cui sono state sviluppate altre applicazioni ad agenti.