Vai al contenuto

Sistema multiagente

Da Wikipedia, l'enciclopedia libera.

Unsistema multiagenteo (sistema ad agenti multipli) è un insieme diagentisituati in un certoambienteedinteragentitra loro mediante una opportunaorganizzazione.Un agente è cioè un'entità caratterizzata dal fatto di essere, almeno parzialmente,autonoma,sia essa unprogrammainformatico, unrobot,un essere umano, e così via.

Oggetto di ricerche da lunga data inintelligenza artificiale,i sistemi ad agenti multipli costituiscono un'interessante tipologia di modellazione disocietà,e hanno a questo riguardo vasti campi d'applicazione, che si estendono fino allescienze umaneesociali(economia,sociologia,etc.).

Origine ed aspetti tecnici

[modifica|modifica wikitesto]

I sistemi multiagente possono essere visti come crocevia di diverse discipline:

I cinque problemi dei sistemi multiagente

[modifica|modifica wikitesto]

Si possono rilevare cinque principali problemi nei confronti della creazione di sistemi multiagente.

  • In primo luogo, il problema dell'azione: come può un insieme di agenti agire simultaneamente in un ambiente frammentato, e come interagisce tale ambiente in risposta agli agenti? Le questioni qui sottintese sono, tra le altre, quella della rappresentazione dell'ambiente per mezzo degli agenti, dellacollaborazionetra gli agenti, e dellapianificazionedell'attività di una molteplicità d'agenti.
  • Inoltre, è da considerare il problema dell'agente e della sua relazione col mondo esterno, la quale è rappresentata dalmodello cognitivodi cui dispone l'agente. Ogni singolo individuo in una società costituita da molteplici agenti deve essere in grado di mettere in opera le azioni più rispondenti ai suoi obiettivi. Tale attitudine alladecisioneè legata ad unostato mentaleche riflette lepercezioni,le rappresentazioni, le convinzioni ed un certo numero di parametri "psichici" (desideri,tendenze...) dell'agente. Il problema in questione copre anche la nozione deivincolidell'agente nei confronti di un agente terzo.
  • I sistemi ad agenti multipli necessitano altresì dello studio della natura delle interazioni, come fonte di opportunità, da una parte, e di vincoli dall'altra. Il problema dell'interazione si interessa alle modalità di interazione (qualelinguaggio?quale supporto?), all'analisi ed alla concezione delle forme d'interazione tra agenti. Le nozioni dicollaborazionee dicooperazione(considerata come collaborazione + coordinamento delle azioni + risoluzione dei conflitti) sono in questo campo questioni fondamentali. Se si applicano le mere conoscenze dei sistemi a singolo agente a quelli multi agente si avranno degli agenti egoisti (self-interested) che non coopereranno in alcun modo, dunque l'obiettivo del sistema sarà raggiunto in minima parte.
  • Di seguito può richiamarsi il problema dell'adattamento,in termini di adattamento individuale oapprendimentoda una parte, e adattamento collettivo oevoluzionedall'altra parte.
  • Infine, rimane da discutere la questione della realizzazione effettiva e dell'implementazione dei sistemi multiagente, tramite la strutturazione deilinguaggi di programmazionein più tipologie, che vanno da un linguaggio di tipo L5, o linguaggio di formalizzazione e specifica, ad un linguaggio di tipo L1, che è quello dell'implementazione effettiva. Tra le due classi, si trovano i linguaggi per la comunicazione tra agenti, la descrizione delle leggi dell'ambiente e la rappresentazione delle conoscenze.

Architettura dei sistemi multiagente

[modifica|modifica wikitesto]

Con riferimento ai cinque problemi precedenti, è possibile delineare gli elementi dell'architettura d'un sistema ad agenti multipli come segue.

  • Gli agenti devono essere dotati di svariati sistemi di decisione e pianificazione. Laricerca operativa,o teoria delle decisioni, è una disciplina completamente dedita allo studio di questo soggetto. Nella categoria delle interazioni con l'ambiente, un altro problema ricorrente dei sistemi ad agenti è quello delpathfinding(insieme al suo algoritmo più conosciuto, l'algoritmo A*).
  • Gli agenti necessitano inoltre d'un modello cognitivo: anche qui esistono diversi modelli, tra cui uno dei più classici è ilmodello BDI(Beliefs-Desires-Intentions,cioèConvinzioni-Desideri-Intenzioni). Esso considera da una parte l'insieme delle credenze (Beliefs) dell'agente sull'ambiente in cui si trova ad operare, che sono il risultato delle sue conoscenze e delle sue percezioni, e dall'altra parte un insieme di obiettivi (Desires). Intersecando questi due insiemi, si ottiene un nuovo insieme di intenzioni (Intentions), che in seguito possono tradursi direttamente in azioni.
  • Ancora, gli agenti devono altresì essere forniti di un sistema dicomunicazione.Molti linguaggi specializzati hanno visto la luce a questo scopo: ilKnowledge Query and Manipulation Language(KQML), e più recentemente lostandardFIPA-ACL(ACL sta perAgent Communication Language) creato dallaFoundation for Intelligent Physical AgentsFIPA.Tale standard è fondato in particolare sullateoria degli atti linguistici,elaborata daJohn Searle.
  • Il problema dell'adattamento rappresenta un argomento spinoso, oggetto attualmente di numerose ricerche. Si potrebbe tuttavia citare l'esempio di alcuni virus, non soloinformaticima anchebiologici,capaci di adattarsi al loro ambiente per effetto dimutazioni.
  • Infine, l'implementazione effettiva di un sistema multiagente, se non fa parte, propriamente parlando, dell'architettura del sistema, merita di essere evocata attraverso l'esempio fornito dai numerosi linguaggi di programmazione sviluppati a scopo di ricerca nel settore dell'intelligenza artificiale.Si pensi in particolare al linguaggioLISP.

Categorie di agenti

[modifica|modifica wikitesto]

È possibile introdurre una classificazione degli agenti secondo due criteri: agenticognitivio reattivi da una parte, comportamentoteleonomicooriflessodall'altra.

La distinzione tra cognitivo e reattivo attiene essenzialmente alla rappresentazione del mondo di cui dispone l'agente. Se il singolo agente è dotato d'unarappresentazione simbolicadel mondo a partire dalla quale è in grado di formulare ragionamenti, si parlerà di agente cognitivo, mentre se non dispone che d'unarappresentazione subsimbolica,vale a dire limitata alle percezioni, si parlerà di agente reattivo. Tale distinzione corrisponde a due scuole di pensiero relative ai sistemi multiagente: la prima sostiene un approccio basato su insiemi di agenti "intelligenti"collaborativi, da una prospettiva più sociologica; la seconda studia la possibilità dell'emergenzad'un comportamento "intelligente" di un insieme d'agenti non intelligenti (come quello delleformichesimulato dalle cosiddetteant colony).

La seconda distinzione tra comportamento teleonomico o riflesso divide i comportamenti intenzionali (perseguire scopi espliciti) dai comportamenti legati a delle percezioni. Le tendenze degli agenti possono essere anche espresse esplicitamente all'interno degli agenti o al contrario provenire dall'ambiente. È possibile costruire una tabella che raggruppi i differenti tipi d'agente (compilata da Ferber, si veda la bibliografia):

Categorie di agenti
Agenti cognitivi Agenti reattivi
Comportamento teleonomico Agenti intenzionali Agenti impulsivi
Comportamento riflesso Agenti "modulari" Agenti tropici

Gli agenti cognitivi sono il più delle volteintenzionali,cioè hanno scopi prefissati che tentano di realizzare. Si possono pure trovare talvolta degli agenti dettimodularii quali, anche se possiedono una rappresentazione del lorouniverso,non hanno tuttavia degli scopi precisi. Tali agenti potrebbero servire ad esempio a rispondere alle interrogazioni avanzate da altri agenti su detto universo. Gli agenti reattivi possono a loro volta essere suddivisi in agentiimpulsivietropici.Un agente impulsivo avrà una missione ben determinata (per esempio, assicurarsi che un serbatoio resti sempre sufficientemente pieno) e si comporterà di conseguenza qualora percepisca che l'ambiente non risponde più allo scopo che gli è stato affidato (il livello del serbatoio è troppo basso). L'agente tropico, dal canto suo, reagisce solo allo stato locale dell'ambiente (c'è del fuoco, io fuggo). La fonte dellamotivazioneè nel primo caso interna (agenti impulsivi che hanno una "missione" ), nel secondo caso è legata esclusivamente all'ambiente.

Nel campo della ricerca

[modifica|modifica wikitesto]

Si distinguono generalmente tre tipi d'utilizzo: la simulazione di fenomeni complessi, la risoluzione di problemi, e la progettazione di programmi.

Si utilizzano i sistemi multiagente per simulare le interazioni esistenti tra agenti autonomi. Si cerca di determinare l'evoluzione del sistema al fine di prevederne l'organizzazione risultante. Per esempio, insociologia,si possono modellare i differenti agenti che compongono una certa comunità. Attraverso la messa a punto dei vincoli, si può cercare di comprendere quale sarà la combinazione più efficace per pervenire al risultato atteso (ad es., la costruzione d'un ponte). Il fattore importante è il comportamento dell'insieme, non certo il comportamento individuale. Le applicazioni esistenti hanno riguardato lafisica delle particelle(agente =particella elementare), lachimica(agente =molecola), labiologia cellulare(agente =cellula), l'etologia(agente =animale), la sociologia e l'etnologia(agente = essere umano). L'autonomia consente in questi casi di simulare il comportamento esatto di ogni entità.

L'intelligenza artificiale distribuitaè nata per risolvere i problemi di complessità dei grossi programmi monoblocco dell'intelligenza artificiale:l'esecuzione è pertanto non concentrata ma distribuita, ma il controllo rimane centralizzato. Al contrario, nei sistemi ad agenti multipli, ciascun agente possiede un controllo totale sul suo comportamento. Per risolvere un problema complesso, talvolta è in effetti più semplice concepire programmi relativamente piccoli (gli agenti) interagenti con un unico grosso programma monoblocco. L'autonomia permette al sistema di adattarsi dinamicamente ai cambiamenti imprevisti che intervengono nell'ambiente.

Allo stesso tempo, l'ingegneria del software si è evoluta in direzione di componenti sempre più autonomi. I sistemi ad agenti multipli possono essere visti come un raccordo traingegneria del softwareedintelligenza artificiale distribuita,con l'apporto rilevante deisistemi distribuiti.In rapporto ad unoggetto,un agente può prendere iniziative, può rifiutarsi di obbedire ad una richiesta, può spostarsi, etc.: l'autonomia consente al progettista di concentrarsi sul latoumanamente comprensibiledelsoftware.

La metafora dei videogiochi

[modifica|modifica wikitesto]

Si può rappresentare un sistema ad agenti multipli come una di quelle comunità virtuali che si trovano sempre più neivideogiochiattuali. Consideriamo l'esempio di un gioco che simuli la vita di una famiglia. Il sistema multiagente può essere decomposto secondo più dimensioni. In primo luogo, si avrà un ambiente con una sua metrica. Si può ritenere che esso consista della casa con giardino in cui vive la famiglia. Inoltre il sistema può disporre di un insieme di oggetti passivi sui quali gli agenti possono intervenire: si tratta di tutti gli oggetti che arredano la casa, ma anche dei generi alimentari. Ovviamente, un sistema multiagente è composto da agenti; questi ultimi, attivi ed autonomi, interagiscono col loroentourage(l'ambiente, gli oggetti e gli altri agenti), e corrispondono ai membri della famiglia (senza dimenticare il cane). Ancora, si mette a punto un insieme di relazioni tra oggetti ed agenti, il che definisce un'organizzazione. Si potranno ad esempio esprimere i legami familiari tra i diversi individui, ma anche delineare i rapporti diproprietà(quale oggetto appartiene a chi?). Infine, si integra nel sistema un insieme di operatori che permettono agli agenti di agire sugli oggetti o su altri agenti (il figlio può mangiare uno yogurt o portare a spasso il cane o parlare a sua sorella), e disensoriche consentono agli agenti di conoscere i mutamenti ambientali e degli altri agenti (lo yogurt è caduto in terra, papà mi ha chiesto di far uscire il cane). Ecco dunque cos'è che può chiamarsi sistema multiagente. In informatica, l'agente sarà un programma autonomo che possiede un insieme di conoscenze e agisce secondo regole proprie.

Tre opere, in lingua inglese, che si riferiscono all'argomento sono:

  • (EN) Michael Wooldridge,An Introduction to MultiAgent Systems,John Wiley & Sons,Inc., 2001,ISBN 0-471-49691-X.
  • (EN) Gerhard Weiss, a cura di,Multiagent Systems, A Modern Approach to Distributed Artificial Intelligence,MIT Press, 1999,ISBN 0-262-23203-0.
  • (EN) Jacques Ferber,Multi-Agent Systems: An Introduction to Artificial Intelligence,Addison-Wesley, 1999,ISBN 0-201-36048-9.

Un'altra opera, stavolta in francese, che è una buona introduzione (nonché un utile supporto alla redazione di quest'articolo), è la seguente:

  • (FR) Jacques Ferber,Les systèmes multi-agents: Vers une intelligence collective,InterEditions, 1995,ISBN 2-7296-0665-3.
Controllo di autoritàThesaurus BNCF63794·LCCN(EN)sh2009010910·GND(DE)4389058-1
 Portale Neuroscienze:accedi alle voci di Wikipedia che trattano di neuroscienze