Skip to main content

Grundkonzepte

  • Chapter
  • First Online:
Schwarmintelligenz
  • 3340 Accesses

Zusammenfassung

Wir erfahren, was Schwärme und Schwarmverhalten sind und definieren den elementaren Begriff der Selbstorganisation. Wie es funktioniert, dass sich viele Tiere oder Agenten in einem Schwarm effizient koordinieren, untersuchen wir anhand des Begriffs der Skalierbarkeit.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 29.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 39.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    http://ccl.northwestern.edu/netlogo/models/Fireflies

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Heiko Hamann .

Aufgaben

Aufgaben

Aufgabe 2.1 – Skalierbarkeit eines Computersystems

Wir bauen ein einfaches Modell eines Computersystems. Die Methoden sind Beispiele aus der Warteschlangentheorie. Wir nehmen an, dass neue Aufgaben für das Computersystem mit einer konstanten Rate \(\alpha \) ankommen und einer Warteliste hinzugefügt werden. Wir nehmen an, dass der gesamte Prozess ohne Gedächtnis abläuft, d. h. ankommende Aufgaben sind statistisch unabhängig voneinander. Daher modellieren wir das System als Poissonprozess. Die Wahrscheinlichkeit, dass \(i \ge 0\) Aufgaben innerhalb eines gegebenen Zeitintervalls \(\Delta t\) eintreffen, ist

$$\begin{aligned} P(X=i) = \frac{e^{-\lambda }\lambda ^i}{i!} \end{aligned}$$
(2.6)

für \(\lambda = \alpha \Delta t\). Zur Vereinfachung setzen wir \(\Delta t=1\).

  1. a)

    Plotte die Wahrscheinlichkeiten \(P(X=i)\) für ein sinnvolles Intervall für X und \(\alpha \in \{0{,}01;0{,}1;0{,}5;1\}\).

  2. b)

    Implementiere ein Programm, das zufällige Anzahlen von ankommenden Aufgaben aus den Wahrscheinlichkeiten \(P(X=i)\) generiert.

  3. c)

    Implementiere ein Modell, das über folgende zwei Phasen iteriert: Berechne und verwalte neu ankommende Aufgaben, dann bearbeite die aktuelle Aufgabe, wobei wir nur eine Aufgabe gleichzeitig bearbeiten können. Lasse das Modell für 2000 Zeitschritte mit \(\alpha =0{,}1\) und für eine Aufgabenbearbeitungszeit von vier Zeitschritten pro Aufgabe laufen. Was ist die durchschnittliche Länge der Warteschlange?

  4. d)

    Verändere das Programm, sodass man die durchschnittliche Warteschlangenlänge über mehrere unabhängige Simulationsläufe messen kann (mehrere statistisch unabhängige Läufe jeweils über 2000 Zeitschritte). Bestimme die durchschnittliche Warteschlangenlänge für verschiedene Raten \(\alpha \in [0{,}005;0{,}25]\) in Schritten von 0,005 und jeweils basierend auf 200 Läufen. Plotte das Ergebnis.

  5. e)

    Führe diesen Vorgang nochmals durch für eine Aufgabenbearbeitungszeit von nur zwei Zeitschritten pro Aufgabe (das entspricht einem Ausbau des Systems auf doppelte Kapazität) mit Raten \(\alpha \in [0{,}005;0{,}5]\) in Schritten von 0,005. Vergleiche die beiden Diagramme.

Aufgabe 2.2 – Superlinearer Leistungsanstieg

Wir versuchen eine einfache Simulation eines Computersystems zu implementieren, das einen superlinearen Leistungsanstieg zeigt gemäß dem Universal Scalability Law für die Parameter \(\alpha < 0\) und \(\beta >0\). Dafür möchten wir den Einfluss von Speicherkohärenz und sogenannte cache hits (d. h. die gewünschte Speicherseite liegt bereits im Cache) auf simple Weise simulieren.

  1. a)

    Implementiere ein Programm, das über \(t=1000\) Zeitschritte iteriert. In jedem Zeitschritt simulieren wir mit einem einfachen seriellen Programm die parallele Ausführung von p Prozessoren. Angenommen, die Problemgröße ist 100; dann erhält jeder Prozessor einen Teil der Größe \(s=\frac{100}{p}\). Jeder Prozessor soll eine von drei Aufgaben pro Zeitschritt durchführen.

    Entweder führt der Prozessor Aktivitäten durch,

    (1) um Speicherkohärenz herzustellen mit Wahrscheinlichkeit

    $$\begin{aligned} P_c(p)=\frac{1}{1+\exp (-0{,}1(p-30))} \end{aligned}$$
    (2.7)

    in Abhängigkeit von der Anzahl an Prozessoren p;

    oder wenn der Speicher momentan kohärent ist (\(1-P_c(p)\)), dann erledigt der Prozessor

    (2) einen Teil der eigentlichen Aufgabe (cache hit) mit Wahrscheinlichkeit

    $$\begin{aligned} P_h(s)=\frac{1}{2}\left( 1-\frac{1}{1+\exp (-0{,}05(s-15))}\right) +\frac{1}{4} \end{aligned}$$
    (2.8)

    für die Problemgröße eines jeden Prozessors von s;

    oder er führt Aktivitäten durch,

    (3) um eine Speicherseite aus dem Speicher zu laden (speicherkohärent aber cache miss) mit Wahrscheinlichkeit

    $$\begin{aligned} 1-P_h(s). \end{aligned}$$
    (2.9)

    Zähle für jede Durchführung von Teil (2) (Erledigung eines Teils der eigentlichen Aufgabe) eine Variable hoch, die die Leistung des Systems misst.

  2. b)

    Benutze Dein Programm, um verschiedene Systemgrößen \(p\in \{1,2,\dots , 80\}\) zu simulieren. Adaptiere entsprechend die Größe des jeweiligen Teils \(s=\frac{100}{p}\), den jeder Prozessor zur Abarbeitung erhält. Notiere die erreichten Leistungen (Anzahl der erledigten Teilaufgaben) und berechne den Leistungsanstieg für alle Konfigurationen (Leistung normalisiert auf die Leistung von \(p=1\)). Plotte ein Diagramm des Leistungsanstiegs über die Anzahl der Prozessoren. Spiele mit den Wahrscheinlichkeiten \(P_c(p)\) und \(P_h(s)\) herum. Was ist notwendig, um einen nichtlinearen Leistungsanstieg zu erhalten?

Abb. 2.10
figure 10

Synchronisiertes Aufleuchten von Glühwürmchen

Aufgabe 2.3 – Synchronisierung eines Schwarms

Schwarmsystene sind asynchrone Systeme. Es gibt keine zentrale Uhr, auf die jeder zugreifen könnte. Falls ein Schwarm dennoch synchron agieren muss, dann muss er sich zuerst explizit synchronisieren. Ein Beispiel eines biologischen Systems ist eine Population von Glühwürmchen (siehe Abb. 2.10). „Obwohl für die meisten Glühwürmchenspezien im allgemeinen nicht bekannt ist, dass sie sich in Gruppen synchronisieren, so gibt es doch einige (Pteroptyx cribellata, Luciola pupilla , und Pteroptyx malaccae ) bei denen das unter bestimmten Voraussetzungen beobachtet wurde.“Footnote 1 Im Zusammenhang dazu steht die Forschung aus den Bereichen der drahtlosen Sensornetze und Adhoc-Netzwerke und deren dezentrale Synchronisierung (Tyrrell et al. 2006).

Im Folgenden bauen wir uns ein einfaches Modell einer solchen Glühwürmchenpopulation. Die Population ist über ein Einheitsquadrat (\(1\times 1\)) zufällig verteilt (Gleichverteilung). Wir nehmen an, dass die Glühwürmchen stationär sind und nur die Nachbarn in ihrer Nähe wahrnehmen können. Wir sagen, dass zwei Glühwürmchen sich gegenseitig sehen können, wenn die Distanz zwischen den beiden kleiner als r ist. Also haben wir eine virtuelle Scheibe mit Radius r, deren Mitte an der Position des Glühwürmchens liegt, und jedes andere Glühwürmchen, das auf der Scheibe sitzt, ist ein Nachbar. Die Glühwürmchen leuchten in Zyklen auf. Wir definieren die Länge des Zyklus als \(L=50\) Zeitschritte. Ein Glühwürmchen leuchtet für L / 2 Zeitschritte auf, gefolgt von L / 2 Zeitschritten ohne Leuchten. Das gilt immer außer für den Fall, dass das Glühwürmchen versucht seinen Zyklus zu synchronisieren. Wenn es angefangen hat zu leuchten, überprüft es im folgenden Zeitschritt seine Nachbarn und testet, ob die Mehrheit der Nachbarn bereits leuchtet. Wenn dies der Fall ist, dann korrigiert das Glühwürmchen seine interne Uhr, indem es eins hinzuzählt. Damit reduziert es die Zeit seines aktuellen Leuchtzyklus von L / 2 auf \(L/2-1\) Zeitschritte und wird daher in der nächsten Runde einen Zeitschritt früher aufleuchten.

  1. a)

    Implementiere das Modell für eine Schwarmgröße von \(N=150\) und eine Zykluslänge von \(L=50\). Berechne die durchschnittliche Anzahl von Nachbarn pro Glühwürmchen für die Nachbarschaftsradien \(r\in \{0{,}05;0{,}1;0{,}5;1{,}4\}\). Plotte die Anzahl von momentan leuchtenden Glühwürmchen über die Zeit für verschiedene Radien \(r\in \{0{,}05;0{,}1;0{,}5;1{,}4\}\) für jeweils 5000 Zeitschritte. Achte beim Plotten der momentan leuchtenden Glühwürmchen darauf, das volle Intervall [0; 150] für die vertikale Achse anzuzeigen.

  2. b)

    Erweitere Dein Modell, um Minimum und Maximum der momentan leuchtenden Glühwürmchen während des allerletzten Zyklus (also die letzten \(L=50\) Zeitschritte ab \(t=4950\)) zu bestimmen. Wenn wir das Minimum vom Maximum abziehen, bekommen wir die doppelte Amplitude der Synchronisationswelle. Ermittle den Durchschnitt der gemessenen Amplituden für jeweils 50 Stichproben (50 unabhängige Simulationsläufe mit jeweils 5000 Zeitschritten) und plotte diese für verschiedene Radien \(r\in [0{,}025;1{,}4]\) in Schritten der Größe 0, 025. Was ist eine gute Wahl für den Nachbarschaftsradius und somit die Schwarmdichte?

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer-Verlag GmbH Deutschland, ein Teil von Springer Nature

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Hamann, H. (2019). Grundkonzepte. In: Schwarmintelligenz. Springer Spektrum, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-58961-8_2

Download citation

Publish with us

Policies and ethics