Auf einen Blick

  • Simulation ersetzt reale Experimente durch Computerexperimente – für stochastische Systeme werden Monte-Carlo-Simulationen mit Zufallszahlen verwendet.
  • Auf einem deterministischen Rechner gibt es keine echten Zufallszahlen – nur Pseudozufallszahlen, erzeugt z.B. mit der Lehmer-Kongruenz \( r_{n+1} = (a \cdot r_n) \bmod m \).
  • Die Qualität einer Zufallsfolge wird mit Tests auf Gleichverteilung und Korrelation überprüft.
  • Bei der Monte-Carlo-Integration wird ein Integral über die Trefferquote in einem umschließenden Rechteck geschätzt.
  • Simulated Annealing ist ein Metaheuristik-Verfahren, das durch kontrolliertes Akzeptieren von Verschlechterungen lokale Minima verlassen kann – ideal für kombinatorische Probleme wie TSP.

Kernkonzepte

5.1 Simulationsarten

Simulation bedeutet, ein reales System durch ein Modell nachzubilden und dessen Verhalten am Rechner zu untersuchen. Man unterscheidet grob zwei Typen:

ArtMerkmalBeispiel
ComputerexperimentDeterministisches System, exakte ModellgleichungenFahrsimulator, Strömungssimulation
Monte-Carlo-SimulationStochastisches System, Zufallszahlen als InputWarteschlangenmodell, Risikoanalyse, Integration
Merke: Monte-Carlo-Verfahren sind immer dann sinnvoll, wenn analytische Lösungen zu komplex oder die Prozesse selbst zufallsbehaftet sind.

5.2 Zufallszahlen und Pseudozufallszahlen

Eine Zufallsfolge ist eine Folge von Zahlen, in der keinerlei Gesetzmäßigkeit erkennbar ist. Ein Rechner ist jedoch ein deterministisches Gerät – jede Rechnung ist reproduzierbar. Damit können auf einem Rechner niemals echte Zufallszahlen entstehen, sondern nur Pseudozufallszahlen: Zahlenfolgen, die statistisch wie Zufallszahlen aussehen, aber vollständig durch einen Startwert (Seed) und eine Vorschrift bestimmt sind.

Lehmer-Kongruenz (multiplikativ)

Ein einfacher, sehr weit verbreiteter Generator ist die multiplikative Lehmer-Kongruenz:

\[ r_{n+1} = (a \cdot r_n) \bmod m \]

Dabei sind \(a\) und \(m\) Konstanten und \(r_0\) der Startwert (Seed).

Beispiel: \(a=3\), \(m=32\), \(r_0=9\)

\(n\)Rechnung\(r_n\)
0Startwert9
1\((3 \cdot 9) \bmod 32 = 27\)27
2\((3 \cdot 27) \bmod 32 = 81 \bmod 32 = 17\)17
3\((3 \cdot 17) \bmod 32 = 51 \bmod 32 = 19\)19
4\((3 \cdot 19) \bmod 32 = 57 \bmod 32 = 25\)25
5\((3 \cdot 25) \bmod 32 = 75 \bmod 32 = 11\)11

Realistische Parameter für 32-Bit-Rechner

Für einen 32-Bit-Rechner wählt man typischerweise:

\[ m = 2^{32} - 1, \quad a = 3^{19} \]

Damit ergibt sich eine Periode von etwa \(2^{19}\) – also rund 524.288 Zahlen, bevor sich die Folge wiederholt.

Wichtig: Jeder Pseudozufallszahlen-Generator hat eine endliche Periode. Wählt man Parameter schlecht, kann die Periode sehr kurz werden oder die Folge starke Muster (Korrelation) zeigen.

5.3 Tests für Zufallszahlen

Eine erzeugte Folge sollte mindestens zwei Eigenschaften erfüllen:

Gleichverteilung

Alle Werte im zulässigen Bereich \([0, m-1]\) sollten gleich häufig auftreten. Test: Bereich in Klassen einteilen, Häufigkeiten zählen, mit erwarteter Häufigkeit vergleichen (z.B. \(\chi^2\)-Test).

Korrelation

Aufeinanderfolgende Zahlen \(r_n\) und \(r_{n+1}\) sollten unabhängig sein. Test: Paare \((r_n, r_{n+1})\) in einer Ebene plotten – bei guter Folge zeigt sich eine gleichmäßige Punktwolke, bei schlechter Folge Streifen oder Muster.

Faustregel: Ein Generator, der die Gleichverteilung besteht, kann trotzdem stark korreliert sein. Beide Tests sind nötig.

5.4 Monte-Carlo-Integration

Aufgabe: Berechne \( F = \int_a^b f(x)\, dx \) numerisch mit Zufallszahlen.

Vorgehen

  1. Wähle eine obere Schranke \(O_s\) mit \(O_s \geq f(x)\) für alle \(x \in [a, b]\).
  2. Erzeuge zwei Zufallszahlen: \(x \in [a, b]\) und \(y \in [0, O_s]\).
  3. Prüfe: Liegt der Punkt \((x, y)\) unter der Kurve, d.h. \(y \leq f(x)\)? Wenn ja, zähle als "Treffer".
  4. Nach \(N\) Versuchen sei \(T\) die Anzahl Treffer. Trefferquote: \(q = T/N\).
  5. Schätzer: \( F \approx q \cdot (b-a) \cdot O_s \).
Integrationsbereich [a, b] O_s Trefferquote schätzt Integral
Rolle von \(O_s\): Die obere Schranke definiert die Höhe des umschließenden Rechtecks. Ist \(O_s\) zu groß, viele Punkte liegen außerhalb – Konvergenz wird langsam. Ist \(O_s\) zu klein, wird die Integrationsfläche abgeschnitten – das Ergebnis ist falsch.

5.5 Simulated Annealing (SA)

Simulated Annealing ist ein Optimierungsverfahren, das der Physik der langsamen Abkühlung aus einer Schmelze nachempfunden ist. Ein heißes Metall kühlt langsam ab; dabei ordnen sich die Atome so, dass die Gesamtenergie minimal wird. Übertragen: Der Algorithmus sucht ein globales Minimum einer Zielfunktion und darf dabei zwischenzeitlich auch schlechtere Zustände akzeptieren.

Kernidee

Ein reines Gradientenverfahren (Bergabsteigen) bleibt an jedem lokalen Minimum hängen, weil es nie eine Verschlechterung zulässt. SA hingegen akzeptiert mit einer gewissen Wahrscheinlichkeit auch eine Verschlechterung – so kann die Lösung "über einen Berg klettern" und zu einem besseren Minimum finden.

Akzeptanzwahrscheinlichkeit

Sei \(\Delta z = z_{\text{neu}} - z_{\text{alt}}\) die Änderung der Zielfunktion (bei Minimierung: \(\Delta z < 0\) ist eine Verbesserung):

\[ p(\Delta z, \beta) = \begin{cases} 1 & \text{falls } \Delta z \leq 0 \\ e^{-\beta \cdot \Delta z} & \text{falls } \Delta z > 0 \end{cases} \]

Der Parameter \(\beta\) entspricht in der Physik \(1/(k \cdot T)\) – also dem Kehrwert der Temperatur. In der Optimierung:

  • \(\beta\) klein (hohe Temperatur, Anfangsphase): auch schlechte Züge werden häufig akzeptiert. Der Algorithmus erkundet den Lösungsraum breit.
  • \(\beta\) groß (niedrige Temperatur, Endphase): kaum noch Verschlechterungen. Der Algorithmus konvergiert auf ein Minimum.
Δz (Verschlechterung) p 1 β klein β mittel β groß Akzeptanzwahrscheinlichkeit p(Δz, β)

SA-Algorithmus (9 Schritte)

  1. Wähle eine zulässige Startlösung \(x_0\), berechne \(z_0 = f(x_0)\).
  2. Setze Startwert für \(\beta\) (klein) und Iterationszähler.
  3. Erzeuge aus der aktuellen Lösung \(x_{\text{alt}}\) durch eine kleine Veränderung eine Nachbarlösung \(x_{\text{neu}}\).
  4. Berechne \(z_{\text{neu}} = f(x_{\text{neu}})\) und \(\Delta z = z_{\text{neu}} - z_{\text{alt}}\).
  5. Berechne Akzeptanzwahrscheinlichkeit \(p(\Delta z, \beta)\).
  6. Ziehe Zufallszahl \(u \in [0,1]\). Falls \(u \leq p\): akzeptiere die neue Lösung, sonst: verwerfe sie.
  7. Iterationszähler erhöhen; nach vorgegebener Anzahl Iterationen \(\beta\) erhöhen (Abkühlung).
  8. Abbruch, wenn Endkriterium erreicht (z.B. keine Verbesserung mehr über \(N\) Schritte, oder \(\beta\) sehr groß).
  9. Beste gefundene Lösung ausgeben.

Beispiel: TSP mit Simulated Annealing

ElementBedeutung im TSP
Lösung \(x\)Eine konkrete Rundreise (Reihenfolge der Städte)
Zielfunktion \(f(x)\)Gesamtdistanz der Rundreise
Veränderung2-opt-Swap: Zwei Kanten der Tour werden entfernt und neu verbunden
AkzeptanzKürzere Tour immer, längere Tour mit \(p = e^{-\beta \Delta z}\)
Merke: SA ist eine Metaheuristik – es garantiert kein globales Optimum, findet aber in der Praxis sehr gute Lösungen für Probleme, die exakt nicht lösbar sind (wie TSP mit vielen Städten).

Merksätze

M1 – Pseudo: Ein deterministischer Rechner kann keine echten Zufallszahlen erzeugen. Er liefert stets Pseudozufallszahlen mit endlicher Periode.
M2 – Lehmer: \(r_{n+1} = (a \cdot r_n) \bmod m\). Für 32-Bit: \(m = 2^{32}-1\), \(a = 3^{19}\), Periode \(\approx 2^{19}\).
M3 – Zwei Tests: Zufallszahlen müssen sowohl gleichverteilt als auch unkorreliert sein. Ein Test allein reicht nicht.
M4 – MC-Integration: \( F \approx (b-a) \cdot O_s \cdot \frac{T}{N} \). Obere Schranke \(O_s\) begrenzt das umschließende Rechteck.
M5 – SA-Kern: Verschlechterung wird mit \(p = e^{-\beta \Delta z}\) akzeptiert. Dadurch werden lokale Minima überwunden.
M6 – Abkühlung: \(\beta\) startet klein (viel Zufall) und wächst über die Zeit (immer weniger Zufall). So findet SA ein Minimum und "friert" dort ein.

🧮 Rechenaufgaben mit Lösung 6 Aufgaben

Klausur-typische Rechenaufgaben. Klick auf eine Aufgabe, um den vollständigen Lösungsweg zu sehen.

Aufgabe 1: Lehmer-Kongruenz – erste 6 Folgeglieder
Aufgabe: Berechne die ersten 6 Folgeglieder der Lehmer-Kongruenz \( r_{n+1} = (a \cdot r_n) \bmod m \) mit \(a = 3\), \(m = 32\) und Startwert \(r_0 = 9\).

Lösung

Schrittweise Berechnung mit \( r_{n+1} = (3 \cdot r_n) \bmod 32 \):

\(n\)RechnungZwischenschritt\(r_n\)
1\((3 \cdot 9) \bmod 32\)\(27 \bmod 32 = 27\)27
2\((3 \cdot 27) \bmod 32\)\(81 - 2 \cdot 32 = 17\)17
3\((3 \cdot 17) \bmod 32\)\(51 - 32 = 19\)19
4\((3 \cdot 19) \bmod 32\)\(57 - 32 = 25\)25
5\((3 \cdot 25) \bmod 32\)\(75 - 2 \cdot 32 = 11\)11
6\((3 \cdot 11) \bmod 32\)\(33 - 32 = 1\)1
Ergebnis: Folge = 9, 27, 17, 19, 25, 11, 1, ...
Aufgabe 2: Periodenlänge abschätzen
Aufgabe: Für die Lehmer-Kongruenz mit den typischen 32-Bit-Parametern \(m = 2^{32}-1\) und \(a = 3^{19}\). Wie lang ist die typische Periode des Generators?

Lösung

Nach Skript (S. 20) hängt die Periodenlänge maßgeblich von der Wahl von \(a\) ab. Für \(a = 3^{19}\) folgt eine Periode in der Größenordnung von \(2^{19}\).

Berechnung:

\[ 2^{19} = 524{.}288 \]

Das bedeutet: der Generator liefert etwa 524.288 unterschiedliche Pseudozufallszahlen, bevor sich die Folge exakt wiederholt.

Ergebnis: Periode \(\approx 2^{19} = 524.288\) Zahlen.
Aufgabe 3: Monte-Carlo-Integration – Trefferzählung
Aufgabe: Berechne näherungsweise \( \int_0^1 x^2\, dx \) mit 10 Zufallsschritten. Gegeben sind die Paare \((x_i, y_i)\), obere Schranke \(O_s = 1\) (da \(f(1)=1\)).
\(i\)12345678910
\(x_i\)0.20.50.80.30.90.10.60.70.40.55
\(y_i\)0.10.60.50.050.70.020.30.60.150.2

Lösung

Ein Punkt zählt als Treffer, wenn \(y_i \leq f(x_i) = x_i^2\). Prüfung Zeile für Zeile:

\(i\)\((x_i, y_i)\)\(x_i^2\)\(y_i \leq x_i^2\)?Treffer
1(0.2, 0.1)0.040.1 ≤ 0.04? nein
2(0.5, 0.6)0.250.6 ≤ 0.25? nein
3(0.8, 0.5)0.640.5 ≤ 0.64? ja
4(0.3, 0.05)0.090.05 ≤ 0.09? ja
5(0.9, 0.7)0.810.7 ≤ 0.81? ja
6(0.1, 0.02)0.010.02 ≤ 0.01? nein
7(0.6, 0.3)0.360.3 ≤ 0.36? ja
8(0.7, 0.6)0.490.6 ≤ 0.49? nein
9(0.4, 0.15)0.160.15 ≤ 0.16? ja
10(0.55, 0.2)0.30250.2 ≤ 0.3025? ja

Trefferzahl: \(T = 6\), Gesamtzahl: \(N = 10\). Trefferquote: \(q = 6/10 = 0{,}6\).

Schätzer:

\[ F \approx (b-a) \cdot O_s \cdot \frac{T}{N} = 1 \cdot 1 \cdot 0{,}6 = 0{,}6 \]

Exakter Wert zum Vergleich: \( \int_0^1 x^2\, dx = 1/3 \approx 0{,}333 \). Die Näherung mit nur 10 Samples ist sehr grob – bei größerem \(N\) konvergiert die Schätzung gegen \(1/3\).

Ergebnis: Monte-Carlo-Schätzung \(F \approx 0{,}6\) (exakt: 1/3, mehr Samples nötig).
Aufgabe 4: Simulated Annealing – Akzeptanzwahrscheinlichkeit
Aufgabe: Aktuelle Lösung \(z_{\text{alt}} = 100\), neue Lösung \(z_{\text{neu}} = 105\), \(\beta = 0{,}2\). Wird die Verschlechterung akzeptiert? Berechne die Akzeptanzwahrscheinlichkeit.

Lösung

Schritt 1: Differenz berechnen.

\[ \Delta z = z_{\text{neu}} - z_{\text{alt}} = 105 - 100 = 5 \]

Da \(\Delta z > 0\) → Verschlechterung (für Minimierung). Akzeptanz nur mit Wahrscheinlichkeit \(p\).

Schritt 2: Akzeptanzwahrscheinlichkeit.

\[ p = e^{-\beta \cdot \Delta z} = e^{-0{,}2 \cdot 5} = e^{-1} \approx 0{,}3679 \]

Schritt 3: Entscheidung.

Ziehe Zufallszahl \(u \in [0, 1]\). Falls \(u \leq 0{,}3679\) → neue Lösung akzeptieren, sonst verwerfen.

Ergebnis: Akzeptanzwahrscheinlichkeit \(p \approx 36{,}8\,\%\).
Aufgabe 5: Wirkung von β auf Akzeptanz
Aufgabe: Bei fester Verschlechterung \(\Delta z = 5\), berechne die Akzeptanzwahrscheinlichkeit \(p\) für \(\beta = 0{,}1\), \(\beta = 0{,}5\) und \(\beta = 1{,}0\). Was folgt daraus für die Steuerung von SA?

Lösung

Anwendung der Formel \(p = e^{-\beta \cdot \Delta z}\) mit \(\Delta z = 5\):

\(\beta\)Exponent \(-\beta \cdot \Delta z\)\(p = e^{\text{Exponent}}\)Prozent
0,1\(-0{,}1 \cdot 5 = -0{,}5\)\(e^{-0{,}5} \approx 0{,}607\)ca. 60,7 %
0,5\(-0{,}5 \cdot 5 = -2{,}5\)\(e^{-2{,}5} \approx 0{,}082\)ca. 8,2 %
1,0\(-1{,}0 \cdot 5 = -5\)\(e^{-5} \approx 0{,}0067\)ca. 0,67 %

Interpretation: Mit steigendem \(\beta\) sinkt die Akzeptanzwahrscheinlichkeit für Verschlechterungen drastisch. Das ist genau der Mechanismus der "Abkühlung": zu Beginn kleines \(\beta\) → viel Exploration; später großes \(\beta\) → Konvergenz.

Ergebnis: p sinkt von 60,7 % → 8,2 % → 0,67 %. Deshalb wird \(\beta\) im Verlauf des SA-Algorithmus erhöht.
Aufgabe 6: TSP mit SA – 2-opt-Nachbarlösung
Aufgabe: Aktuelle TSP-Route \(A \to B \to C \to D \to E \to A\) mit Gesamtdistanz \(z_{\text{alt}} = 100\). Führe einen 2-opt-Swap zwischen den Kanten \((B, C)\) und \((D, E)\) durch. Beschreibe die neue Nachbarlösung.

Lösung

Schritt 1: Kanten der aktuellen Tour identifizieren.

Aktuelle Reihenfolge: \(A - B - C - D - E - A\), also die Kanten \((A,B), (B,C), (C,D), (D,E), (E,A)\).

Schritt 2: 2-opt-Swap ausführen. Entferne die Kanten \((B, C)\) und \((D, E)\). Übrig bleiben zwei Pfade: \(A - B\) und \(E - A\) sowie das Innenstück \(C - D\).

Schritt 3: Innenstück umkehren, sodass die Endpunkte neu verbunden werden können. Aus \(C - D\) wird \(D - C\).

Schritt 4: Neu verbinden: \(A - B\) mit \(D\) (statt mit \(C\)) und \(C\) mit \(E\) (statt \(D\) mit \(E\)).

Neue Route: \( A \to B \to D \to C \to E \to A \)

Schritt 5: Zielfunktionswert \(z_{\text{neu}}\) der neuen Route berechnen (Summe der neuen Kantenlängen). Danach:

\[ \Delta z = z_{\text{neu}} - z_{\text{alt}} \]

Ist \(\Delta z \leq 0\) → neue Route immer akzeptieren. Ist \(\Delta z > 0\) → mit \(p = e^{-\beta \Delta z}\) akzeptieren, sonst verwerfen.

Ergebnis: Neue Nachbarlösung \(A \to B \to D \to C \to E \to A\); Akzeptanz über SA-Kriterium.

Übungsfragen

1. Warum können auf einem Rechner nur Pseudozufallszahlen erzeugt werden?

Ein Computer ist ein deterministisches Gerät: Jede Berechnung ist eindeutig durch Eingabe und Programm bestimmt und beliebig reproduzierbar. Eine echte Zufallsfolge dürfte aber keinerlei Gesetzmäßigkeit haben und wäre nicht reproduzierbar.

Deshalb erzeugt der Rechner nur pseudozufällige Folgen – Zahlen, die statistisch wie zufällig aussehen (bestehen z.B. Tests auf Gleichverteilung und Korrelation), tatsächlich aber vollständig durch Startwert (Seed) und Vorschrift bestimmt sind. Vorteil: Reproduzierbarkeit (nützlich für Debugging). Nachteil: endliche Periode und die Folge kann bei schlechten Parametern Muster zeigen.

2. Berechne für die Lehmer-Kongruenz mit \(a=3\), \(m=32\), \(r_0=9\) die ersten fünf Folgeglieder.

Formel: \( r_{n+1} = (a \cdot r_n) \bmod m = (3 \cdot r_n) \bmod 32 \).

  1. \(r_1 = (3 \cdot 9) \bmod 32 = 27 \bmod 32 = \mathbf{27}\)
  2. \(r_2 = (3 \cdot 27) \bmod 32 = 81 \bmod 32 = \mathbf{17}\) (denn \(81 = 2 \cdot 32 + 17\))
  3. \(r_3 = (3 \cdot 17) \bmod 32 = 51 \bmod 32 = \mathbf{19}\) (denn \(51 = 32 + 19\))
  4. \(r_4 = (3 \cdot 19) \bmod 32 = 57 \bmod 32 = \mathbf{25}\) (denn \(57 = 32 + 25\))
  5. \(r_5 = (3 \cdot 25) \bmod 32 = 75 \bmod 32 = \mathbf{11}\) (denn \(75 = 2 \cdot 32 + 11\))

Folge: 9, 27, 17, 19, 25, 11, …

3. Wie testet man eine Zufallsfolge auf Gleichverteilung und auf Korrelation?

Gleichverteilung: Man teilt den möglichen Wertebereich in \(k\) gleich große Klassen und zählt, wie viele der \(N\) erzeugten Zahlen in jede Klasse fallen. Bei perfekter Gleichverteilung erwartet man \(N/k\) Werte pro Klasse. Abweichungen werden z.B. mit dem \(\chi^2\)-Test statistisch bewertet.

Korrelation: Man bildet Paare aufeinanderfolgender Zahlen \((r_n, r_{n+1})\) und trägt sie in ein Streudiagramm ein. Bei einer guten Folge entsteht eine gleichmäßige Punktwolke; bei schlechter Folge sichtbare Streifen, Diagonalen oder Cluster. Alternativ: Korrelationskoeffizient berechnen – sollte nahe null liegen.

Merke: Beide Tests sind nötig – eine Folge kann gleichverteilt und trotzdem stark korreliert sein (z.B. wenn sie das Intervall zyklisch durchläuft).

4. Was passiert bei der Lehmer-Kongruenz, wenn \(r_n = 0\) wird?

Ist \(r_n = 0\), so folgt \(r_{n+1} = (a \cdot 0) \bmod m = 0\) – und ab dann bleibt die Folge dauerhaft bei null. Der Generator "stirbt".

Daher wählt man bei der multiplikativen Kongruenz stets einen Startwert \(r_0 \neq 0\). Zusätzlich müssen \(a\) und \(m\) so gewählt werden, dass 0 im Zyklus nicht auftritt (ein Grund, warum \(m\) oft als Primzahl bzw. Mersenne-Zahl wie \(2^{32}-1\) gewählt wird).

5. Wie funktioniert Monte-Carlo-Integration? Wozu braucht man die obere Schranke \(O_s\)?

Ziel: \(F = \int_a^b f(x)\, dx\) schätzen. Man legt ein Rechteck über den Graphen mit Breite \(b-a\) und Höhe \(O_s\), sodass die Kurve komplett darunter passt. Dann würfelt man \(N\) zufällige Punkte gleichmäßig in dieses Rechteck: \(x \in [a,b]\), \(y \in [0, O_s]\).

Ein Punkt ist "Treffer", wenn \(y \leq f(x)\), also unter der Kurve liegt. Bei \(T\) Treffern gilt näherungsweise:

\[ \frac{T}{N} \approx \frac{F}{(b-a)\cdot O_s} \quad \Rightarrow \quad F \approx (b-a) \cdot O_s \cdot \frac{T}{N} \]

Rolle von \(O_s\): Es muss \(O_s \geq \max f(x)\) auf \([a,b]\) gelten – sonst schneidet man Teile der Kurve ab und unterschätzt \(F\). Ist \(O_s\) zu groß gewählt, landen unnötig viele Punkte oberhalb der Kurve, was die Konvergenz langsamer macht. Optimal: \(O_s\) so klein wie möglich, aber noch obere Schranke.

6. Was macht Simulated Annealing besser als ein reines Gradientenverfahren?

Ein Gradientenverfahren (bzw. reines Bergabsteigen) folgt in jedem Schritt der Richtung mit der stärksten Verbesserung. Trifft es auf ein lokales Minimum, sind alle Nachbarn schlechter – und der Algorithmus bleibt stecken, obwohl das globale Minimum vielleicht "hinter einem Berg" liegt.

Simulated Annealing akzeptiert dagegen mit einer gewissen Wahrscheinlichkeit auch Verschlechterungen. So kann es aus einem lokalen Minimum wieder herauskommen ("über den Berg klettern") und weiter unten ein besseres Minimum finden. Zu Beginn ist die Akzeptanzrate hoch (viel Exploration), am Ende gering (Konvergenz). Dadurch findet SA in der Praxis deutlich bessere Lösungen, insbesondere in Landschaften mit vielen lokalen Minima.

7. Erkläre die Akzeptanzwahrscheinlichkeit \(p(\Delta z, \beta)\).

Sei \(\Delta z = z_{\text{neu}} - z_{\text{alt}}\) (Minimierungsproblem). Dann:

\[ p(\Delta z, \beta) = \begin{cases} 1 & \Delta z \leq 0 \\ e^{-\beta \cdot \Delta z} & \Delta z > 0 \end{cases} \]

Fall 1: Verbesserung (\(\Delta z \leq 0\)). Wird immer akzeptiert (\(p = 1\)).

Fall 2: Verschlechterung (\(\Delta z > 0\)). Wird mit Wahrscheinlichkeit \(e^{-\beta \Delta z}\) akzeptiert. Je größer die Verschlechterung, desto kleiner \(p\). Je größer \(\beta\), desto kleiner \(p\). Für \(\beta \to \infty\) geht \(p \to 0\) (kaum noch Verschlechterungen).

Verhalten für drei \(\beta\)-Werte (bei fester Änderung \(\Delta z\)):

  • \(\beta\) klein (heiß): flacher Abfall, viele Verschlechterungen werden akzeptiert.
  • \(\beta\) mittel: mittlerer Abfall.
  • \(\beta\) groß (kalt): sehr steiler Abfall – schon kleine Verschlechterungen werden fast nie akzeptiert.
8. Warum wird \(\beta\) im Verlauf des SA-Algorithmus erhöht (statt konstant zu lassen)?

Am Anfang soll der Algorithmus den Lösungsraum breit erkunden (Exploration), damit er nicht sofort in einem beliebigen lokalen Minimum landet. Dafür braucht es hohe Akzeptanz auch schlechter Züge → kleines \(\beta\).

Zum Ende hin soll der Algorithmus die gefundene gute Region ausnutzen und dort tief einlaufen (Exploitation). Verschlechterungen wären jetzt kontraproduktiv → großes \(\beta\).

Bliebe \(\beta\) klein, würde der Algorithmus ewig umherspringen und nie konvergieren. Bliebe \(\beta\) groß, wäre SA praktisch dasselbe wie ein Gradientenverfahren und würde in lokalen Minima steckenbleiben. Die langsame Abkühlung ist genau der Trick, der beides verbindet.

9. Wie sieht beim TSP mit Simulated Annealing eine "Lösung" aus? Was ist eine "Veränderung"?

Lösung: Eine konkrete Rundreise, also eine geordnete Liste von Städten, z.B. \(1 \to 5 \to 2 \to 4 \to 3 \to 1\). Der Zielfunktionswert ist die Summe der Kantenlängen (Gesamtdistanz).

Veränderung (Nachbarschaftsoperation): Klassisch der 2-opt-Swap. Man wählt zwei Kanten der aktuellen Tour aus, entfernt sie und verbindet die entstehenden Endpunkte auf die andere Weise. Das dreht ein Teilstück der Tour um. Ergebnis: eine leicht veränderte Rundreise, deren Gesamtdistanz sich meist nur wenig unterscheidet.

Akzeptanz: Ist die neue Tour kürzer → immer übernehmen. Ist sie länger um \(\Delta z\) → mit Wahrscheinlichkeit \(e^{-\beta \Delta z}\) übernehmen, sonst verwerfen.

10. Was ist der Unterschied zwischen einem Computerexperiment und einer Monte-Carlo-Simulation?

Computerexperiment: Das reale System wird durch deterministische Gleichungen modelliert (z.B. Differentialgleichungen der Strömung, Bewegungsgleichungen im Fahrsimulator). Zwei Läufe mit identischer Eingabe liefern identische Ergebnisse. Zufall spielt keine Rolle.

Monte-Carlo-Simulation: Das System ist selbst stochastisch oder wird gezielt mit Zufallszahlen "gefüttert". Beispiele: Warteschlangen (zufällige Ankunftszeiten), Risikoanalyse (zufällige Marktbewegungen), Integration schwieriger Funktionen. Zwei Läufe liefern unterschiedliche Ergebnisse; man analysiert Mittelwerte und Streuung.

Faustregel: Sobald Zufallszahlen im Modell auftauchen, spricht man von Monte-Carlo-Simulation.

11. Warum ist eine kurze Periode bei einem Zufallszahlengenerator problematisch?

Jeder Pseudo-Zufallsgenerator wiederholt sich nach seiner Periode. Ist die Periode kurz (z.B. nur 1000 Zahlen), passiert bei längeren Simulationen Folgendes:

  • Nach 1000 Ziehungen erscheint dieselbe Folge wieder – der Rest der Simulation ist keine unabhängige Stichprobe mehr.
  • Statistische Auswertungen (Mittelwerte, Konfidenzintervalle) werden verzerrt, weil dieselben Werte immer wieder auftauchen.
  • Bei Monte-Carlo-Integration konvergiert der Schätzer nicht weiter – man addiert nur dieselben Punkte doppelt.

Deshalb wählt man Parameter wie \(m = 2^{32}-1\), \(a = 3^{19}\) mit Perioden im Bereich von \(10^5\) bis \(10^9\) und darüber.

12. Was passiert bei Monte-Carlo-Integration, wenn ich \(O_s\) zu klein wähle?

Wenn \(O_s < \max_{x\in[a,b]} f(x)\), dann gibt es Bereiche, in denen \(f(x)\) über die obere Kante des Rechtecks hinausragt. Zufallspunkte werden aber nur bis \(y = O_s\) gezogen. Alle \(x\)-Werte, bei denen \(f(x) > O_s\), werden fälschlicherweise als "Treffer" behandelt, während der Anteil der Kurve oberhalb \(O_s\) komplett ignoriert wird.

Konsequenz: Die geschätzte Fläche wird systematisch unterschätzt – der Schätzer ist verzerrt (Bias), nicht nur ungenau. Mehr Iterationen helfen nicht, weil das Problem nicht statistischer, sondern konstruktiver Natur ist.

Merke: \(O_s\) muss echte obere Schranke sein. Ist die Kurve nicht bekannt, kann man z.B. eine grobe Skizze anfertigen, das Maximum abschätzen und einen Sicherheitszuschlag draufgeben.

13. Warum ist SA eine "Metaheuristik" und kein exaktes Verfahren?

Ein exaktes Verfahren (z.B. Simplex, Branch-and-Bound) garantiert bei endlicher Laufzeit die Optimallösung – oder erkennt zumindest, dass sie erreicht ist. Bei kombinatorischen Problemen wie TSP wachsen exakte Verfahren aber exponentiell mit der Problemgröße und sind für große Instanzen praktisch unbrauchbar.

Eine Metaheuristik wie SA ist ein allgemeines Suchschema, das gute Lösungen effizient findet, aber keinerlei Optimalitätsgarantie liefert. SA kann durchaus im lokalen Minimum enden – die Wahrscheinlichkeit dafür sinkt zwar mit langsamer Abkühlung, ist aber positiv. Vorteil: Für viele Probleme findet SA in vernünftiger Zeit eine sehr gute Lösung, mit der man in der Praxis leben kann.