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
.indent2[
function (pattern) ⟼ boolean
.indent2[
function (pattern,function (tuple) ⟼ tuple)
.indent2[
function (p:pattern,all?:boolean)
.indent2[
m=⟨τ,→d⟩, with →d::=d|d,→d and d::=v|ε|x, τ:timeout
function (tmo:number,t:tuple)
.indent2[
function (pattern [], function (tuple|tuple[]|null),all?:boolean)
.indent2[
.col1[ .invert[Produzent]
this.act = { percept : function () { out(["SENSORNODE"]); mark(1000,["SENSOR","CLOCK",time()]) mark(1000,["SENSOR","GPS", {lati:x,long:y}]) }}
] .col2[ .invert[Konsument]
this.act = { process : function () { if (test(["SENSORNODE"]) inp(["SENSOR","CLOCK",_], function (t) { if (t) log('It is time '+t[2]); }) }}
]