Lido

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Ricerca Agent Service

Agent Service

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:

  • un modello di agente molto flessibile basato sui concetti di comportamento e base di conoscenza
  • una ambiente di esecuzione degli agenti (Piattaforma ad Agenti) che costituisce anche l'infrastruttura per la realizzazione di sistemi multi-agente
  • una serie di tool per il controllo ed il mantenimento del sistema multi-agente
  • un'architettura fortemente modulare che permette una semplice estendibilità della piattaforma
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:

  • Alberto Grosso - Concetto originale e sviluppo dell'infrastruttura della piattaforma
  • Christian Vecchiola - Supporto al linguaggio, ed implementazione di alcuni moduli della piattaforma
  • Davide Anghinolfi - Realizzazione di applicazioni ad agenti per lo scheduling
  • Simone Belotti - Realizzazione dell'infrastruttura per la mobilità degli agenti
  • Davide Cipolla - Implementazione del compilatore per le estensioni al linguaggio
  • Antonio Boccalatte - Supporto accademico
  • Massimo Paolucci - Supporto teorico

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:

  • pro-attività - la capacità di prendere l'iniziativa
  • reattività - la capacità di reagire ai cambiamenti dell'ambiente in cui sono immersi
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:

  • infrastruttura per la messaggistica che permette agli agenti di comunicare
  • servizi di pagine gialle e pagine bianche per la localizzazione degli agenti
  • gestione automatica della persistenza degli agenti
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:

  1. moduli core: i moduli core implementano quei servizi senza i quali la piattaforma non può funzionare. Tali servizi includono:
    • la gestione dello storage
    • il sottosistema della persistenza
    • il sottosistema della messaggistica
    • il sottosistema del logging
  2. moduli addizionali: i moduli addizionali implementano quei servizi aggiuntivi che non sono richiesti per un'installazione base della piattaforma.
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.

 

RIcerca