Technologien, Architekturen, Plattformen
Prof. Dr. Stefan Bosse
Universität Koblenz - FB Informatik - Praktische Informatik
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) ::
Zusammenfassung der JAM Plattform und Anwendung im Mobilen Crowdsensing
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Motivation
Verteilte Datenverarbeitung bedeutet verteilte Kommunikation zwischen Prozessen
Traditionelle verteilte Netzwerke wie das Internet der Dinge (IoT) müssen mit einer Vielzahl von Kommunikationsprotokollen und Netzwerkstrukturen umgehen können → Stark heterogene Systeme
Datenrepräsentation ist eine weitere Hürde in solchen verteilten Systemen
Häufig HTTP basierte Klienten-Server Kommunikation (zentrale Serverinstanz)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Datengetriebene Kommunikation
Bellifemine, Developing multi-agent systems with a FIPA-compliant agent framework
Große Diversität an IoT Protokollen und Datenrepräsentation für die Kommunikation → nicht einheitlich
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agenten
Agenten besitzen eine Vielzahl von Fähigkeiten, die sie von klassischen Programmen unterscheiden - obwohl Agenten auch Programme sein können!
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agenten
Ein Agent in seiner Umgebung nimmt sensorische Eingaben aus der Umgebung auf und produziert Ausgabe-Aktionen, die ihn und die Umgebung beeinflussen.
Die Interaktion ist gewöhnlich fortlaufend und nicht-terminierend!
Einfachstes Agentenmodell
Beispiel
Umgebung: Raum in GebäudeSensor: Temperatur TAktor: HeizungVerhalten:(1) Temperatur zu niedrig ⟼ Heizung an(2) Temperatur angenehem ⟼ Heizung aus
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agenten und Weltumgebung
(Links) Interaktion eines Agenten mit der Umwelt: Perzeption, Aktion (Rechts) Lernender Agent (Reinforcement Agent)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: ATG Modell
Das Verhalten eines aktivitätsbasierten Agenten ist durch einen Agentenzustand gekennzeichnet, der durch Aktivitäten verändert wird.
Aktivitäten verarbeiten Wahrnehmungen, planen Aktionen und führen Aktionen aus, die den Steuerungs- und Datenzustand des Agenten ändern.
Aktivitäten und Übergänge zwischen Aktivitäten werden durch einen Aktivitätsübergangsgraphen (Activity Transition Graph, ATG) dargestellt.
Die Übergänge starten Aktivitäten in der Regel abhängig von der Auswertung von Agentendaten (Körpervariablen), die den Datenzustand des Agenten repräsentieren.
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: ATG Modell
(Links) Agentenverhalten, das von einem Aktivitätsübergangsgraphen vorgegeben ist, und die Interaktion mit der Umgebung, die durch Aktionen erfolgt, die in Aktivitäten ausgeführt werden (Rechts) Agentenmerkmale
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: ATG Modell
Ein Aktivitätsübergangsgraph, der mit Agentenklassen assoziiert ist, besteht aus einer Menge von Aktivitäten 𝔸 = {A1, A2, ..} und einer Menge von Übergängen 𝕋 = {T1 (C1), T2 (C2), ..}, die die Kanten des gerichteten Graphen darstellen.
Die Ausführung einer Aktivität, die selbst aus einer Folge von Aktionen und Berechnungen besteht, ist mit dem Erreichen eines Unterzieles oder das Erfüllen einer Voraussetzung verknüpft, um ein bestimmtes Ziel zu erreichen, z. B. Sensordatenverarbeitung und Verteilung von Informationen.
Normalerweise werden Agenten verwendet, um komplexe Aufgaben zu zerlegen basierend auf der Zerlegung durch MAS.
Agenten können ihr Verhalten basierend auf Lern- und Umgebungsänderungen oder durch Ausführen einer bestimmten Unteraufgabe mit nur einer Untermenge des ursprünglichen Agentenverhaltens ändern → Dynamische ATG.
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: ATG Modell
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: DATG Modell
Ein ATG beschreibt das vollständige Agentenverhalten.
Jedes Unterdiagramm und jeder Teil des ATG kann einem Unterklasseverhalten eines Agenten zugeordnet werden.
Daher führt das Modifizieren der Menge von Aktivitäten 𝔸 und Übergängen 𝕋 des ursprünglichen ATG zu mehreren Unter- und Oberverhaltensweisen, die Algorithmen implementieren, um verschiedene unterschiedliche Ziele zu erfüllen.
Die Rekonfiguration der Aktivitäten führt zu einer Menge von Aktivitätsmengen 𝔸* = {𝔸i ⊂ 𝔸, 𝔸j ⊂ 𝔸, 𝔸k ⊃ 𝔸, ..}, die von der ursprünglichen Menge 𝔸 abgeleitet sind, und die Modifikation oder Rekonfiguration von Übergängen 𝕋* = {𝕋1 ⊂ 𝕋, 𝕋2 ⊂ 𝕋, ..} ermöglicht die dynamische ATG-Zusammensetzung (Komposition) und Agentenunterklassifizierung zur Laufzeit,
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: DATG Modell
Dynamischer ATG: Transformation und Komposition
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Beispiel eines Agenten
ATG eines einfachen Umfrageagenten mit Unterklassen (master, requester, worker)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agentenklassen
Eine Agentenklasse beschreibt ein bestimmtes Verhalten eines Agenten mittels eines ATG und einer Menge von Körpervariablen.
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agentenklassen
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agentenklassen
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agentenklassen
Eine Agentenklasse ACi ist daher zunächst definiert durch das folgende Mengentupel:
ACi=⟨Ai,Ti,Vi,Pi⟩A={a1,a2,..,an}T={tij=tij(ai,aj,cond)|aicond−−→aj;i,j∈{1,2,..,n}}ai={i1,i2,..|iu∈ST}V={v1,v2,..,vm}P={p1,p2,..,pi}
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agentenklassen
Es gibt ein Multiagentensystem (MAS), das aus einer Reihe einzelner Agenten besteht (ag1, ag2, ..). Es gibt verschiedene Verhaltensweisen für Agenten, die als Klassen AC = {AC1, AC2, ..} bezeichnet werden. Ein Agent gehört zu einer dieser Klassen.
Jede Agentenklasse wird dann durch das erweiterte Tupel AC = <𝔸, 𝕋, 𝔽, 𝕊, ℍ, 𝕍, ℙ> angegeben.
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agentenklassen
In einer spezifischen Situation ist ein Agent agi an einen Netzwerkknoten Nm,n,o,.. (z.B. Mikrochip, Computer, virtueller Simulationsknoten) an einem eindeutigen räumlichen Ort (m, n, o, ..) gebunden und wird dort verarbeitet.
Es gibt eine Menge verschiedener Knoten N = {N1, N2, ..}, die z.B. in einem maschenartigen Netzwerk mit einer Nachbarverbindung (z.B. vier in einem zweidimensionalen Gitter) angeordnet sind. Die Knotenverbindung kann dynamisch sein und sich im Laufe der Zeit ändern. Die Knotennachbarn sind unterscheidbar.
Jeder Knoten ist in der Lage, eine Anzahl von Agenten ni(ACi) zu verarbeiten, die zu einer Agentenverhaltensklasse ACi gehören, und mindestens eine Teilmenge von AC' ⊂ AC zu unterstützen.
Ein Agent (oder zumindest sein Zustand) kann zu einem Nachbarknoten migrieren wo er weiter ausgeführt wird.
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agenteninterkation
Multiagentensystem interagieren miteinander, z.B. durch
Nachrichten
Signale
Semantischer (oder assoziativer) Geteilter Speicher, und synchronisiert ⇒ Tupelräume
Die Interaktion beeinflusst das Verhaltebn und somit den Aktivitätenfluss der Agente (Programmfluss)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume
Tupel-Räume stellen ein assoziiertes Shared-Memory-Modell dar, wobei die gemeinsam genutzten Daten als Objekte mit einer Reihe von Operationen betrachtet werden, die den Zugriff der Datenobjekte unterstützen
Tupel sind in Räumen organisiert, die als abstrakte Berechnungsumgebungen betrachtet werden können.
Ein Tupelraum verbindet verschiedene Programme, die verteilt werden können, wenn der Tupel-Space oder zumindest sein operativer Zugriff verteilt ist.
Das Tupelraum Organisations- und Zugangsmodell bietet generative Kommunikation, d.h. Datenobjekte können in einem Raum durch Prozesse mit einer Lebensdauer über das Ende des Erzeugungsprozesses hinaus gespeichert werden.
Ein bekanntes Tupelraum-Organisations- und Koordinationsparadigma ist Linda [GEL85].
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume
Ein Schnappschuss eines Tupelraumes mit Tupeln und Tupeloperationen
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume
Direkter Nachrichtenaustausch (a), z.B. durch Signale, im Vergleich zu generativer Kommunikation (b) und virtuelle verteilte Räume (c) durch mobile Prozesse (Agenten)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Datenmodell
Die Daten sind mit Tupeln organisiert.
Ein Tupel ist eine lose gekoppelte Verbindung einer beliebigen Anzahl von Werten beliebiger Art /Typ/
Ein Tupel ist ein Wert und sobald es in einem Tupelraum gespeichert ist, ist es persistent.
Tupeltypen ähneln den Datenstrukturtypen, sie sind jedoch dynamisch und können zur Laufzeit ohne statische Beschränkungen erstellt werden.
Auf die Elemente von Tupeln kann nicht direkt zugegriffen werden, was üblicherweise Mustererkennung und musterbasierte Dekomposition erfordert, im Gegensatz zu Datenstrukturtypen, die einen benannten Zugriff auf Feldelemente bieten, obwohl die Behandlung von Tupeln als Arrays oder Listen diese Beschränkung lösen kann.
Ein Tupel mit n Feldern heißt n-stellig und wird in der Notation <v1, v2, ..> angegeben.
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
function (t:tuple)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
function (p:pattern, callback: function (tuple|tuple[]|null),all?:boolean)
function (p:pattern, cb:function (tuple|tuple[]|null),all?:boolean)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
out(["Sensor",1,100]); out(["Sensor",2,121]);inp(["Sensor",1,_], function (t) { if (t) v=t[2]; }); inp(["Sensor",_,_], function (t) { if (t) n=t[1],v=t[2] });`rd(["Sensor",_,_], function (t) { if (t) n=t[1],v=t[2] });`
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
function (0,p:pattern,callback?:function,all?:boolean) ⟼ tuple|tuple[]|null
function (tmo:number,p:pattern,callback:function,all?:boolean)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
function (pattern) ⟼ boolean
function (pattern,function (tuple) ⟼ tuple)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
function (p:pattern,all?:boolean)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
m=⟨τ,→d⟩, with →d::=d|d,→d and d::=v|ε|x, τ:timeout
function (tmo:number,t:tuple)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Operationale Semantik
function (pattern [], function (tuple|tuple[]|null),all?:boolean)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Tupelräume - Produzenten und Konsumenten
Produzent
this.act = { percept : function () { out(["SENSORNODE"]); mark(1000,["SENSOR","CLOCK",time()]) mark(1000,["SENSOR","GPS", {lati:x,long:y}]) }}
Konsument
this.act = { process : function () { if (test(["SENSORNODE"]) inp(["SENSOR","CLOCK",_], function (t) { if (t) log('It is time '+t[2]); }) }}
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agenteninstantiierung
Folgende Möglichkeiten gibt es:
Ein Agent wird von der Plattform erzeugt.
Ein Agent wird als Kopie von einem Agenten abgespalten (Eltern-Kind Gruppen).
Ein Agent erzeugt einen neuen Agenten (seiner oder einer anderen Klasse).
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Agenteninstantiierung
// 1. Plattformfunction ac() { .. }var ag = create(ac,{msg:'with pace'},2);// 2. Agent forkingfunction ac() { act : function () { this.child = fork({ v1:ε1, v2:ε2, ... }) }}// 3. Agent-in-Agent creationfunction ac () { act : function () { this.agent = create('agclassname',{ v1:ε1, v2:ε2, ... },level) }}
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Multiagentensysteme: Dynamische Erzeugung und Kommunikation
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Multiagentensysteme: Dynamische Erzeugung und Kommunikation
┌――┐ ┌―――┤A1├―――┐ │ ▲ └┬―┘ ▲ │ │ │ ║ │ ║ │ ▲│ ┌―┴┐║ ┌┴―┐ ║┌┴―┐ ││Teilung ┌―┤A2├―┐│A3│ │A4│ Zusammenführung│▼ │ └――┘ │└――┘ └――┘ │ │ ▲▲ │ ┌―┴┐ ║║ ┌┴―┐ │A5│ ║║ │A6│ └――┘ └――┘
Teilung und Zusammenführung von Agenten bzw. deren Daten
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Agenten können direkt über Signale miteinander kommunizieren
Es muss nur die ID des Agenten bekannt an den ein Signal gesendet werden soll
Zunächst müssen Agenten auf der gleichen Plattform ausgeführt werden um Signale auszutauschen
Aber: Wenn Agenten A und B zu einem Zeitpunkt t0 auf der gleichen Plattform (N1) ausgeführt wurden, und dann die Agenten auf verschiedenen Plattformen (N1, N2) ausgeführt werden können diese dennoch Signale austauschen (t0 < t < t1). Es werden in den Plattformen Spuren der Agenten vermerkt, aber nur für eine bestimmte Zeit (hier bis t1).
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Signale sind einfache Nachrichten die
Ein Signal besteht aus einem Signaltyp (Nummer, Zeichenkette usw.) und einem (optionalen) Datenteil (Signalargument)
Ein Signal kann gesendet und empfangen werden.
Häufig wird auf den Empfang eines Signals nicht aktiv gewartet sondern mittels Signalhandlern, die eingehende Signale asynchron verarbeiten.
Ein Agent kann verschiedene Signale aus einer Menge S=[Sig1,Sig2,..} verarbeiten
Für jedes Signal muss ein Signalhandler installiert werden!
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Prinzip
signal SIGNAL1,SIGNAl2;Ag1: on(SIGNAL1, function (arg,from) { do process signal SIGNAL1 from sender }); on(SIGNAL2, function (arg,from) { do process signal SIGNAL2 from sender });Ag2: send(Ag1,SIGNAL1,ε);
AgentJS
signal SIGNAL1,SIGNAl2;Ag1: on : { SIGNAL1 : function (arg,from) { } }Ag2: send(Ag1,"SIGNAL1",ε);
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Signale sind gekennzeichnet durch das Tupel
<Absender,Empfänger,Name,Wert>
Nachteil gegenüber Tupeln: Der Agent kann die eingehenden Nachrichten nicht filtern bezüglich
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Signale adressieren mobile Agenten die ihren Standort, d.h. die Plattform, wechseln können
Der Vermittlung (Routing) der Signalnachrichten kommt daher besondere Bedeutung zu.
Eine Möglichkeit eine Signalnachricht zwischen zwei Agenten A und B zu vermitteln ist die Vermittlung entlang des Pfades von A und B (Spuren)
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Mobile Agenten in einem Netzwerk aus Plattformen (APP) und ihrer Spuren; Routing von Nachrichten über Kreuzungspunkte von Spuren
Stefan Bosse - MAS - Modul C Verteiltes Rechnen mit JAM Agenten (ABC) :: Kommunikationssignale
Agentenkommunikation (a) Lokale Tupleräume (b) Agent-Agent Signale (c) Entfernte Agent-Knoten Signale (d) Entfernte Tupleraumoperationen