PD Stefan Bosse
Universität Bremen, FB Mathematik & Informatik
SS 2020
Version 2020-05-20 sbosse@uni-bremen.de |
Eine wichtige Eigenschaft des agentenbasierten Modellierens ist die Möglichkeit Zufälligkeit in die Modelle mit einzubeziehen (Monte Carlo Simulation)
Viele numerische (funktionssbasierte) Ansätze erfordern das Entscheidungen im Modell deterministisch ausgeführt werden sollen (wie allg. Softwareentwurf)
In agentenbasierten Ansätzen können Entscheidungen auf Wahrscheinlichkeiten und Zufall beruhen
Beispiel: Im Ameisenmodell ist die Bewegung der Ameisen nicht vollständig vorherbestimmt und deterministisch. Jede Ameise wird auf ihrem Weg immer wieder zufällig eine kleine Richtungsänderung vornehmen.
Man unterscheidet zwei grundsätzliche Methoden der Modellierung von Agenten:
Ein globaler Ansatz wo die Systemebene und das Verhalten des Ensembles (bekannt) modelliert und das Verhalten von Individuen und deren Wechselwirkung untersucht (unbekannt) wird.
Ein lokaler Ansatz wo die Individualebene und das Verhalten einzelner Agenten (bekannt) modelliert und das Systemverhalten (Emergenz, unbekannt) untersucht wird.
Ein einfaches Verhaltensmodell für Ameisen in einer Kolonie könnte textuell wie folgt beschrieben werden:
Wenn die Ameise kein Futter trägt dann
Wenn die Ameise Futter trägt dann geht sie zurück zum Nest und hinterlässt Pheromone entlang der Spur
Es wird zufällig eine Richtungsabweichung ausgewählt und einen Schritt in diese Richtung gegangen (Random walk)
Man unterscheidet bei ABM und ABS folgenden Entitäten:
Agenten die durch eine Menge privater Daten, einem veränderlichen Ort, Eigenschaften, und einem Verhaltensmodell gekennzeichnet sind. Diese Agenten interagieren (kommunizieren) aktiv mit anderen Agenten und verändern die Welt (Daten)
Agenten die optional durch eine Menge privater Daten, i.A. Ortsgebundenheit, und Eigenschaften gekennzeichnet sind. Diese Agenten sind Ressourcen die nicht aktiv mit anderen Entiäten interagieren.
Es gibt Verbindungen (links) zwischen den Agenten die eine Interaktion (Kommunikation) ermöglichen
Eine i.A. diskrete Welt mit Koordinaten, Eigenschaften, die mit einer Menge von Agenten besetzt ist.
;; if not carrying food, look for it
If not carrying-food? [ look-for-food ]
;; if carrying food turn back towards the nest
if carrying-food? [ move-towards-nest ]
;; turn a small random amount and move forward
wander
to
Schlüsselwort.
Definition 1.
to procedure-name
Anweisung
Anweisung
..
end
Die Simulationswelt (zweidimensional) ist in NetLogo in patches unterteilt
Ein Patch hat eine Koordinate (x,y) und kann eine Ressource sein (passiver Agent)
Ein Patch besteht aus einer Visualisierung (Farbe) und optional Datenvariablen (Eigenschaften)
Patches sind nicht mobil
Patches ermöglichen die Diskretisierung der analogen Welt
Patches können einen Satz von Variablen besitzen die mit der patches-own
Anweisung definiert werden und mit der set
Anweisung verändert werden können.
Vordefinierte Variablen (Parameter): pcolor
Definition 2.
patches-own [
var1
var2
.. ]
..
[ set var1 ε ]
Definition 3.
[ set var ε ]
if cond [
Anweisung
Anweisung
]
ifelse cond
Anweisung cond=True
Anweisung cond=False
In NetLogo werden Agenten durch Turtles implementiert
Ein Agent ist gekennzeichnet durch seine aktuelle Patchposition, die initial gesetzt werden kann mit der Anweisung setxy
x y
Agenten werden durch die create-turtles
Anweisung erzeugt. Agenten können private Variablen haben die mit der turtles-own
Anweisung deklariert werden.
Definition 4.
turtles-own [var]
create-turtles num [
Anweisung
Anweisung
[ setxy xpos ypos ]
[ set var ε ]
.. ]
Definition 5.
sprout num
sprout-class num
sprout num [ statements ]
sprout-class num [ statements ]
Öffne NetLogo und das Simulationsmodell Sample Models → Biology → Ant Lines und stelle folgende Liste zusammen:
Wo werden die Patches erzeugt/verändert?
Wo wird die Simulationswelt erzeugt?
Wie werden die Agenten in der Welt bewegt?
Welche Sensoren verwenden die Agenten?
Wie kommunizieren die Agenten?
clear-all
create-turtles
reset-ticks
to setup
clear-all
create-turtles 100 [ setxy random-xcor random-ycor ]
reset-ticks
end
In jedem Simulationsschritt wird im Simulationsmodell eine Prozedur ausgeführt die die Agenten und die Welt verändert.
Die Simulationszeit wird um den Wert eins erhöht indem die tick
Anweisung ausgeführt wird.
to go
ask wolfes
[
if (hungry > 100)
[ forward 10 ]
]
tick
end
In jedem Simulationsschritt (tick) können Aktionen auf Patches und Agenten (Turtles) angewendet werden
Die Auswahl der Agenten (oder Patches) erfolgt mit der ask
Anweisung die eine Menge von Anweisungen auf die ausgewählten Menge von Agenten anwendet → Iterator
Definition 6.
ask agentset [
Anweisung
Anweisung
.. ]
Vordefinierte Mengen: turtles
, patches
, turtle
num
Alle Anweisung in der ask
Anweisung wie z.B. das Verändern von Agentenvariablen werden auf den jeweiligen Agenten aus der zu iterierenden Menge angewendet!
ask turtles [ fd 1 ]
;; all turtles move forward one step
ask patches [ set pcolor red ]
;; all patches turn red
ask turtle 4 [ rt 90 ]
;; only the turtle with id 4 turns right
Definition 7.
forward num fd num
right degree rt degree
left degree lt degree
Die Simulation wird in Schritten ausgeführt und durch die tick
Anweisung wird ein Simulationszähler erhöht.
Der Schrittzähler kann mit ticks
abgefragt und mit reset-ticks
zurück gesetzt werden.
to go to move-turtles
move-turtles ask turtles [
tick right random 360
end forward 1
]
end
Ein Agent kann aus der Simulationswelt durch die die
Anweisung entfernt werden.
Ist nur im Zusammenhang mit und innerhalb einer ask
Anweisung anwendbar!
Neben biologischen Modellen werden soziologische Modelle durch ABM/ABS behandelt
Häufige soziologische Themen:
Das ursprüngliche Sakoda-Verhaltensmodell besteht aus sozialen Interaktionen zwischen zwei Gruppen von Individuen, die sich in einem Netzwerk nach spezifischen Einstellungen hinsichtlich Anziehung, Abstoßung und Neutralität entwickeln.
Ein Individuum bewertet seine gesellschaftliche Erwartung an allen möglichen verfügbaren Standorten (beginnend am aktuellen Standort),
Dieses Verfahren wird unter allen möglichen Individuen zufällig wiederholt;
Dies hängt jedoch vom Parametersatz des Modells, der Personendichte und der Individualisierung ab.
Es wird angenommen, dass es zwei Gruppen gibt, die sich auf die Klassen a und b von Individuen beziehen.
Die soziale Interaktion ist gekennzeichnet durch unterschiedliche Einstellungen eines Individuums zwischen verschiedenen und zwischen gleichen Gruppen, die durch vier Parameter gegeben werden:
Der Parameter Jik ist ein Maß für die soziale Entfernung (gleich eins für die Moore-Nachbarschaft mit Entfernung eins) und nimmt für längere Entfernungen ab.
Der Parameter δ drückt die Einstellung zu einem Nachbarort aus, gegeben durch:
Implementiere Agenten mit dem Sakoda Verhalten
Die Welt soll parametrisierbar mit einer Anzahl a/b Agenten bevölkert werden
Der S Parametersatz soll auch parametrisierbar sein
Führe exemplarisch Simulationen durch. Welche Strukturen ergeben sich für die folgenden S Vektoren: (1,-1,-1,1), (1,1,1,1) (-1,1,1,-1)
Agenten interagieren mit der Weltumgebung (dem Environment) mittels:
Sensoren und Aktoren sind über den Zyklus Wahrnehmung → (Planung →) Entscheidung → Aktion verbunden
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[B] | Beispiel
|
Das Verhalten von Agenten und ihre Modellierung wird maßgeblich durch diese Interaktion und den Zyklus bestimmt!
Soziale Fähigkeit in Agenten ist die Fähigkeit, mit anderen Agenten (und möglicherweise Menschen) durch Kooperation, Koordination und Verhandlung zu interagieren.
Kooperation arbeitet als Team zusammen, um ein gemeinsames Ziel zu erreichen.
Häufig entweder durch die Tatsache, dass kein Agent das Ziel alleine erreichen kann, oder dass die Kooperation ein besseres Ergebnis erzielt (z.B. schnelleres Ergebnis).
⇒ Emergentes Verhalten ⇒
Koordination behandelt die Abhängigkeiten zwischen Aktivitäten.
Wenn es beispielsweise eine nicht gemeinsam teilbare Ressource gibt (geteilt aber nicht teilbar), die zwei Agenten verwenden möchten, müssen sie koordinieren.
Verhandlung ist die Fähigkeit, Vereinbarungen über Angelegenheiten von einem gemeinsamen Interesse zu treffen.
Zum Beispiel: Sie haben einen Fernseher in Ihrem Haus; Sie wollen einen Film sehen, Ihr Mitbewohner möchte Fußball schauen.
Beinhaltet in der Regel Angebot und Gegenangebot mit Kompromissen der Teilnehmer.
Zwei Sensoren:
Hoch
=1 , Niedrig
=0}
Hoch
=1 , Niedrig
=0}
Die Perzeptions- und Aktionsfunktion lauten dann:
Das Verhalten eines zustandsbasierten reaktiven Agenten ist wie folgt:
Der Agent startet in einem Anfangszustand e0
Nachdem der aktuelle Weltzustand e aufgenommen wurde berechnet er p=see(e)
Der nächste interne Zustand des Agenten wird bestimmt: in+1 := next(in,p)
Der Agent wählt eine Aktion aus: action(next(in, p))
Schleife nach 2.
Wie soll ein Agent bewerten dass seine Aktionen sinnvoll und nützlich sind?
Eine Nützlichkeitsfunktion u kann verwendet werden um die Aktionsauswahl und die Konvergenz des Agenten seine Ziele zu erreichen zu verbessern.
Mögliche Nützlichkeitsfunktionen u ∈ U können Weltzuständen (zu den der Agent auch gehört) oder Durchläufen eine reelle Bewertungszahl (i.A. [0,1]) zuordnen:
Veränderte Weltumgebungen führen bestenfalls zu eine Reorganisation von Aktionen.
Kann mit rückgekoppelten Lernen kombiniert werden, d.h. die Verbesserung der Aktionsplanung durch “Belohnung” (wenn mehr Löcher gefüllt)
Eine mögliche Nützlichkeitsfunktion könnte das Verhältnis der aufgetauchten Löcher zu den erfolgreich während eines Durchlaufs r gefüllten in Relation stellen und das Agentenverhalten beeinflussen:
p (Prämisse 1)
p → q (Prämisse 2)
———
q (Konklusion)
Traditionell werden künstliche intelligente Systeme mit symbolischer KI umgesetzt.
Intelligentes Verhalten entsteht bei diesem Ansatz durch:
Deduktive Schlussfolgerung bedeutet: Agenten als Theorembeweiser!
Häufig sind symbolische Repräsentationen logische Formulierungen
Sei die Menge der Sätze der klassischen Logik erster Ordnung und sei der Satz von L-Datenbanken, d. h. die Menge von Mengen von L-Formeln. Der innere Zustand eines Agenten ist dann ein Element von . Der Entscheidungsprozess eines Agenten wird durch eine Reihe von Deduktionsregeln modelliert, . Dies sind einfache Schlussfolgerungsregeln (Inferenz) für die Logik.
Deduktive Agenten sind Kognitive Systeme
Am Anfang steht wieder die Perzeption über Sensoren und Interpretation
Die Information des Agenten über die Welt ist in einer Datenbank enthalten → Wissensbasis
Die Wissensbasis enthält Aussagen die entweder schon vorhanden sind oder aktuell/kürzlich aufgrund der Wahrnehmung erworben wurden und veränderlich sind (wie z.B. Abstand Roboter-Tür)
Die Wissensbasis wird benutzt um einen Plan auszuwählen → Planung
Schließlich werden nach der Planung geeignete Aktionen ausgeführt
Definition 8.
Perzeption → Interpretation → Wissen → Planung → Aktion
Das Problem, die reale Welt in eine genaue, adäquate symbolische Beschreibung der Welt zu übersetzen, damit diese Beschreibung für den Agenten verwendbar und nützlich ist.
Das Problem, Informationen symbolisch darzustellen und Agenten dazu zu bringen, damit zu manipulieren / zu argumentieren, damit die Ergebnisse nützlich sind.
Das Transduktionsproblem beschäftigt sich im wesentlichen mit Vision, Spracherkennung, Lernen, usw.
Das Repräsentationsproblem behandelt Wissensrepräsentation (Ontologien!), Automatisches Schlussfolgern, Automatisches Planen usw.
Die next Funktion verändert jetzt die Wissensdatenbank durch Perzeption!
Wenn es eine Formel Do(α) für Aktionen α ∈ Ac mittels einer Deduktionsregel driekt aus der Datenbank abgeleitet werden kann, dann wähle diese Aktion als beste aus
Wenn das nicht möglich ist (keine Aktion gefunden) und wenn es eine Formel ¬Do(α) gibt die sich derzeit nicht aus der Datenbank ableiten lässt (d.h. es ist nicht verboten es zu tun), dann wähle diese Aktion aus.
In(x, y) → Agent ist bei (x, y),
Dirt(x, y) → Dreck bei (x, y),
Facing (d) → Ausrichtung des Agenten
Es gibt folgende Aktionen: A={forwärts,saugen,drehen}
Nun werden alte Informationen der Datenbank old(Δ) identifiziert und mittels einer new Funktion durch die next Funktion aktualisiert:
Problem: Wenn sich zwischen zwei Zeitpunkten t1 und t2 die Welt ändert und eine bei t1 ausgewählte Aktion nicht mehr aktuell und optimal ist!
Agenten die strikt auf Logiken basieren sind nicht besonders performant und optimal (bzw. können völlig versagen)
In AGENT0 (eine Programmiersprache) wird eine Agent beschrieben durch:
Die Schlüsselkomponente, die bestimmt, wie der Agent handelt, ist der Commitment-Regelsatz.
Agent0 ist eine einfache Multiagenten Programmiersprache mit einer dazugehörigen Agentenarchitektur und einem integrierten Kommunikationsmodell zwischen Agenten
Die Agentenumgebung ist verteilt und partitioniert.
Jeder Agent verfügt über einen lokalen Nachrichtenpuffer und eine jeweils andere lokale Umgebung.
Agenten arbeiten synchron - ihre Wahrnehmungs- und Aktions-Zyklen sind synchronisiert. Zeit ist nur die Zyklusnummer bestimmt.
Jeder Agent kann nur Nachrichten sehen, die von anderen Agenten im vorherigen Zyklus an ihn gesendet wurden.
Aktionen können privat/intern oder kommunikativ sein → Nachrichten
Nachrichtentypen:
Die Anfragen verändern i.A. die Commitments (Ziele) des Agenten,
Die informativen Nachrichten verändern das Wissen (Beliefs)
Für jede Kommunikationsaktion muss der empfangende Agent angegeben werden.
Die REQUEST-Nachricht kann sich auf eine der sechs Agentenaktionen beziehen (folgend)
Zusagen werden als Paare (agent, action) gehalten, wobei die Zusage an Agent agent gebunden ist.
Es gibt eine Reihe von Regeln der Form:
COMMIT (Nachrichtenmuster, Mentalcond, Agent, Aktion)
DO(time,privateaction)
INFORM(time,agent,fact)
REQUEST(time,agent,action)
UNREQUEST(time,agent,action) - removes commitment
REFRAIN(action) - will not enter a commitment to action
IF mentalcondition THEN action
Definition 9.
COMMIT( (Ag, REQUEST(Act)),
(_,condition(Ag),
Ag,
Act)
Bedeutet: Kann sich möglicherweise dazu verpflichten, die Aktion Act für Agent Ag auszuführen, wenn Ag gerade Act angefordert hat und der Agent glaubt, dass Ag die Bedingung condition erfüllt.
Textuelle Formulierung
‘if I receive a message from agent which requests me to do action at time, and I believe that agent is currently a friend; I can do the action; at time, if I am not committed to doing any other action, then commit to doing action at time.’ | Nachrichtenbasierter Kontrollfluss in AGENT0 |
COMMIT(messagepattern,mentalcond,agent,action)
Nachrichten erzeugen ein Commitment (agent,action)
wenn
oder
Algorithm 1.
Algorithm 2.
Ein Agent wird durch drei interagierende Kontroll- und Wissensebenen definiert:
Eine verhaltensbasierte Ebene, die Reaktivität und Verfahrenswissen für Routineaufgaben enthält.
Eine lokale Planungsebene, die die Möglichkeit bietet, über Mittel und Ziele nachzudenken, um lokale Aufgaben zu erfüllen und zielgerichtetes Verhalten zu erzeugen.
Eine kooperative Planungsebene, die es Agenten ermöglicht, über andere Agenten zu schlussfolgern, und die koordinierte Aktion mit anderen Agenten unterstützt.
Mentale Kategorien
Der mentale Zustand eines Agenten setzt sich aus verschiedenen Komponenten zusammen:
Die aktuelle Wahrnehmung des Agenten.
Eine Reihe von Überzeugungen, die den Informationszustand beschreiben.
Eine Reihe von Situationen, die relevante strukturierte Teile der Überzeugungen des Agenten beschreiben.
Eine Reihe von (kontextunabhängigen) Zielen, die der Agent möglicherweise hat.
Eine Reihe von Optionen, die den Motivationszustand (motivational state) des Agenten darstellen.
Eine Reihe von Absichten, die den Überlegungszustand (deliberative state) des Agenten definieren, d.h. die Optionen, mit denen der Agent sich selbst verändert hat, und die Definition der nächsten Aktion, die der Agent ausführen wird.
Eine Reihe von operativen Primitiven, die den Motivationszustand aller Agenten mit ihrem Überlegungszustand verbinden.
erklären die Beziehung zwischen den Überzeugungen eines Agenten und seiner aktuellen Wahrnehmung. Sie beschäftigen sich mit der Frage, wie Wahrnehmung in Überzeugungen umgewandelt wird (Annahmenbildung) und wie sich bestehende Überzeugungen auf der Grundlage von Wahrnehmung ändern (Annahmenrevision).
extrahiert (strukturierte) Situationen aus den (unstrukturierten) Überzeugungen eines Agenten.
beschreibt, welche der möglichen Ziele eines Agenten in einer Reihe von Situationen derzeit Optionen sind.
ordnet die aktuellen Ziele des Agenten operativen Grundelementen zu, um sie zu erreichen, d.h. lokale Pläne oder Verhandlungsprotokolle und gemeinsamen Pläne. Planen bedeutet zu entscheiden, was zu tun ist.
ist der Prozess des Zusammenführens von Teilplänen für verschiedene Ziele zu einem Ausführungsmodul, bei dem Kompatibilitäten und (z.B. zeitliche und vorrangige) Einschränkungen zwischen verschiedenen Teilplänen berücksichtigt werden. Ablaufplanung (Scheduling) bedeutet also, zu entscheiden, wann was zu tun ist.
ist für die korrekte und fristgerechte Umsetzung der in der Planungs- und Terminierungsphase festgelegten Verpflichtungen verantwortlich.
Die Belief, Desire, und Intentionsdatenbanken werden über vier Funktionen miteinander im Interpreter verknüpft: Belief Revision Function BRF, Filter, Option Generation Function, und die Action Selection Function
Der Agent empfängt Ereignisse, die entweder
Er versucht, Ereignisse zu behandeln, indem nach Plänen gesucht wird, die übereinstimmen
Die Menge von Plänen, die dem Ereignis entsprechen, sind Optionen / Wünsche
Wählt einen Plan aus um seine Absichten (Wünsche) zu erfüllen: wird dem dann verpflichtet - eine Absicht
Wenn ein Plan ausgeführt wird, können neue Ereignisse generiert werden, die eine Behandlung erfordern
Überzeugungen stellen Informationen dar, die der Agent über seine Umgebung hat
Sie sind symbolisch dargestellt
Im Vorfeld von den Entwicklern offline kodiert
Gibt dem Agenten Informationen darüber,
Planstruktur: triggering_event : context <- body
trigger_event
)
context
)
body
)
trigger_event
gesehen wird, und geglaubt wird, dass der context
wahr ist, dann kann der body
ausgeführt werden!
Ist ein Ereignis, mit dem der Plan umgehen kann
Definiert die Bedingungen, unter denen der Plan verwendet werden kann
Definiert die Aktionen, die ausgeführt werden sollen, wenn der Plan ausgewählt wird
+!P : Neues Ziel P erworben → “erreiche P”
-!P : Ziel P verworfen
+B : Neue Annahme B hinzufügen
-B : Annahme B verwerfen
1. B ← B0;/* B0 are initial beliefs */
2. I ← I0;/* I0 are initial intentions */
3. while true do
4. get next percept ρ via sensors;
5. B ← brf (B,ρ);
6. D ← options(B, I);
7. I ← filter(B,D, I);
8. π ← plan(B, I , Ac); /* Ac is the set of actions */
9. while not (empty(π) or succeeded(I , B) or impossible(I , B)) do
10. α ← first element of π;
11. execute(α);
12. π ← tail of π;
13. observe environment to get next percept ρ;
14. B ← brf (B, ρ);
15. if reconsider(I , B) then
16. D ← options(B, I);
17. I ← filter(B, D, I);
18. end-if
19. if not sound(π , I , B) then
20. π ← plan(B, I , Ac)
21. end-if
22. end-while
23. end-while
/* Initial beliefs and rules */
/* Initial goals */
!start.
/* Plans */
+!start : true <- .print("hello world.").
/* Initial belief */
fact(0,1).
/* Additional belief: if x<5 then add new belief */
+fact(X,Y) : X < 5 <- +fact(X+1, (X+1)*Y).
/* If x==5 then print result */
+fact(X,Y) : X == 5 <- .print("fact 5 == ", Y).
/* Initial and single goal */
!print_fact(5).
/* If this is the goal, first compute fact, then print it */
+!print_fact(N) <- !fact(N,F);
.print("Factorial of ", N, " is ", F).
/* How to compute factorial */
+!fact(N,1) : N == 0.
+!fact(N,F) : N > 0 <- !fact(N-1,F1); F = F1 * N.
Z.B. gibt es zwei Agenten: Der eine weiß wie man die Faktorisierung berechnet, der andere nicht.
Der Experte wird vom Idioten Anfragen empfangen und wird darauf antworten → Client-Server Architektur
Definition 10.
.send(rcvr, type, content)
.broadcast(type,content)
Mit der .send
Operation wird eine Nachricht an den Agenten rcvr mit dem Nachrichtentyp type und dem Inhalt content gesendet.
Der Nachrichtentyp type ist dabei ein Typ aus der Liste:
type ∈ {tell,untell,achieve,unachieve,
askOne,askAll,askHow, tellHow,untellHow}
- tell/untell: Hinzufügen/Entfernen von Annahmen
- achieve/unachieve: Hinzufügen/Entfernen von zu erreichenden Zielen
- askOne,askIf: Ziel testen
.send(obi_wan, askOne, ?father(luke), Answer)
.send(obi_wan, askIf, ?father(luke))
/* Initial goals */
!start.
/* Plans */
+!start :
true <- .print("starting..");
!query_factorial(2);
!query_factorial(4);
!query_factorial(6);
!query_factorial(10).
+!query_factorial(X) :
true <- .send(expert, tell, giveme(X)).
+fact_result(X,Y) : true <-
.print("factorial ", X, " is ", Y, " thank you expert").
+!giveme(X)[source(A)]:
true <- !fact(X,Y);
.send(A,tell,fact_result(X,y);
.print("Factorial of ", X, " is ", Y).
+!fact(X,1) : X == 0.
+!fact(X,Y) : X > 0
<- !fact(X-1,Y1);
Y = Y1 * X.
Die zwei Architekturen symbolische Schlussfolgerungsagenten und reaktive Agenten wurden historisch zu hybriden Architekturen fusioniert:
1956–present: Symbolic Reasoning Agents
1985–present: Reactive Agents
1990-present: Hybrid Agents