2009-07-21 13 views
9

Provenendo da un background accademico in sistemi mutli-agent (sviluppato in Java utilizzando JADE) sono stato solo a conoscenza delle periferiche del paradigma della concorrenza degli attori. Ora che ho iniziato ad esplorare Scala, non ho potuto fare a meno di rimanere colpito dalle somiglianze tra gli approcci Agent e Actor.È ragionevole considerare attori altamente autonomi come agenti?

Sono molto tentato di utilizzare la libreria Actor di Scala per il mio prossimo progetto di ricerca, piuttosto che semplicemente chiamare le librerie JADE in quanto ciò mi costringerebbe ad approfondire la conoscenza del linguaggio. Inoltre, l'attenzione di JADE sulla definizione di ogni cosa in termini di comportamenti non è molto appropriata per il mio problema.

C'è qualcosa di fondamentalmente diverso tra un attore e un agente altamente autonomo che mi manca?

risposta

10

Sì, ci sono differenze. Per agenti molto semplici, attori e agenti potrebbero essere la stessa cosa. Tuttavia, per "agenti autonomi" uno, o, almeno, I, di solito assume qualcosa del tipo, per esempio, un modello di intenzione-desiderio-Belief, in cui l'agente modella internamente un'astrazione dell'ambiente in cui si trova, e gli agenti con cui interagisce, in modo che possa fare piani su come interagire con quell'ambiente per raggiungere i suoi obiettivi.

Mentre un attore può sicuramente avere tutto questo, un singolo agente potrebbe anche essere composto da più attori, agendo congiuntamente per gestire diverse parti del framework BDI. Un attore è, per tutti gli effetti, un'unità di pianificazione. Se i tuoi agenti sono essenzialmente lineari e a thread singolo, si adattano. Se eseguono parallelamente il lavoro internamente, desideri più attori per ciascun agente.

Quindi, cosa hanno in comune attori e agenti?

  • Entrambi comunicano trasmettendo messaggi.

  • Entrambi (di solito) hanno uno stato interno, anche se implicito nello stato di esecuzione.

  • Entrambi si aspettano che non condividano lo stato con altri attori/agenti.

  • Entrambi dovrebbero essere programmati indipendentemente da altri attori/agenti.

Che agenti hanno più degli attori?

  • Agenzia di solito seguono modelli che determinano il comportamento di un agente - come, ad esempio, BDI - e gli attori di solito non lo fanno. Gli agenti reattivi, tuttavia, sono simili agli attori in questo senso.

  • Gli agenti possono disporre di più di un'unità interna di pianificazione. Gli agenti che non lo sono, tuttavia, sono simili agli attori in questo senso.

Che attori hanno più degli agenti?

  • Nulla di ciò che posso pensare, sebbene gli attori di Scala possano condividere lo stato.
+1

Non sarei assolutamente d'accordo con l'equiparazione del BDI e degli agenti autonomi. BDI è semplicemente una possibile architettura per una classe di agenti.Esistono architetture di agenti con modelli ambientali espliciti che non sono BDI, ad es. agenti di riflesso in ambienti parzialmente osservabili Credo che la seconda parte della risposta abbia un valore. Un attore non è un agente nello stesso modo in cui un thread non è un agente. Tuttavia entrambi possono essere utilizzati al fine di realizzare l'obiettivo di creare un agente autonomo. Caso in questione, gli agenti di JADE si collocano in cima ai thread Java. Grazie per il tuo aiuto. – DuncanACoulter

+1

Ah, vedo che stavi aggiornando la tua risposta mentre stavo scrivendo il mio commento ... Penso che la tua nuova risposta risolva bene la mia domanda. – DuncanACoulter

+0

Scusa, non avevo intenzione di equiparare agenti autonomi con BDI. Intendevo solo usare BDI come esempio. Non sono del tutto sicuro di come riformulare la mia risposta, ma l'ho migliorata un po '. –