Systeme und Netzwerke

Was sind Systeme?

Das Wort „System“ kommt aus dem Griechischen und bedeutet „aus mehreren Einzelteilen zusammengesetztes Ganzes“. Diese Einzelteile stehen miteinander in Beziehung und „arbeiten“ zusammen. Ein Einzelteil kann wiederum selber ein System sein, man nennt es dann Teilsystem oder Subsystem. Das Wort „System“ wird häufig im Alltag verwendet, wie z. B. Sonnensystem, Ökosystem und Computersystem. Meistens werden die „Systeme“ nach dem Einsatzgebiet unterschieden: technische, soziale, ökonomische, biologische und ökologische Systeme.

Systeme können natürlich oder künstlich sein, d.h. von der Natur oder vom Menschen geschaffen. Mit den natürlichen Systemen beschäftigen sich die Naturwissenschaften. Hier werden Modelle der Natur erschaffen und Theorien über das Verhalten erstellt. Diese Theorien werden anhand von Experimenten überprüft. Aufgrund der hohen „Komplexität“ der Natur haben sich die Wissenschaftler die Arbeit erleichtert, in dem sie die Natur in die Teilsysteme Physik, Chemie und Biologie eingeteilt haben.

Mit den künstlichen Systemen beschäftigen sich allerdings nicht die „Kunstwissenschaften“ oder die „künstlichen Wissenschaften“, sondern eine Vielzahl von unterschiedlichen Disziplinen [Sim96]. Das hat historische Gründe und hat dazu geführt, dass der Bereich der künstlichen Systeme schwer überschaubar ist.

Man kann bestimmte Sachverhalte besser erklären, wenn ein vereinfachtes Modell der Realität benutzt wird. Das Modell ist eine Abstraktion. Es ist in den Naturwissenschaften oftmals gar nicht notwendig bis ins letzte Detail auf die Atome zurück zu gehen. Die Physik kann z. B. die Bewegungen der Planeten auch mit einem abstrakten Modell präzise vorhersagen. Um eine Vorhersage über die Planetenlaufbahnen zu machen, kann man die beobachteten Variablen auf die Massen der Planeten, deren Umfänge, die Gravitationskonstante, usw. reduzieren.

Dieses Prinzip wird heute „Reduktionismus“ genannt und einer seiner ersten Verfechter war René Descartes (1596 - 1650). Die Idee war, dass man ein komplexes System in seine Einzelteile zerlegt, diese einzeln analysiert und das System hinterher wieder zusammensetzt. Erst durch diese Methode wurde der Fortschritt und die Industrialisierung möglich [Mit09].

Am Anfang des 20. Jahrhunderts kamen aber die ersten Zweifel. Viele Sachverhalte konnten so nicht richtig erklärt werden: das Wetter, lebende Organismen, Epidemien, Ökonomie oder die Verbreitung von kulturellen Entwicklungen, kurzum alles Dynamische oder Lebendige. Dieses wird oft mit dem Spruch „Das Ganze ist mehr als die Summe seiner Teile“ zusammengefasst. Solche Systeme werden „komplexe Systeme“ genannt, wie z. B. die folgenden:

  • Insektenkolonien von Ameisen oder Bienen
  • Der Blutkreislauf im menschlichen Körper
  • Die Wirtschaft und das Finanzsystem
  • Die Entwicklung von Städten und Ballungsräumen

Die Theorie der komplexen Systeme wird seit den 80er-Jahren entwickelt [Mit09, Hol14, EA96, Bat07]. Sie ist in verschiedenen Fachgebieten entstanden, wie Informatik, Neurowissenschaften, Biologie, Ökonomie, Kognitionswissenschaften und Künstlicher Intelligenz.

Korrelation und Kausalität

Bei der Analyse von Systemen muss man aufpassen, dass man Korrelation und Kausalität nicht miteinander verwechselt. Diese Begriffe klingen kompliziert, sind aber recht einfach zu verstehen.

Nehmen wir mal an, ein junger außerirdischer Student hätte gerade etwas Freizeit, fliegt zum ersten Mal zur Erde und beguckt sich die Gesichter in einer Fußgängerzone einer beliebigen Stadt in Europa. Ihm fallen bei den Menschen zwei Unterschiede auf: manche haben lange Haare und manche haben kurze Haare. Außerdem haben manche Menschen rot angemalte Lippen und andere nicht. „Wie kommt denn das?“ denkt der Außerirdische und erstellt ein Modell mit diesen zwei beobachteten Variablen „Lange Haare“ und „Rote Lippen“. Nachdem er 20 Menschen beobachtet hatte, erstellt er die folgende Tabelle mit seinen Messwerten:

Der Außerirdische versucht, einen Zusammenhang zwischen den beiden Variablen zu erkennen und sieht, dass sehr häufig in beiden Spalten der gleiche Wert vorhanden ist. In 17 von 20 Zeilen steht in beiden Spalten der gleiche Wert „JA“ bzw. „NEIN“. Statistiker nennen das gleichzeitige Vorkommen von Werten „Korrelation“. Die Korrelation zweier Variablen gibt an, wie stark zwei Variablen voneinander abhängen. Wenn sie jeweils die gleichen Werte haben, dann ist die Korrelation hoch. Die Korrelation kann Werte von -1 bis 1 annehmen. Der Außerirdische berechnet eine Korrelation von 0,698. Das ist noch nicht sehr hoch, aber es deutet einen Zusammenhang an.

„Aber wie hängen die beiden Variablen zusammen?“ fragt sich der Außerirdische: „Verursachen die roten Lippen das Haarwachstum?“ oder „führen lange Haare zu rote Lippen“? Wenn diese beiden Variablen zusammenhängen, was ist die Ursache, was ist die Wirkung? Wie hängen die beiden Variablen „kausal“ zusammen?

Der Außerirdische hat eine Korrelation zwischen zwei Variablen beobachtet, aber das heißt nicht, dass zwischen den beiden eine Ursache-Wirkung-Beziehung besteht. Es ist nicht so, dass durch lange Haare rote Lippen entstehen oder umgekehrt. Es ist ein statistischer Fehlschluss. Eine Ursache-Wirkung-Beziehung wird auch kausale Beziehung genannt. Korrelation ist nicht gleich Kausalität.

Und das Geheimnis für den außerirdischen Studenten ist, dass es noch eine unbeachtete Variable gibt, die er nicht beobachtet hat: das Geschlecht. Da er diese Variable nicht in das Modell aufgenommen hat und Korrelation mit Kausalität verwechselte, hat er ziemlichen Unsinn erforscht.

Es ist also bei einer Datenanalyse wichtig, dass es möglichst wenig unbeobachtete Variablen gibt. Das führt bei heutigen Firmen dazu, dass sie im Rahmen des Data-Warehousing und Big Data erst einmal sehr viele Daten sammeln ohne zu wissen, was sie eigentlich damit anstellen können. Es könnten Daten über eine Variable sein, die später einmal nützlich wird. Später im Buch werden wir diese Themen und die Datenanalyse mit Data Science genauer behandeln. Auf der anderen Seite sind viele beobachtbaren Variablen oftmals nicht wichtig. Ein Physiker beobachtet andere Dinge als ein Chemiker. Aus praktischen Gründen schränkt man die Menge der beobachteten Variablen daher ein. Das Modell stellt nur einen Ausschnitt dar, es ist eine Abstraktion. Der Außerirdische im obigen Beispiel hätte auch die Außentemperatur und die Luftfeuchtigkeit messen können. Aber diese sind für seine Fragestellung nicht relevant. Welche Variablen verwendet werden hängt davon ab, wofür man das Modell benötigt. Das Prinzip von Ockham’s Rasiermesser (benannt nach Wilhelm von Ockham (1288 - 1347)) besagt, dass man von zwei Modellen, die den gleichen Sachverhalt erklären, das einfachere nehmen soll.

Wichtig: Das Modell soll so einfach wie möglich sein, aber nicht reduktionistisch.

Modelle, Graphen und Netzwerke

Ein „einfaches“ Modell

Dieses ist das einzige Kapitel, in dem Programmtexte mit mathematischen Formeln zu sehen sind. Es ist für das weitere Verständnis des Buchs nicht notwendig, den Code zu verstehen. Leser ohne Programmiererfahrung erhalten so aber einen ersten Eindruck von der Programmierung.

Wir fangen mit einem sehr einfachen System an: In einer fernen zweidimensionalen Galaxie gibt es drei Planeten: einen kleinen roten, einen mittleren blauen und einen großen grauen. Wir möchten die Bewegungen von diesen Planeten simulieren. In der folgenden Abbildung sind diese „Planeten“ mit den unterschiedlichen Farben und Größen auf einem Koordinatensystem zu sehen:

Das Koordinatensystem hat eine waagerechte x-Achse mit Werten von 0 bis 10 und eine senkrechte y-Achse mit Werten von 0 bis 5. Eine Koordinate wird als Paar von Zahlen (x, y) angegeben. Der blaue Planet befindet sich z. B. an den Koordinaten (2, 1).

In der Informatik hat sich die objektorientierte Programmierung durchgesetzt. Für jeden Planeten benötigen wir die folgenden Attribute, die zusammen den „Zustand“ des Objekts definieren:

  • eine Farbe „color“
  • eine Masse bzw. das Gewicht „mass“
  • eine Position „position“ im Raum in 2D-Koordinaten (x,y)
  • einen Richtungs-und-Geschwindigkeits-Vektor „velocity“ in 2D-Koordinaten (x, y)

Der Richtungs-und-Geschwindigkeits-Vektor drückt die Bewegung des Planeten aus. Die Geschwindigkeit wird durch die Länge des Vektors ausgedrückt. Ein solcher Vektor wird in Diagrammen oft mit einem Pfeil dargestellt.

In der Software-Entwicklung verwendet man in den meisten Projekten englische Variablennamen. Dieses liegt zum einen an den internationalen Projekten, an den Mitarbeitern, die kein Deutsch sprechen, oder an der englischen Literatur. Nur ein kleiner Bruchteil der englischen Informatik-Literatur wird ins Deutsche übersetzt. Ohne Englischkenntnisse kann man Informatik daher nicht studieren. Also werden auch hier englische Namen verwendet.

Der folgende Programmcode stellt die Definition der Klasse Circle da. Es ist eine direkte Umsetzung der obigen Liste.

class Circle {
    String color;
    num mass;
    Vector position;
    Vector velocity;
    
}

Das Programm ist in der Programmiersprache Dart1. Es besagt, dass es eine Klasse gibt, die Circle heißt und als Attribute eine Zeichenkette (String) namens „color“, eine Zahl (num) namens „mass“, einen Vektor namens „position“ und einen Vektor namens „velocity“ hat.

Von dieser Klasse kann man sog. „Objekte“ erstellen. Dieses geschieht hier mit der Funktion new. Im folgenden Beispiel werden die drei Planeten erstellt.

var u, v, w;

u = new Circle(color: "blau", mass: 3, position: new Vector(2, 1), velocity: new Vector(2, 0));

v = new Circle(color: "grau", mass: 4, position: new Vector(5, 3), velocity: new Vector(0, 0));

w = new Circle(color: "rot", mass: 2, position: new Vector(9, 4), velocity: new Vector(-1, -1));

Für das Programm haben diese Kreise die Namen u, v und w. Man könnte auch sprechendere Namen verwenden, aber hier sollten sie kurz sein.

Bisher hat die Klasse Circle nur Attribute zum Speichern ihrer Daten. Eine Klasse kann aber auch sog. Methoden haben, mit denen sie die Werte ihrer eigenen Attribute ändern kann. Wir möchten die neue Position aus der alten position und der velocity berechnen, indem wir die velocity zur aktuellen position hinzuaddieren. Dazu müssen wir der Klasse Circle eine Methode geben, die wir step() nennen:

class Circle {

     wie bisher 

    step() {
        position = position + velocity;
    }
}

Eine Methode erkennt man an der Parameterliste „()“ und den geschweiften Klammern „{}“. Mit step() wird velocity zur position hinzuaddiert. Vor dem Aufruf von step() hat die blaue Kugel den folgenden Zustand.

color: blau, mass: 3, position: (2, 1), velocity: (2, 0)

Und nach einem einmaligen Aufruf ist position = (2+2, 1+0)

color: blau, mass: 3, position: (4, 1), velocity: (2, 0)

Und nach einem weiteren Aufruf:

color: blau, mass: 3, position: (6, 1), velocity: (2, 0)

Hier sollte man auch beachten, dass die alten Werte verloren sind. Der Circle merkt sich seine Geschichte nicht, er hat kein Gedächtnis. Dieses müsste man ihm extra einprogrammieren. Das ist nicht so schwierig, aber schon mit Aufwand und Arbeitszeit verbunden. Aus diesem Grund sind Programme immer möglichst minimal, d.h. sie sollten gerade so viel Code enthalten, so dass sie ihre Aufgabe erfüllen können. Wenn es sich hier nicht um einen einfachen unwichtigen Kreis handeln würde, sondern um den Inhalt eines Banktresors, dann sollte man sich den vorherigen Stand schon merken. Bei richtigen Computersystemen werden wichtige Daten in Datenbanken gespeichert und die Methoden werden in sog. Logging-Dateien protokolliert, damit man später nachgucken kann, wer wann etwas geändert hat.

Wichtig: Programmierung ist umständlich, denn alles muss man genau spezifizieren. Umständlichkeit kostet Arbeitszeit und damit auch Geld. Darum versucht man in der Informatik, die Programme so einfach wie möglich und so umfangreich wie notwendig zu gestalten.

Die step()-Methode ändert den Zustand des Objekts, daher wird sie auch Zustandsänderungsmethode genannt. Mathematisch betrachtet, drückt die Methode die Differenz zwischen den beiden Zuständen aus, sie ist eine Differenzfunktion.

Wir haben ein Modell der drei Kugeln programmiert und können dieses „simulieren“, in dem wir die step()-Methoden für alle drei Kreise u, v und w aufrufen:

num t = 0;
while (t < 10) {
    u.step(); v.step(); w.step();
    t = t + 1;
}

Wenn man diesen Programmcode verstehen will, muss man ihn Zeile für Zeile „interpretieren“. Die Variable t steht für die Zeit und hat zuerst den Wert 0. Der Wert dieser Variablen kann später wieder geändert werden. Dann werden in einer sog. while-Schleife die step()-Methoden von u, v und w aufgerufen und anschließend t um 1 erhöht. Die Variable t wird schrittweise ausgehend von 0 hochgezählt. Am Anfang befinden wir uns zum Zeitpunkt t=0, dann kommt t=1, dann t=2, usw. Die while-Schleife beendet sich, wenn t gleich 10 ist.

Wir haben damit eine Simulation geschrieben. In der folgenden Abbildung sind die Änderungen für die ersten drei Schritte eingezeichnet:

Die velocity der grauen Kugel ist (0, 0) daher bewegt sich diese nicht. Die mittelgroße blaue Kugel wandert in Richtung der x-Achse, weil die velocity (2, 0) ist und die kleine rote Kugel diagonal „nach unten links“ weil die velocity gleich (-1, -1) ist.

Nun hat unsere Zeit in der Variablen t im Vergleich zur richtigen Zeit einen großen Unterschied: die natürliche Zeit ist kontinuierlich und besteht nicht aus „Schritten“. Eine Sekunde lässt sich beliebig oft in kleinere Teile zerlegen. Die simulierte Zeit t aber ist diskret, sie besteht aus einzelnen Punkten. Dieses ist eine starke Vereinfachung, aber damit wird die Programmierung des Modells einfacher.

Man könnte sich jetzt die Frage stellen, ob der rote und der blaue Kreis zusammenstoßen werden? In der Realität ja, aber nicht in diesem Modell. Man müsste erst eine „Kollisionserkennung“ programmieren. Das Modell spiegelt die Realität nicht wieder.

Differenzialrechnung

Ein Problem unseres Modells ist, das wir sehr viel rechnen müssen, um herauszufinden, wo sich die Kugeln zum Zeitpunkt t=1.000.000 befinden. In der obigen Simulation fangen wir bei t=0 an und müssen dann eine Million Mal step() aufrufen. Das kann bei umfangreichen Modellen den Computer ganz schön fordern. Geht das nicht schneller?

In der Mathematik hat sich hier die Differentialrechnung etabliert. Mit dieser kann man für eine Differenzfunktion eine sog. geschlossene Formel ermitteln, mit der man das Ergebnis für beliebige Werte von t direkt berechnen kann. Für die drei Kreise ist das z. B. einfach. Die folgenden drei Funktionen berechnen die Position der Kugel zum Zeitpunkt t auch ohne Simulation:

rot(t) = (9, 4) + t * (-1,-1)

blau(t) = (2, 1) + t * (2, 0)

grau(t) = (5, 3)

Wichtig: Mit einer geschlossenen Formel können die Werte für einen beliebigen Zeitpunkt t ganz einfach berechnet werden. Die Simulation wird nicht benötigt.

Das ist in vielen Fällen bei aufwendigen Modellen eine riesige Zeitersparnis. Aber leider gibt es diese geschlossenen Formeln nur für ziemlich einfache Differenzfunktionen bzw. step()-Methoden. Hierauf kommen wir später noch zurück.

Ein „kompliziertes“ Modell

In der fernen Galaxie der drei Kreise machen die Forscher eine neue Entdeckung: die Schwerkraft. Die Schwerkraft ist proportional zur Masse des Planeten und der Entfernung und sorgt dafür, dass die anderen Planeten angezogen werden. Die Planeten beeinflussen sich gegenseitig. Wir überspringen hier die physikalische Theorie und passen ein bereits fertiges Programm an unser zweidimensionales Modell an [Wil13].

Die step()-Methode mit Schwerkraft ist allerdings schon etwas komplizierter. Leser, die nicht an der Programmierung interessiert sind, können beruhigt sein, denn es ist der letzte Code in diesem Buch. Interessierte hingegen können den Code auf der Homepage des Buchs ausprobieren und herunterladen:

step() {
    Vector force = new Vector(0, 0);
    objects
        .where( (Circle c) => c != this)
        .forEach( (Circle c) => force += bodyBodyInteraction(position, c.position, c.mass));
    velocity = velocity + new Vector(force.x / mass, force.y / mass);
    position = position + velocity;
}

In der ersten einfacheren step()-Methode wurde nur die position geändert. Mit der Schwerkraft ändert sich aber auch die velocity. Zuerst werden die Kräfte force für alle anderen Kreise in objects mit der Hilfsfunktion bodyBodyInteraction() addiert. Anschließend wird eine neue velocity berechnet und mit dieser dann die neue position.

Die Simulation ist damit schon komplizierter geworden. Die Bewegungen eines Planeten hängen von den anderen Planeten ab. Diese Simulation ist die Grundlage des sog. n-Körper-Problems („n-body problem“), das viele wissenschaftliche Anwendungen hat [Wil13]:

  • Simulation der Planetenlaufbahnen in der Astronomie
  • Molekulare Modellierung chemischer Moleküle
  • Partikel-Systeme bei der Simulation von Wasser oder Feuer

Graphen und Netzwerke

Die bisherige Darstellung war die anschauliche aus der „richtigen“ physikalischen Welt. Wir können das Modell aber auch abstrakter darstellen. In unserem ersten System haben wir drei Elemente, zwischen denen keine Abhängigkeiten bestehen. Wir zeichnen sie einfach nebeneinander in das folgende Diagramm ein.

Jedes Element hat mehrere Attribute-Wert-Paare, die die Eigenschaften bzw. den Zustand bestimmen. Die einzelnen Elemente sind unabhängig voneinander. Im zweiten System wirkte die Schwerkraft auf die „Planeten“ ein. In der folgenden Abbildung ist die Schwerkraft als Pfeil eingezeichnet:

Wir können uns das Modell auch etwas abstrakter zeichnen und „Elemente“ hinzufügen.

Ein solch abstraktes Gebilde wird Graph oder auch Netzwerk genannt. Graphen werden in vielen Wissenschaften verwendet, wie z. B. der Mathematik, der Informatik, den Sozialwissenschaften, der Ökonomie und der Biologie. Auch die Nahverkehrspläne einer Stadt oder der Linienplan der Eisenbahn sind Graphen.

Ein Graph besteht aus einer Menge von Knoten (die „Planeten“ in unserer Simulation) und aus Kanten zwischen diesen Knoten, die durch die schwarzen Pfeile dargestellt werden. Mit den Kanten werden Beziehungen, auch Relationen genannt, zwischen den Knoten modelliert. Die Schwerkraft war die Beziehung zwischen den einzelnen „Planeten“. Das letzte Diagramm z. B. enthält drei Graphen: der linke Graph hat 3 Knoten und 3 Kanten, der mittlere hat 4 Knoten und 6 Kanten und der rechte hat 5 Knoten und 10 Kanten.

Es gibt unterschiedliche Arten von Graphen. In folgendem Beispiel sind die Kanten „gerichtet“ und nicht mehr bidirektional und es sind „Schlaufen“ erlaubt, mit der ein Knoten mit sich selbst verbunden werden kann.

Bei gerichteten Graphen kann es passieren, dass manche Knoten von anderen nicht mehr erreicht werden können. Der helle Knoten z. B. hat nur „ausgehende“ Kanten, die anderen können ihn nicht erreichen.

Der Vorteil am hohen Abstraktionsgrad von Graphen ist, dass man sie in verschiedenen Gebieten einsetzen kann und die Graphentheorie „wiederverwenden“ kann. Es gibt z. B. die folgenden Netze, die gut mit Graphen modelliert und analysiert werden können:

  • Technische Netze: Internet, Telefonnetz, Strom, Wasser, Gas
  • Soziale Netze: Freundschaften, Familien, Bekanntschaften, Kontakte
  • Ökonomische Netze: Ausbreitung von Finanzkrisen, Logistik, Transport
  • Informationsnetze: Nachrichten, Internet, WWW
  • Biologische Netze: Metabolische Netze, Übertragung von Epidemien, Neuronale Netze

In einem sozialen Netzwerk sind Menschen miteinander befreundet. In folgendem Diagramm ist ein Netzwerk mit den vier Personen Anton, Berta, Charlie und Dennis dargestellt.

Bei bidirektionalen Kanten lässt man die Pfeilspitzen in der Regel weg, so auch in diesem Graphen. Wenn zwei Knoten verbunden sind, dann sind sie befreundet. Die Anzahl der Kanten eines Knotens sind dann die Anzahl der Freunde der Person im Netzwerk. Anton hat zwei Freunde und Berta hat drei.

Ein Netzwerk kann auch aus Knoten mit einem unterschiedlichen Typ bestehen. Neben Personen könnte es beispielsweise auch Städte beinhalten. Diese unterschiedlichen Typen kann man z. B. durch verschiedene Formen oder Farben visualisieren. In folgendem Beispiel sind die Städte mit dunkleren Knoten gekennzeichnet. Die Kanten zu diesen Knoten sind gepunktet gezeichnet.

Anton und Charlie wohnen in Köln, Berta in Berlin und der Wohnort von Dennis ist nicht bekannt.

In der Realität können die Graphen sehr kompliziert werden. Hier wurden Programme zur Visualisierung entwickelt, wie z. B. Gephi2.

Die Analyse von Netzwerken ist ein noch recht junges Gebiet, denn ohne Computer sind nur sehr kleine Netzwerke analysierbar. In Zukunft wird ein großer Teil der Wissenschaften die Netzwerktheorie bzw. die Graphentheorie benutzen.

Computernetze

Auch Computernetze lassen sich als Graphen darstellen. Die folgenden verschiedenen Netzarten sind die bekanntesten:

  • Internet: Großes internationales Netz, meistens über Kabel verbunden
  • Intranet: Über Kabel verbundenes Netz in Unternehmen oder anderen Organisationen
  • WLAN („wireless local area network“): Netz für kleinere Gebäude, Heimnetz für Privathaushalte
  • 3G und 4G: Telekommunikationsnetze für Mobiltelefone

Es gibt zwei wesentliche Methoden, wie man verschiedene Geräte miteinander verbinden kann:

  • Client-Server
  • Peer-to-Peer (P2P)

Nehmen wir als Beispiel an, Anton, Berta und Charlie wollen sich auf einer Webseite einloggen, auf der sie miteinander „chatten“ können. Der Rechner für diese Webseite wird „Server“ genannt. Anton, Berta und Charlie benutzen einen Web-Browser als „Client“. Diese Architektur wird daher auch Client-Server-Architektur genannt und ist in der folgenden Abbildung dargestellt.

Links im Bild sind Anton mit seinem Laptop, Berta mit ihrem PC und Charlie mit seinem Mobiltelefon. Rechts ist der WWW-Server. Zwischen ihnen ist ein nicht näher spezifiziertes Netz, das in Diagrammen oft als Wolke (englisch „cloud“) dargestellt wird. Das hat zum Begriff „Cloud-Computing“ bei Internet-Diensten geführt, wie z. B. beim Cloud-Speicher, wo man Platz für Daten auf einem entfernten Server bekommt.

Anton, Berta und Charlie tauschen jetzt Nachrichten miteinander über den Server aus. Eine Client-Server-Architektur ist fehleranfällig, denn ohne Server funktioniert die Kommunikation zwischen Anton, Berta und Charlie nicht. In einer Diktatur wäre es einfach möglich, einen solchen Dienst abzuschalten oder zu überwachen.

Eine Alternative ist ein sog. Peer-to-Peer-Netzwerk (P2P). Hier wird die Software, die sich bisher auf dem Server befunden hat, auf alle Clients verteilt. Jeder Teilnehmer ist jetzt auch teilweise ein Server.

Solche P2P-Applikationen bekamen allerdings aufgrund von Tauschbörsen, auf denen raubkopierte Musik oder Filme getauscht wurden, einen schlechten Ruf. Die P2P-Architektur ist aber ausfallsicherer und nicht einfach zu kontrollieren. In Diktaturen sind sie daher ein wichtiges Mittel, um sicher zu kommunizieren. Ein weiteres Beispiel für eine P2P-Applikation ist die Crypto-Währung Bitcoin.

Ein „komplexes“ Modell

Das physikalische System war schon dynamisch aber noch einfach zu verstehen, weil sich die einzelnen Planeten deterministisch nach einem festen Muster verhalten. Die Planeten haben schon Abhängigkeiten, aber diese sind konstant und ändern sich nicht. Die Planeten können nicht selber entscheiden, wohin sie fliegen. „Komplex“ wird es erst, wenn die Elemente eigene Entscheidungen machen und sich anpassen können.

Das Schelling-Modell, benannt nach seinem Erfinder Thomas C. Schelling, besteht aus m*n Grundstücken [Sch78]. Ein Grundstück kann entweder frei sein oder ein roter rautenförmiger oder ein blauer quadratischer „Agent“ wohnt auf diesem3. Das Feld startet mit einer zufälligen Belegung von roten, blauen und leeren Feldern. In der folgenden Abbildung ist ein solches Modell abgebildet:

In jeder Runde guckt jeder „Agent“, wie viele Nachbarn die gleiche Farbe haben. Wenn mehr als eine bestimmte Anzahl eine andere Farbe hat, dann zieht der Agent auf ein anderes freies Feld um. Die Nachbarschaft eines Agenten sind die Felder um ihn herum. In der folgenden Abbildung sind zwei unterschiedliche Nachbarschaften für einen Agenten dargestellt:

Der Agent befindet sich in der Mitte. Die Moore-Nachbarschaft links im Bild besteht nur aus vier Nachbarn: oben, unten, links und rechts. Die von-Neumann-Nachbarschaft beinhaltet zusätzlich auch die diagonalen Nachbarn4.

Der Agent ist in unserem Beispiel so einfach wie möglich gehalten: In jedem Schritt beguckt er seine von-Neumann-Nachbarschaft (mit acht Nachbarn) und zählt die unterschiedlichen Farben. Sind zu wenig Gleiche darunter, so zieht er um in irgendein noch freies Feld. Man sagt, der Agent ist „adaptiv“, er ändert aufgrund seiner Umgebung sein Verhalten.

Frage: Wie sieht das Spielfeld nach ein paar Zügen aus, auch wenn der Agent bereit ist, in einer „Minderheit“ zu leben mit nur mindestens 3 gleichen Nachbarn von 8?

Thomas C. Schelling hat dieses Gedankenexperiment in den 70er-Jahren gemacht und musste es noch von Hand ausrechnen. Heute kann man es mit Computersimulationen einfach berechnen. Auf der Homepage des Buchs kann man es auch ausprobieren. Bei mindestens drei gleichen Nachbarn entwickelt sich das Spielfeld in den ersten beiden Schritten folgendermaßen:

Links ist die Ausgangssituation, in der Mitte der erste Schritt und rechts der zweite. Hier ist schon klar erkennbar, dass sich die beiden Gruppen voneinander trennen. Wie kann das sein? Die Agenten akzeptieren doch, in einer Minderheit von mindestens drei gleichen Nachbarn zu wohnen. Trotzdem entstehen „Wohnblöcke“ mit gleichen Agenten. In der Soziologie nennt man das Segregation, lat. von absondern/sich trennen.

Die folgende Abbildung zeigt die Spielfelder nach fünf Schritten für unterschiedliche Mindestanzahlen von gleichen Nachbarn: 2, 3 und 4:

Auch hier sind die „Blöcke“ klar zu erkennen. Es entsteht ein Gruppenverhalten, das nicht „einprogrammiert“ wurde. Kritiker könnten der Gesellschaft in der Mitte bei mindestens drei gleichen Nachbarn schon „Rassismus“ vorwerfen, dabei ist jeder einzelne Agent tolerant. In einer Demokratie aber, benötigt man aber immer eine Mehrheit von 51%, d.h. die Agenten müssen auf mindestens 4 gleiche Nachbarn bestehen, um ein „Unentschieden“ erreichen zu können. Dann entsteht allerdings schon eine klare Trennung.

Das Gruppenverhalten wurde nicht explizit in den einzelnen Agenten einprogrammiert, sondern es ist entstanden. Man sagt, das Verhalten ist emergent. Das Problem bei emergentem Verhalten ist, dass es keiner vorhergesehen hat. Hier macht der Satz „das Ganze ist mehr als die Summe seiner Teile“ wirklich Sinn5.

Wichtig: Emergentes Verhalten entsteht unvorhergesehen durch Wiederholung von Interaktionen.

Das Problem für die Wissenschaft ist, dass dieses emergente Verhalten nicht vorher herausgefunden werden kann. Man sieht es der step()-Funktion nicht an. Dieses besteht aus einer einfachen Regel „IF (Anzahl der gleichen Nachbarn <= 3) THEN ziehe um ELSE bleibe“. Es entsteht globales Verhalten aus den einzelnen lokalen Aktionen der Agenten.

Auch für Mathematiker, die gerne die Differentialrechnung verwenden, gibt es hier ein Problem: Für diese einfache Regel konnte bisher mit der Differentialrechnung keine Lösung gefunden werden [EK10]. Bei den ersten beiden Beispielen mit den drei „Planeten“ war das noch möglich. Da konnte man z. B. eine Million Berechnungen sparen, weil man diese geschlossene Formel hatte. Das ist hier nicht möglich.

Wichtig: Ein System mit emergentem V erhalten wird auch komplexes System genannt. Komplexe Systeme müssen simuliert werden. Die Mathematik kann solche dynamischen Prozesse nicht beschreiben.

Dieses Beispiel ist eine einfache Variante des von Thomas C. Schelling bereits 1969 veröffentlichten Modells. Schelling war ein Pionier der komplexen Systeme und sein 1978 erschienenes Buch „Micromotives and Macrobehavior“ war sehr einflussreich [Sch78]. Schelling hat für seine Arbeiten in der Spieltheorie 2005 zusammen mit Robert J. Aumann den „Nobelpreis“ für Wirtschaftswissenschaften erhalten6.

Ein Modell ist eine Abstraktion und eine Vereinfachung der Realität. Dieses Beispiel ist nach dem Prinzip von „Ockham’s Rasiermesser“ mit Absicht so minimalistisch. Es ist das kleinste Modell, das die Segregation erzeugt. Dieses einfache Modell kann aber der Ausgangspunkt für weitere Untersuchungen sein, denn man könnte es auf verschiedene Arten erweitern [EK10, Bat07, RG11, EA96, MP07]:

  • Mehr als zwei verschiedenen Farben der Agenten „rot“ und „blau“
  • Größere Nachbarschaften: alle Nachbarn, die in zwei Schritten erreichbar sind
  • Verschiedene Grenzwerte für den Umzug: Rote ziehen um bei weniger als 3 gleichen Nachbarn, Blaue bei weniger als 2 gleichen Nachbarn
  • Die Entfernung könnte bei einem Umzug eingeschränkt werden
  • Man könnte Mieten bzw. Grundstückspreise einführen

Agentenbasierte Modellierung (ABM)

In den vorherigen Beispielen haben wir bereits „Agenten“ benutzt. Jetzt ist es an der Zeit, den Begriff zu klären. Ein Agent handelt, er „agiert“. Das Wort stammt aus dem lateinischen „agere“ und bedeutet eben „handeln“ oder „betreiben“. Ein Agent lebt in einer Umwelt („environment“) und nimmt Informationen über seine Sensoren war. Mit seinen Aktuatoren kann der Agent mit der Umwelt interagieren. Ein Agent handelt nach definierten Regeln. In einer Simulation wird eine Anzahl Agenten in einer Umwelt „ausgesetzt“. In jedem Zeitschritt dürfen die Agenten dann nach ihren Regeln wahrnehmen und handeln. Agenten bilden künstliche Gesellschaften („artificial societies“), die während einer Simulation entstehen und sich ändern. Ziel einer Simulation ist zu verstehen, wie und unter welchen Umständen emergentes Verhalten auftritt. Es entsteht ein „CompuTerrarium“ [EA96].

Man spricht hier auch von agentenbasierter-Modellierung (ABM) [RG11, EA96, WR15]. Es ist eine neue Art, Wissenschaft zu betreiben. Kenneth J. Arrow, der 1972 den „Nobelpreis“ für Wirtschaftswissenschaften erhielt und das berühmte Arrow-Theorem fand, sagte 2006 „Ich bin überzeugt, dass die agentenbasierten Versuche in der Ökonomie ein wichtiges Werkzeug werden“ [Eps06].

Aber ABM erfordert ein Umdenken. Probleme werden aus der Sicht der Individuen formuliert und nicht aus der Sicht der Gesamtheit. Die Welt wird von „unten“ betrachtet und nicht von „oben“. Es ist eine „bottom-up“-Modellierung und keine „top-down“-Modellierung. Der Schriftsteller Leo Tolstoi (1828 - 1910) war einer der ersten Menschen, der diese „bottom-up“-Sichtweise beschrieb [Eps14]. In seinem Werk „Krieg und Frieden“ schrieb er 1812 folgendes:

„Um die Gesetze der Geschichte zu studieren, müssen wir in dem Gegenstand der Betrachtung einen vollständigen Wechsel vornehmen, müssen die Herrscher, Minister und Generale beiseite lassen und die gleichartigen, unendlich kleinen Triebkräfte untersuchen, durch welche die Massen sich leiten lassen.“

… und …

„Nur wenn wir einen unendlich kleinen Einzelteil (das Differential der Geschichte, d.h. die gleichartigen Bestrebungen der Menschen) zum Gegenstand der Betrachtung machen und uns auf die Integralrechnung verstehen (die Kunst, die Summe dieser unendlich kleinen Einzelteile zu berechnen), nur dann können wir hoffen, zu einem Verständnis der Gesetze der Geschichte zu gelangen.“

Dieses „Differential“ ist die step()-Methode. Aber so innovativ Tolstoi hier auch war, so irrte er sich auch ein bisschen, denn wie wir inzwischen wissen, reicht es nicht, „die Summe dieser unendlich kleinen Einzelteile zu berechnen“, sondern wir müssen „das Produkt simulieren“.

ABM wurden bereits mit Erfolg in sehr vielen verschiedenen Bereichen angewendet. Dynamische Prozesse lassen sich sehr gut mit Ihnen darstellen. ABMs halfen zum Beispiel mit, folgende Fragen zu klären:

  • Wie entstehen gesellschaftliche Normen und Gebräuche? [Eps06]
  • Wie breiten sich Waldbrände aus? [WR15]
  • Wie entwickeln sich Städte? [WR15, EA96, Bat07]
  • Wie breiten sich Epidemien und anderen Krankheiten aus? [WR15]
  • Wo entstehen Staus im Verkehr? [WR15]
  • Wie können Regenwälder sowohl wirtschaftlich genutzt werden, als auch die Artenvielfalt erhalten bleiben? [RG11]
  • Wie wachsen Tumore? [WR15]

Die ABMs sind noch eine recht junge Entwicklung und ihre Verbreitung nimmt immer weiter zu. Im Folgenden werden wir ein paar ABMs vorstellen.

Sugarscape

Joshua M. Epstein und Robert Axtell haben 1996 in ihrem Buch „Growing Artificial Societies: Social Science from the Bottom Up“ ein bis heute oft verwendetes Modell namens „Sugarscape“ erschaffen [EA96]. Sugarscape besteht aus einem 2D-Gitter von Zellen. In manchen dieser Zellen wächst in jedem Zeitschritt eine zufällige Menge von Zucker. Die Agenten haben einen Stoffwechsel (Metabolismus) und benötigen in jedem Zeitschritt eine zufällig bestimmte Menge von Zucker. Sie können diesen Zucker von dem Feld ernten, auf dem sie sich gerade befinden. Zucker, den sie nicht verbrauchen, halten sie als Vorrat vor. In jeder Zelle kann sich höchstens ein Agent befinden. In der folgenden Abbildung ist ein „Sugarscape“ skizziert:

Zucker wird durch die kleinen Klötzchen symbolisiert. Es gibt drei Agenten: Hell, Mittel und Dunkel. Nur „Mittel“ hat etwas zu essen. Die anderen beiden stehen auf Feldern, auf denen es nichts gibt. Die Agenten haben eine zufällig bestimmte Sichtweite, mit der sie ihre Umgebung nach Zucker durchsuchen können, wie in der nächsten Abbildung skizziert:

Der helle Agent mit einer Sichtweite von 1 sieht nur die nächsten Nachbarn, der mittelgraue Agent mit einer Sichtweite von 2 sieht auch die Nachbarn der nächsten Nachbarn. Die Agenten können nicht diagonal gucken, sie betrachten ihre Moore-Nachbarschaft.

Bei der Simulation wird am Anfang festgelegt, wieviel Zucker sich in jeder Zelle befindet. Dann wird die Agentenpopulation definiert und der Metabolismus und die Sichtweite jedes Agenten festgelegt. In der step()-Methode führt der Agent die folgenden Schritte durch:

  1. Wieviel Zucker finde ich in meiner Umgebung in meiner Sichtweite?
  2. Ist das mehr Zucker als auf dem Feld, auf dem ich gerade stehe?
  3. Wenn ja, gehe dorthin, andernfalls bleibe
  4. Nimm den Zucker aus der aktuellen Zelle
  5. Esse genügend Zucker, falls nicht genügend vorhanden ist, „stirb“ und scheide aus

Und so geht es dann für jeden Zeitschritt weiter. Die folgende Abbildung zeigt einen Screenshot mit dem Werkzeug NetLogo.

Hier gibt es sehr viele Variationsmöglichkeiten:

  • Die Größe des Spielfelds und die Anzahl der Agenten
  • Wieviel Zucker kann sich auf einer Zelle befinden?
  • Wie schnell wächst der Zucker? Schnell oder nur langsam, z. B. ein Stück pro Zeitschritt?
  • Agenten könnten eine beschränkte Lebensdauer haben. Nach t Zeitschritten sterben sie dann automatisch. Ein neuer Agent wird als Ersatz zufällig hinzugefügt.

Epstein und Axtell gehen in ihrem Buch verschiedene Möglichkeiten durch. In dieser einfachen „Spielwelt“ lassen sich schon drei aus der Realität bekannte Eigenschaften zeigen [EA96]:

Erstens kann eine Umgebung nur eine bestimmte Menge von Lebewesen verkraften, sie hat eine „Tragfähigkeit“ („carrying capacity“) wie in der Ökologie. Wenn zu viele Agenten erzeugt werden, kann die Umgebung diese nicht mehr ernähren. Das mag jetzt auf den ersten Blick trivial erscheinen, aber in einem komplexeren Modell könnte man wirkliche Landwirtschaften modellieren und berechnen, wie viele Menschen sich von dieser Landwirtschaft ernähren können.

Zweitens wird bei Simulationen mit einer hohen Anzahl von Agenten über der „Tragfähigkeit“ deutlich, dass eine „Selektion“ entsteht. Agenten mit einer hohen Blickweite und geringem Metabolismus überleben eher als andere.

Drittens können die Agenten einen Zuckervorrat sammeln, sie können zu Wohlstand kommen. Man hat hier die „Verteilung“ des Vermögens der Agenten analysiert und festgestellt, dass es sich um eine sog. Pareto-Verteilung handelt, benannt nach Vilfredo Pareto (1848 - 1923). Diese Wohlstandsverteilung ist eine emergente Eigenschaft und wird in folgendem Graphen dargestellt:

Die reichen Agenten haben also sehr viel mehr Zucker als die ärmeren. Das heißt also: der Wohlstand ist ungleich „verteilt“. Pareto hatte diese Verteilung übrigens gefunden, als er die realen Einkommen in Italien untersuchte. Diese Art von Verteilung findet man in vielen komplexen Systemen. Ein weiteres Beispiel für eine Pareto-Verteilung ist die Verteilung von Wörtern in einem deutschen Text. Es gibt Wörter, die sehr viel öfter vorkommen als andere, wie z. B. „der“, „die“, „das“, „ein“, „aus“, usw.

Hier muss man anmerken, dass der Begriff „Verteilung“ aus der Statistik stammt und sich darauf bezieht, wie häufig bestimmte Werte auftreten, wie sie sich „verteilen“. Es heißt nicht, dass es irgendwo einen „Verteiler“ gibt. Es gibt niemanden, der diese Verteilung durchführt. Wenn man jetzt die obige Verteilung eine „ungerechte Verteilung“ nennen würde, dann trifft das den Kern der Sache nicht, denn es ist niemand in diesem Modell „ungerecht“. Kein Agent tut in diesem Modell den anderen etwas an. Sie arbeiten alle nur vor sich hin. Komplexe Systeme haben keine interne oder externe Steuerung, sondern sie „regeln sich selbst“. Es entsteht eine „spontane Ordnung“ („spontaneous order“). Diese „Ordnung“ muss allerdings nicht im Sinne des Betrachters sein und kann auch große Ungleichheiten erzeugen.

In diesem Modell entstehen die Ungleichheiten dadurch, dass die Agenten einen unterschiedlichen Stoffwechsel und Sichtfähigkeiten haben. Außerdem ist der Zucker ungleich verteilt. Hier in der Simulation gilt momentan „Wer zuerst kommt, malt zuerst“. Wer am Anfang durch Zufall auf einer zuckerreichen Zelle ist, hat Vorteile. Das emergente „bottom-up“-Verhalten zeigt also nicht erwünschte Resultate.

Das Gegenteil von „bottom-up“ ist „top-down“ und hier am einfachen Beispiel kann man schon überlegen, wie man durch „Interventionen“ diese Wirtschaft den eigenen Vorstellungen von „Gerechtigkeit“ anpassen könnte. Ist es besser wenn alle gleich viel Wohlstand haben? Wie könnte man das erreichen? „Einfach einsammeln und verteilen“ klingt einfacher als es ist, denn diese „Umverteilung“ muss auch durch Agenten erfolgen. Man benötigt Agenten, die Zucker einsammeln und an ärmere verteilen. Aber wer bestimmt, wieviel Zucker eingesammelt wird und wer arm genug ist, dass er welchen enthält? Wird das zentral für alle entschieden? Muss man mit diesen „Umverteilern“ auch Politiker und eine ganze Demokratie implementieren? Die Umverteilung muss durch Agenten geschehen, die auch Zucker essen müssen, weil auch sie einen Stoffwechsel haben. Dürfen die vom eingesammelten Zucker essen? Ein Agent mit einem hohen Metabolismus könnte zum Umverteiler werden, weil er nur so an den vielen Zucker kommt.

Das Sugarscape-Modell mag erst einfach und trivial erscheinen, aber es entstehen hier schon eine Menge politischer Fragen, die gar nicht einfach zu lösen bzw. zu implementieren sind. Als Programmierer kann man an dieser Stelle nicht einfach sagen „das muss der Staat machen“ und die Sache damit auf sich beruhen lassen, weil den Staat müsste man auch erst programmieren. Und bevor man das machen kann, muss man sich fragen „wie genau soll der Staat das denn eigentlich machen“? Welche Mittel stehen ihm eigentlich zur Verfügung? Wer bezahlt ihn? Wer sorgt dafür, dass die „Umverteiler“ sich die „Diäten“ nicht ständig erhöhen (hier mit Zucker bekommt der Begriff „Diät“ eine ganz neue Note).

Sugar and Spice

Im Laufe ihres Buchs untersuchen Epstein und Axtell viele Erweiterungen des Basismodells [EA96]:

  • Migration durch saisonale Effekte: Wenn Jahreszeiten eingeführt werden und der Zucker in manchen Regionen langsamer wächst, lassen sich Wanderungsbewegungen beobachten.
  • Umweltverschmutzung: Wenn der Abbau von Zucker Schmutz erzeugt, dann entstehen verschmutze Gebiete und die Agenten haben große Schwierigkeiten, sich zu ernähren.
  • Geschlechter und Vermehrung: Wenn man den Agenten ein Geschlecht gibt und sie Kinder haben können, lässt sich untersuchen, welche Merkmale sich fortpflanzen und wie sich die Bevölkerung entwickelt.
  • Kulturelle Attribute: Wie breiten sich bestimme Meinungen aus? Wie entstehen Netzwerke? Wie entstehen „Stämme“ von Agenten?
  • Aggressionen: Was passiert, wenn Aggressionen erlaubt werden?
  • Gewürz als zweites Gut: Wenn es zusätzlich zum Zucker eine zweite Ware „Gewürz“ („spice“) gibt und der Metabolismus der Agenten so geändert wird, dass Agenten beides zum Leben benötigen, dann entsteht Tauschhandel mit den Nachbarn. Hier lassen sich ökonomische Phänomene untersuchen, wie z. B. zu welchen Preisen die beiden Waren gehandelt werden.

Alle diese Beispiele machen deutlich, dass Komplexität mit sehr einfachen Mitteln erzeugt werden kann. Es treten hier viele bisher von Wissenschaft und Politik nicht gelöste Fragen auf. ABM kann aber helfen, auf diese Fragen Antworten zu finden.

Warum sind die Anasazi weggezogen?

Das „Long House Valley“ in Arizona im Südwesten der USA wurde jahrhundertelang von Anasazi-Indianern bewohnt. Aber recht plötzlich um 1300 n. Chr. verließ die gesamte Bevölkerung dieses Tal und es war danach für eine längere Zeit nicht mehr bewohnt. Manche Forscher vermuteten eine Dürre-Periode als Ursache.

Ausgehend von ihrem Sugarscape-Modell entwickelten Epstein und Axtell ein Modell dieses Tals [Eps06]. Das Tal ist 96 Quadratkilometer groß und befindet sich heute in einem Navajo-Indianer-Reservat. Es existierten umfangreiche Daten über das Klima und die Umwelt in diesem Tal aufgrund von Forschungsarbeiten. Die klimatischen Bedingungen im Tal erlaubten z. B. auch die Erforschung der landwirtschaftlichen Nutzung in der Vergangenheit. Durch Ausgrabungen bekam man Einblicke in die verschiedenen kulturellen Entwicklungsstufen der Bevölkerung im Laufe der Zeit. Man hatte herausgefunden, dass von 7000 bis 1800 v. Chr. Jäger und Sammler die Gegend spärlich besiedelten. Um 1800 v. Chr. begann die Landwirtschaft mit dem Anbau von Mais und führte dann zur Anasazi-Kultur bis zu deren plötzlichem Verschwinden um 1350 n. Chr. Für die Landwirtschaft sind geologische Kenntnisse über die Beschaffenheit des Bodens und der Wasservorkommen sehr wichtig.

Es mussten Daten aus sehr vielen verschiedenen Projekten und Datenbanken zusammengetragen werden. Es muss ausdrücklich betont werden, dass diese Arbeiten nur geschehen konnten, weil es wiederverwendbare Daten der vorherigen Forschungsarbeiten gab. Ohne diese „Datensammelei“ wäre diese Simulation nicht möglich. Man braucht hier auch Forscher, die den Umgang mit Daten genügend kennen, damit sie die Daten im richtigen Umfang und Format speichern. Man benötigt Forscher mit Daten- und Datenanalyse-Kenntnissen.

Die Simulation wurde von 800 v. Chr. bis 1350 n. Chr. berechnet. In diesem Modell wurden die Haushalte als „Agenten“ benutzt, weil man die genaue Anzahl der Einwohner und deren Verhalten nicht kannte, während die Anzahl der ca. 200 Haushalte aufgrund von Ausgrabungen bekannt war.

Das Ergebnis der Simulation ist, dass es nicht alleine an einer anhaltenden Dürre lag, dass die gesamte Bevölkerung das Tal verließ. Denn das Tal war zwar trockener geworden, aber es hätte noch für ein paar Einwohner gereicht. Das alle Einwohner geschlossen das Tal verließen, muss demnach auch soziale Gründe gehabt haben. Die Einwohner wollten sich wohl nicht voneinander trennen.

Das Modell ist auch in NetLogo verfügbar. Der folgende Screenshot zeigt einen Ausschnitt aus der Simulation.

Man sieht hier am Screenshot, dass die absoluten Bevölkerungszahlen in diesem Modell nicht richtig vorhergesagt wurden, aber das wurde in einem späteren Modell verbessert [Eps06, Kap. 5]. Der amerikanische Historiker Jared Diamond schrieb in der amerikanischen Zeitschrift Nature über dieses Projekt, das es einen „neuen Standard in der archäologischen Forschung“ darstellt.

„Menschlicher“ mit Agent_Zero

In der traditionellen agentenbasierten Modellierung sind Agenten oft recht mechanisch, weil sie nur einfache IF-THEN-Bedingungen abarbeiten. Aber gesellschaftliche Phänomene lassen sich nur mit „menschlicheren“ Agenten untersuchen. Daher hat Joshua M. Epstein ein „Software-Individuum“ entwickelt, dass er in seinem Buch „Agent_Zero: Toward Neurocognitive Foundations for Generative Social Science“ vorstellt [Eps14]. Agent_Zero soll sich „menschlicher“ verhalten, auch Fehler machen und kein perfekter „homo oeconomicus“ sein. Hierzu hat er drei verschiedene „Komponenten“:

  • Gefühle: emotional, gefühlsbezogen („affective“)
  • Denken: kognitiv, beratend („deliberative“)
  • Sozial: Netzwerk mit anderen, die ihn beeinflussen können

Diese Komponenten können auch gegensätzlicher Meinung sein: Agent_Zero hat daher ein „inneres Leben“ evtl. auch mit Widersprüchen. Agent_Zero soll so die Komplexität menschlichen Verhaltens besser darstellen.

Das liest sich jetzt natürlich besser, als es in Wirklichkeit ist: Agent_Zero besteht aus drei Funktionen, deren Ergebnisse addiert werden. Es sind relativ einfache Formeln, die aber anhand von Erkenntnissen von Neurowissenschaftlern entworfen wurden. Diese Formeln sind auch nach Meinung von Epstein alles andere als perfekt und nur als erster Ansatz zu begreifen. Sie erfüllen ihre Aufgabe seiner Meinung nach aber, denn sein Ziel ist nicht die Modellierung des Einzelnen, sondern der Gesellschaft. Wenn mehrere dieser einfachen Agenten „zusammenkommen“ erzeugen sie gesellschaftliches Verhalten, das er untersuchen möchte.

Hierzu simuliert er z. B. den arabischen Frühling 2011, die Entstehung von Konjunkturzyklen in der Wirtschaft oder amerikanische Gerichtsprozesse, bei denen die Herzen und Gehirne der Geschworenen zu gewinnen sind.

Komplexe Ökonomie

Der Wirtschaftswissenschaftler W. Brian Arthur hat wirtschaftswissenschaftliche Probleme mit Hilfe von komplexen Systemen und ABM untersucht. Seit den 80er-Jahren arbeitet er an der „komplexen Ökonomie“ („complexity economics“). Er hat z. B. die folgenden Themen mit ABM untersucht [Art14]:

  • Manipulation von Finanzsystemen
  • Verhalten von Aktienmärkten
  • Technologischer Wettbewerb und Skaleneffekte („increasing returns“)
  • Funktionsweise von Erfindungen

Die komplexe Ökonomie wird später in Kapitel 5 noch genauer behandelt.

Sie selbst als Agent

Sie sind der Agent, die anderen Menschen auch. Die Umgebung ist die richtige Welt. Was müsste man da alles in die step()-Funktion einprogrammieren? Denken Sie auch an Urlaub oder an die Rente? Wenn Sie ein Auto kaufen wollen, wieviel Kredit sollte man aufnehmen?

Was müsste der Agent alles berücksichtigen? Wirtschaftliches Verhalten auf jeden Fall. Aber dazu müsste man sich erst mal bewusst machen, warum man seine Einkäufe so macht, wie man sie macht. Die meisten Einkäufe z. B. im Supermarkt macht man aus Gewohnheit und ohne große Überlegung. Warum kaufe ich einen bestimmten Joghurt und wie bringe ich dem Agenten dieses bei? Die traditionellen Wirtschaftswissenschaften sehen die Wirtschaft aus der Vogelperspektive („top-down“), sie berechnen Aggregate und machen Modelle mit Differentialgleichungen.

Bei der agentenbasierten-Modellierung (ABM) wird eine ganz andere Perspektive benötigt, „bottom-up“. Hier in diesem Beispiel entspricht sie der Ego-Perspektive.

Komplexe Systeme

Einteilung

SystemWir haben jetzt verschiedene Modelle kennengelernt. Die Beispiele haben gezeigt: Ob ein System einfach oder kompliziert ist, hängt von verschiedenen Faktoren ab:

  • Anzahl der Elemente bzw. der Knoten
  • Komplexität der einzelnen Knoten, insbesondere der step()-Funktion
  • Die Anzahl und die „Komplexität“ der Beziehungen zwischen den Elementen

Systeme lassen sich umgangssprachlich folgendermaßen kategorisieren [Pea15]:

  • Einfach („obvious“)
  • Kompliziert („complicated“)
  • Komplex („complex“)
  • Chaotisch („chaotic“)

Das sind keine wissenschaftlichen Definitionen, aber im Alltag lassen sie sich gut verwenden.

In einem einfachen System sind Ursache und Wirkung klar erkennbar. Es gibt keine Nebenwirkungen. Jeder kann hier gelernte Rezepte anwenden, wie z. B. bei IKEA™ oder bei LEGO™.

In einem komplizierten System hingegen erfordert die Analyse von Ursache und Wirkung schon einigen Aufwand und Expertenwissen. Optimale Lösungen können mit einigem Aufwand berechnet werden. Das Wissen für die Lösung von Aufgaben in komplizierten Systemen wird in Schulen und Universitäten gelehrt. Lösungen entstehen aus der Kombination von bestehendem Wissen. Ein Krimi ist hier ein gutes Beispiel, allerdings nicht die einfachen im Fernsehen, sondern eher Agatha Christie, Ellery Queen oder John Dickson Carr.

In komplexen Systemen ist die Beziehung zwischen Ursache und Wirkung nur im Nachhinein ersichtlich. Optimale Lösungen sind nur sehr schwer zu finden oder es gibt sie nicht. Das Lösen des komplexen Systems überschreitet häufig die bei der formalen Bildung erhaltenen Fähigkeiten. Man muss Neues erfinden oder das bestehende Wissen auf neue Art anwenden.

Ein chaotisches System hingegen ist ein hoffnungsloser Fall. Es ist rational nicht feststellbar, was Ursache und was Wirkung ist.

Hier muss man streng unterscheiden, ob ein System komplex ist oder ob es nur als komplex angesehen wird. Schach z. B. wurde früher mal als komplex angesehen, bei näherer Betrachtung ist es aber ein einfaches mathematisches Optimierungsproblem und wird heute nur noch als kompliziert betrachtet, weil die Erstellung von Schachprogrammen heutzutage noch kompliziert ist. Ob ein System als einfach, kompliziert oder komplex gesehen wird, hängt also auch von der Bildung, vom Wissen und von der zur Verfügung stehenden Technik ab.

Eigenschaften von komplexen System

Komplexe Systeme zeigen emergentes Verhalten und besitzen darüber hinaus oft noch weitere besondere Eigenschaften [Hol14, EK10, MP07, Mit09]:

  • Selbst-Organisation: Komplexe Systeme haben keine interne oder externe Steuerung, sondern sie „regeln sich selbst“. Es entsteht eine „spontane Ordnung“ („spontaneous order“). Diese „Ordnung“ muss allerdings nicht im Sinne des Betrachters sein. Ein Beispiel hierfür sind Vogelschwärme.
  • Adaptivität: Die Agenten des Systems passen sich an und dadurch passt sich das ganze System an. Diese Anpassung kann durch Lernen oder durch Evolution erfolgen.
  • Dezentralität: Es gibt keine zentrale Kontrolle, nur Selbst-Kontrolle der einzelnen Elemente.
  • Jede Komponente hat relativ einfache Regeln. Das Gesamtsystem hat komplexes Verhalten.
  • Diversität: Einige komplexe Systeme werden im Laufe ihrer Existenz noch komplexer, in dem die Diversität der Elemente steigt. In einem Dschungel z. B. entstehen neue Tier-, Insekten- und Pflanzenarten.
  • Schmetterlingseffekt: Kleine Unterschiede in der Anfangskonfiguration können große Auswirkungen haben und zu ganz anderen Ergebnissen führen. Kann ein Schmetterling in Brasilien einen Wirbelsturm in Texas auslösen? [TG15]

In manchen Büchern wird zwischen „complex physical systems“ (CPS) und „complex adaptive systems“ (CAS) unterschieden. Andere unterscheiden „komplexe Systeme“ und „komplexe adaptive Systeme“. Das machen wir hier aus Gründen der Einfachheit nicht.

Differentialgleichungen

Das traditionelle wissenschaftliche Mittel, um dynamische Systeme zu beschreiben sind Differentialgleichungen. Diese drücken ähnlich wie die step()-Methode die Unterschiede bezüglich der Zeit aus. Für einen PKW ist dieses Differential z. B. die Geschwindigkeit und wird in km/h angegeben. Für viele einfache und komplizierte Systeme in den Wissenschaften sind diese Differentialgleichungen oft die beste Wahl7. Aber mit komplexen Systemen haben sie ihre Schwierigkeiten.

Wichtig: Die Differentialgleichungen sind nicht für komplexe Systemen geeignet, diese müssen mit ABM simuliert werden.

Agenten-basierte-Modellierung (ABM), Teil 2

ABMs haben daher viele Vorteile im Vergleich zu den Differentialgleichungen, denn man benötigt nur rudimentäre Programmierkenntnisse und die „bottom-up“-Perspektive ist sehr viel natürlicher [Eps06, RG11, EA96]. ABMs sind einfacher zu verstehen und bieten oft auch kausale Erklärungen an, während mathematische Methoden in der Regel nur aus Zahlen bestehen und „number crunching“ sind. Ein weiterer Vorteil von ABM ist, dass es zwischen Simulationen und Computerspielen einen fließenden Übergang gibt [BP12].

Das Ziel der agentenbasierten Modellierung ist, bestimmtes emergentes Verhalten von Systemen zu erzeugen und zu untersuchen. Es ist ein neues wissenschaftliches Instrument für eine „generative Wissenschaft“ und erzeugt „generative Erklärungen“ [Eps06, WR15].

Momentan sind ABMs allerdings noch nicht sehr weit verbreitet: Menschen haben Traditionen und Gewohnheiten. Wenn jemand schon sehr viel Zeit und Arbeit in eine wissenschaftliche Methode gesteckt hat, warum sollte er eine zweite Methode lernen und wieder bei Null anfangen? Hier hilft ein Vergleich des wissenschaftlichen Fortschritts mit der Wanderung durch ein Gebirge [CK14]. Die einzelnen Berge stellen die wissenschaftlichen Methoden dar und je höher man kommt, desto mehr weiß der Bergsteiger bzw. Forscher. Das Wissen ist im Gebirge verborgen und der Wissenschaftler sucht einen Weg hindurch. Auf der Wanderung ist er schon recht weit einen Berg hochgewandert. Doch dann entdeckt er in der Ferne einen noch höheren Berg, auf dem er noch bessere Erkenntnisse haben würde. Das Problem ist aber, dass er erst wieder ein gutes Stück hinuntersteigen müsste, um dann wieder erneut den höheren Berg zu besteigen. Er würde also auf einem niedrigeren Niveau wieder anfangen. Die Fortschritte auf dem ersten Berg verhindern oder verzögern ein Herabsteigen und ein Weitermachen auf dem zweiten Berg. Diese Problematik wird in der englischen Literatur „Twin Peaks“ genannt, wie die legendäre Fernsehserie aus den 90ern von David Lynch8.

Aber auch wenn ABM heutzutage noch nicht so weit verbreitet ist, ist es wichtig, die Probleme aus der „komplexen“ Perspektive zu betrachten.

Für Einsteiger gibt es u. a. die folgenden Software-Werkzeuge für die ABM:

  • NetLogo ist eine Variante der Programmiersprache Logo und angepasst an ABM. Es ist Open-Source, hat Schildkröten-Grafik und es gibt viele Beispiele, siehe http://netlogoweb.org. Als Einführung sind die Bücher „An Introduction to Agent-based Modeling“ von Uri Wilensky und William Rand [WR15] und „Agent-Based and Individual-Based Modeling: A Practical Introduction“ von Steven F. Railsback und Volker Grimm [RG11] geeignet.
  • Repast besteht aus mehreren Open-Source Produkten und bietet eine Entwicklungsumgebung auf Basis von Eclipse. Die Programmierung geschieht auch in einer Variante von Logo, ReLogo genannt, oder in Groovy oder Java, siehe http://repast.sourceforge.net/. Es sind Vorkenntnisse in der Software-Entwicklung mit Eclipse empfohlen.
  • StarLogo TNG ist eher für Kinder zum Lernen von Turtle-Grafik und graphischen Elementen, http://education.mit.edu/portfolio_page/starlogo-tng/.
  • MASON ist eine in Java geschriebene Bibliothek für Multi-Agenten-Simulationen. Es richtet sich eher an Software-Entwickler, http://cs.gmu.edu/~eclab/projects/mason/.
  • AnyLogic ist eine kommerzielle auch in der Industrie angewandte Plattform von der es eine Version für die private Nutzung zum Lernen zum Download gibt, http://www.anylogic.com.

Interventionen

Menschliches Handeln in komplexen Systemen

Der Psychologe Dietrich Dörner hat in seinem Buch „Die Logik des Misslingens“ beschrieben, welche Schwierigkeiten Menschen beim Umgang mit komplexen Systemen haben [Doe03]. Dörner und seine Mitarbeiter haben eine Computersimulation einer Landwirtschaft in Afrika entwickelt. Die Zusammenhänge der einzelnen Variablen in diesem Modell wurden explizit als komplexes System gestaltet. Der „Spieler“ hat diktatorische Vollmachten in der Simulation, d.h. er kann beliebig in die Wirtschaft eingreifen. Er kann Brunnen bauen lassen, Ackerland düngen, usw. Das Ziel von Dörner war zu untersuchen, wie Testpersonen mit einem solchem komplexen System umgehen. Was machen sie richtig? Was machen sie falsch?

Die Simulation verläuft in einer Reihe von Zeitschritten. Am Anfang jedes Zeitschritts bekommt der Spieler die Gelegenheit, sich Informationen über den Zustand der „Wirtschaft“ zu beschaffen. Anschließend kann er Handlungen veranlassen. Die Simulation berechnet daraufhin den nächsten Zustand und es folgt der nächste Zeitschritt.

Ein Ergebnis der Untersuchung ist, dass die Spieler den Umgang mit komplexen Systemen nicht intuitiv beherrschen. Es gibt die folgenden Schwierigkeiten [Doe03]:

  • Nach dem ersten Kennenlernen des Systems überschätzen die Spieler ihr Wissen über das System und unterschätzen die Komplexität des Systems. Sie sind nicht mehr selbstkritisch genug.
  • Schwierig ist auch die verspätete Rückmeldung des Systems. Negative Rückwirkungen sehen sie evtl. erst später an einer ganz anderen Stelle. Daher können sie Ursache und Wirkung oft kausal nicht miteinander in Beziehung bringen.
  • Unter Zeitdruck fangen die „Spieler“ an, ihre Aktionen zu „überdosieren“. Das System wird daraufhin in eine Richtung stark ausschlagen, der Spieler steuert dann wiederum zu stark dagegen und die Probleme schaukeln sich hoch.
  • Spieler denken eher in linearen kausalen Ketten (A -> B -> C) als in kausalen Netzen. Daher schätzen sie Nebenwirkungen und langfristige Wirkungen oft falsch ein.
  • Spieler unterließen nach falschen Aktionen die notwendige Selbstkritik und Selbstkorrektur und machten weiter wie bisher oder delegierten schwierige Aufgaben einfach an andere.
  • Oft wird exponentielles Wachstum zuerst nicht gesehen. Das sind Prozesse, wo etwas sehr stark wächst und werden später in Abschnitt 9.1 behandelt.

Dietrich Dörner vergleicht ein komplexes System mit einem Schachspiel, bei dem die Figuren mit Gummifäden aneinander hängen und sich gegenseitig beeinflussen. Damit ist es unmöglich, nur eine Figur zu bewegen. Der Spieler bewegt immer andere Figuren mit. Manchmal ist es sogar noch schlimmer und es gibt unbeobachtete Variablen. Dann ist ein Teil des Spielfelds für den Spieler nicht sichtbar und vernebelt. Der Spieler hat nur unvollständige Informationen [Doe03]. Bei komplexen Systemen muss man ganzheitlich denken und immer die Gesamtsituation beachten, man muss immer mehrere Aspekte im Auge behalten, weil von jeder Intervention mehr als ein Aspekt betroffen ist. Dietrich Dörner fasst es folgendermaßen zusammen „in einer Welt von interagierenden Teilsystemen muss man in interagierenden Teilsystemen denken, wenn man Erfolg haben will“.

Wichtig: Beim Umgang mit komplexen Systemen ist die „Komplexität“ zu berücksichtigen.

Entscheidungen in komplexen Systemen

Wenn in einem komplexen System etwas nicht stimmt und man „politisch“ und „top-down“ eingreifen will, wie beispielsweise bei der Zuckerverteilung in Sugarscape in Abschnitt 2.4, dann muss man sich ein Mittel überlegen, mit dem man das Ziel erreichen kann ohne fatale Nebenwirkungen loszutreten. In einfachen Systemen ist das ganz einfach:

  1. Überlege ein zu erreichendes Ziel
  2. Mit welchen Mitteln lässt sich das Ziel erreichen?
  3. Welche Nebenwirkungen haben die Mittel jeweils?
  4. Wähle das Mittel mit den geringsten Nebenwirkungen
  5. Wende das Mittel an

Und genau das ist in komplexen Systemen nicht so einfach, denn in Schritt 3 können die Nebenwirkungen nur bestimmt werden, wenn man das System gut kennt. Die Entscheidung in Schritt 4 ist auch schwierig, weil hier viele Kriterien gegeneinander abgewogen werden müssen. In komplexen Systemen werden Entscheidungen durch die folgenden Sachverhalte erschwert [Doe03]:

  • Komplexität und Vernetztheit: voneinander abhängige Variablen
  • Intransparenz: nicht alle Variablen sind sichtbar oder messbar
  • Dynamik: Das System entwickelt sich weiter und ändert sich, es hat eine Eigendynamik
  • Unsicherheit: Unvollständige oder falsche Informationen über das System

Es gibt die folgenden Quellen von Unsicherheit:

  • Unbeobachtete Variablen
  • Unbekannte Abhängigkeiten von Variablen
  • Unbekannte Auswirkungen der Aktionen und Handlungen

In der Sprache der Netzwerke und Graphen gibt es also unbekannte Knoten und unbekannte Kanten. In komplexen Systemen ist die Beziehung zwischen Ursache und Wirkung nicht trivial und eine Aktion bzw. ein Mittel hat oft mehr als eine Auswirkung. Entscheidungen in komplexen Systemen sind damit auch „komplexe Entscheidungen“. Die Entscheidungstheorie bildet die Grundlage für optimale Entscheidungen. Basierend auf den zur Verfügung stehenden Informationen wird mit Hilfe der Wahrscheinlichkeitsrechnung die optimale Entscheidung ermittelt [Pet11]. In komplexen Systemen sind diese Informationen aber unsicher und daher ist es sehr schwer, die „richtige“ Entscheidung zu finden. Menschen können mit komplexen System also in der Regel nicht umgehen, weil sie die Folgen ihres Handelns nicht absehen können. Politische „top-down“ Interventionen sind daher mit Vorsicht zu genießen. Wir werden hierauf später im politischen Kapitel in Abschnitt 11.5 darauf eingehen.

Schwarze Schwäne und Anti-Fragilität

Nassim Nicholas Taleb ist ein Philosoph, Statistiker und Risiko-Analyst, der in den letzten Jahren durch eine Reihe von Büchern Aufsehen erregt hat. Er hat einige Jahre als Finanzmathematiker in mehreren Wall-Street-Unternehmen gearbeitet. Er hat sich mit Finanzderivaten und Hedgefonds beschäftigt und war genau im Mittelpunkt des „Kasino-Kapitalismus“ .

In „Der Schwarze Schwan: Die Macht höchst unwahrscheinlicher Ereignisse“ [Tal08] zeigt er, dass Menschen im Allgemeinen blind gegenüber außergewöhnlichen Ereignissen sind. Er verdeutlicht dieses anhand des schwarzen Schwans. Vor der Entdeckung Australiens haben die Menschen gedacht, dass alle Schwäne weiß sind und dass Schwäne keine andere Farbe haben können. Das war einerseits aus der Erfahrung her richtig, denn bis dahin hatte man nur weiße Schwäne gesehen. Aber es gibt ja andere schwarze Vögel, wie z. B. Raben. Einen schwarzen Schwan aber hat man für unmöglich gehalten. Nassim Taleb geht diesem Denkfehler nach, warum Menschen etwas für unmöglich halten, das aber eigentlich nur unwahrscheinlich ist.

Ein „schwarzer Schwan“ ist für Taleb ein außergewöhnliches Ereignis, das große Auswirkungen hat und im Nachhinein aber von Menschen immer erklärt werden kann nach dem Motto „hinterher ist man immer schlauer“. Beispiele für „schwarze Schwäne“ sind z. B. die Finanz- und Wirtschaftskrisen oder der Anschlag vom 11. September 2011 auf das World Trade Center.

Das Problem ist, das „schwarze Schwäne“ in der Regel nicht bei der Formulierung von Gesetzen und Regulierungen berücksichtigt werden. Auch bei der Modellierung von technischen Systemen kann es sein, dass man „schwarze Schwäne“ vergisst und sie nicht in das Modell aufnimmt. Ein Beispiel hierfür sind die fehlerhaften Risikomodelle vor der Finanzkrise von 2008.

Wichtig: In komplexen Systemen kann es „schwarze Schwäne“ geben.

In seinem Buch „Antifragilität: Anleitung für eine Welt, die wir nicht verstehen“ [Tal12] unterteilt Taleb Systeme in die folgenden drei Klassen:

  • Fragile Systeme
  • Robuste Systeme
  • Anti-fragile Systeme

Ein fragiles System ist zerbrechlich. Mit den falschen Eingaben oder Aktionen kommt es nicht zurecht. Es ist auf Störungsfreiheit angewiesen. Die Dinge müssen genau so laufen wie geplant, mit so wenig Abweichungen wie möglich. Typischerweise sind von Menschen geschaffene Systeme fragil.

Ein robustes System kommt auch mit falschen Eingaben zurecht. Bei manchen robusten Systemen können sogar Teilsysteme ohne Funktionalitätsverlust ausfallen. Dieses erreicht man mit Redundanz. Bei einem Flugzeug mit zwei Düsentriebwerken kann theoretisch eines ausfallen. Ein System, das mit Fehlern umgehen kann, wird auch fehlertolerantes System genannt. Hier ist zu berücksichtigen, dass manche Systeme nur mit einer begrenzten Anzahl von Fehlern auskommen. Das letzte Düsentriebwerk dürfte z. B. nicht auch noch ausfallen.

Ein anti-fragiles System hingegen gewinnt bei Störungen an Stabilität hinzu. Diese Systeme sind bisher meistens in der Natur zu finden. Menschen können diese Systeme noch nicht künstlich erstellen. Wenn ein Mensch sportlich trainiert, in dem er z. B. Joggen geht, so gewinnen die Muskeln und Sehnen durch die „Störung“ hinzu. Der Körper verbessert sich durch die „Störung“ bzw. das Training und baut die Muskeln wieder auf.

Bei der Komposition von Systemen aus Teilsystemen muss man berücksichtigen, dass sich die Eigenschaften von Teilsystemen nicht auf das Gesamtsystem übertragen. Das Gesamtsystem kann eine andere Klasse haben, als die Teilsysteme.

Ein Gesamtsystem aus fragilen redundanten Teilsystemen ist z. B. robust und nicht fragil. Eine Wirtschaft insgesamt ist robust, wenn die einzelnen Unternehmen fragil sind, d.h. insolvent gehen können. Hier werden die einzelnen fragilen Teile einfach ausgetauscht. Ein Bankensystem hingegen, bei dem die einzelnen Banken nicht insolvent gehen können, ist nicht robust, sondern fragil. Denn die Banken, die Verluste anhäufen, werden hier nicht ausgetauscht, sondern können mit ihrem Fehlverhalten weiter machen.

Wichtig: Wenn man Teilsysteme robuster macht, kann das Gesamtsystem fragil werden.

Nassim Taleb hat sich auch mit komplexen Systemen und Interventionen beschäftigt [Tal12]. In „Antifragilität“ schreibt er:

„Ein komplexes System benötigt – entgegen der allgemeinen Meinung – keine komplizierten Systeme, keine Regulierungsmethoden, keine ausgefeilten politischen Strategien. Je einfacher, desto besser … Da die Dinge nicht bis ins Letzte durchschaubar sind, hat ein Eingreifen unvorhergesehene Auswirkungen.“

Für die Modellierung von System sind die Erkenntnisse von Nassim Taleb äußerst wichtig.

  1. https://www.dartlang.org

  2. https://gephi.github.io/

  3. Anmerkung: Die Farben rot und blau sind natürlich symbolisch und können für jeden beliebigen Unterschied stehen. Man könnte auch Zahlen, wie z. B. Null und Eins verwenden. Ursprünglich kommt das Modell aus den USA, weil sich Forscher gefragt hatten, wie die China-Towns oder die Schwarzenviertel entstehen konnten [Sch78].

  4. Die Nachbarschaften wurden benannt nach nach Edward F. Moore (1925 - 2003) und John von Neumann (1903 - 1957).

  5. Mathematisch ist der Satz „das Ganze ist mehr als die Summe seiner Teile“ natürlich wahr. Es gibt nach der Kategorientheorie zwei unterschiedliche Operationen zwischen zwei Elementen: die Summe und das Produkt. Und das Produkt ist in der Regel – umgangssprachlich gesprochen – die „größere“ Operation [Spi14]. Das Ganze ist also das Produkt seiner Teile, nicht seine Summe. In der Mengenlehre z. B. ist die disjunkte Vereinigung ein Beispiel für eine Summe und das kartesische Produkt ein Beispiel für ein Produkt. Die Summe der Mengen {A, 1} und {B, 2} ist damit {A, B, 1, 2} und das Produkt {(A, B), (A, 2), (1, B), (1, 2)}. Die Summe verliert die Information, woher die Elemente kommen, ob von „links“ oder von „rechts“. Das kartesische Produkt hingegen erhält alle Informationen. Das kartesische Produkt ist mehr als die disjunkte Summe seiner Teile.

  6. Der „Nobelpreis“ für Wirtschaftswissenschaften wurde in Anführungszeichen gesetzt, weil der ausführliche Name „Alfred-Nobel-Gedächtnispreises für Wirtschaftswissenschaften“ ein wenig sperrig ist und er eigentlich nicht zu den ursprünglichen „richtigen“ Nobelpreisen gehört.

  7. Sogenannte gewöhnliche Differentialgleichungen („ordinary differential equation“, ODE) haben nur eine unabhängige Variable und können einfach gelöst werden (wenn sie linear sind). Allerdings haben viele Probleme mehr als eine unabhängige Variable und müssen mit partiellen Differentialgleichungen („partial differential equation“, PDE) beschrieben werden. Diese besitzen oft keine einfache geschlossene Lösung und müssen für jeden Zeitschritt berechnet werden. Dieses geschieht heutzutage mit leistungsstarken Computern und ist oft sehr zeit- und rechenintensiv und kann unter Umständen ganze Rechenzentren in Anspruch nehmen. Ein Großteil der Rechenzeit der Top-500-Supercomputer (http://www.top500.org/) wird mit der Lösung von PDEs verbracht. Das Lösen von PDEs ist heute noch Forschungsgegenstand und auch eine mathematische Kunst. Hier werden jährlich viele wissenschaftliche Artikel geschrieben. PDEs haben daher eine lange Einlernzeit und benötigen ein mehrjähriges mathematisches Studium.

  8. Wissenschaftler, die sich erstmal mühevoll jahrelang in die PDEs eingearbeitet haben, geben diese natürlich nicht so schnell wieder auf. Und die wissenschaftliche Welt ist teilweise auch sehr konservativ, die Neuem gegenüber teilweise sehr skeptisch gegenübersteht. Daher wird sich die ABM daher selber auch nur „bottom-up“ durchsetzen, d.h. in Privatinitiative genutzt werden und dadurch eine Verbreitung erfahren.

Kaufen

Unterstützen Sie den Autor, indem Sie das Buch oder das E-Book kaufen:

Diskutieren