Dove si inserisce l'interfaccia utente in un sistema Multi Agent

2

tl; dr

Come rappresenterei la GUI come agenti in un sistema multi agente.

Sto imparando di più sui sistemi multi agente.

Mi piacciono i concetti di tali sistemi, ha molto senso e mi sembra molto utile quando voglio creare un grande sistema ideato con parti più piccole per il Web.

Quindi, ho creato una classe base Agent , insegnato ai miei agenti a negoziare e comunicare, a creare un ambiente in cui collocare tali elementi.

Quindi, in un semplice tentativo di app ho:

  • Diversi agenti "InfoBroker" che gestiscono le comunicazioni con i servizi server, che desiderano ottenere informazioni sul mondo e disposti a condividerli in base a determinati termini (tengono un'asta se ciò è importante).
  • Alcuni agenti che coordinano la comunicazione tra i miei servizi sul lato client (anche gli agenti "InfoBroker" credo).
  • Alcuni agenti di lavoro, che hanno un obiettivo semplice nel loro ambiente, che eseguono calcoli e eseguono (molto di base) ragionamenti mezzi-fini nell'ambiente. Sono il mio "lavoro manuale" nell'app.
  • Alcune altre cose specifiche per la mia applicazione.

È tutto fantastico, ma non ho idea di dove si collochi la GUI in tutto ciò? Ho bisogno di mostrare le informazioni sul mio sistema all'utente, la GUI non è una piccola parte (si consideri agenti che parlano al DOM in un'app web). Come rappresenterebbe la GUI come agente in un sistema multi agente?

Nota: l'ho implementato in JavaScript, ma questo mi sembra più agnostico per la lingua.

    
posta Benjamin Gruenbaum 11.05.2013 - 21:01
fonte

1 risposta

2

Dal mio punto di vista sembrano esserci 3 modi principali per integrare la GUI in questo ambiente multi-agente. Questi dipendono in gran parte dallo scopo e dalla portata dell'interfaccia utente:

  • Gui come sistema / servizio

    Dato che hai già detto che hai agenti in grado di comunicare con esterno servizi, la GUI potrebbe essere semplicemente uno di questi servizi a cui gli agenti forniscono informazioni e, se necessario, prelevano i loro input per completare un lavoro. Il Gui non è coinvolto nel calcolo, che è utile in quanto la presentazione del lavoro non può interferire con il lavoro effettivo degli agenti. L'interazione è limitata alla comunicazione con gli agenti. D'altra parte sa solo quali agenti sono disposti a condividere e quando, questo potrebbe restringere la visione del sistema. Un altro inconveniente è che il Gui diventerebbe piuttosto reattivo, comportandosi più come un buffer I / O per il sistema di una parte integrante di esso.

  • Gui come agente

    Il Gui potrebbe avere i propri agenti che parlano direttamente con altri agenti. Nella stessa logica dell'esistente InfoBroker, i Gui-agenti potrebbero competere per i dati (ad esempio le aste sopra menzionate). Ciò consentirebbe al Gui di investigare ulteriormente e mostrare lo stato del lavoro compiuto. Darebbe all'utente un modo per essere proattivo e sentirsi più in controllo e aggiornato. I parametri e la logica quando e come le informazioni dovrebbero essere mostrate all'utente sono distinte da ciò che il lavoro effettivo dovrebbe essere compiuto.

    Soprattutto quando si ha a che fare con servizi esterni con latenza elevata, un agente può solo riportare all'interfaccia utente una volta terminato il lavoro. O dovrebbe sapere come comportarsi mentre il lavoro non è completo. Inoltre, la GUI potrebbe essere parte integrante dell'ambiente dell'agente. Utilizzando il ragionamento orientato all'obiettivo, i dati potrebbero essere elaborati da agenti diversi finché non si adatta al formato richiesto da un agente Gui.

  • Monitor (a.k.a. Petri-dish)

    In questo modo sembra più adatto quando è richiesta un'osservazione diretta dell'intero ambiente. Ogni agente e l'ambiente hanno componenti Gui che consentono la manipolazione di ciascuna parte del sistema direttamente e possono visualizzare lo stato nel suo complesso. La registrazione viene in mente aggregando tutti gli output in una vista globale in ogni momento. Inizialmente ho pensato a questo come a una vista dall'alto, ma più ci penso, sembra una visione interna, in cui l'utente è libero di colpire e spingere.

Nulla impedisce che questi concetti vengano usati insieme. Alla fine tutto dipende dal livello di interazione richiesto.

    
risposta data 17.12.2013 - 23:52
fonte

Leggi altre domande sui tag