Simulierte Abkühlung
Die simulierte Abkühlung (Englisch simulated annealing) ist ein heuristisches Optimierungsverfahren des Operations Research. Das Verfahren wird für Optimierungsprobleme eingesetzt, die durch ihre hohe Komplexität das vollständige Ausprobieren aller Möglichkeiten und einfache mathematische Verfahren ausschließen. Benutzt wird dieses Verfahren zum Beispiel beim Floorplanning im Laufe eines Chipentwurfs.
Grundidee ist die Nachbildung eines Abkühlungsprozesses, etwa beim Glühen in der Werkstoffkunde. Nach Erhitzen eines Metalls sorgt die langsame Abkühlung dafür, dass die Moleküle ausreichend Zeit haben, sich zu ordnen und stabile Kristalle zu bilden. Dadurch wird ein energiearmer Zustand, nahe am Optimum erreicht.
- Übertragen auf das Optimierungsverfahren entspricht die Temperatur einer Akzeptanzschwelle unterhalb derer sich ein Zwischenergebnis der Optimierung auch verschlechtern darf. Der Metropolisalgorithmus ist die Grundlage der simulierten Abkühlung. Im Gegensatz zum Bergsteigeralgorithmus (hill climbing) kann das Verfahren ein lokales Optimum wieder verlassen und ein besseres finden.
Algorithmus
Problemstellung
Gegeben sei der Wertebereich und die Fitness-Funktion .
Gesucht ist ein globales Minimum von über , d.h. ein für das gilt, für alle .
Initialisierung
Wähle Temperatur und Kühlungskonstante . Startzeit .
Lokale Veränderung
Wähle einen Nachbarn von .
Selection
- Gilt , setze .
- Gilt , setze mit Wahrscheinlichkeit .
Abbruch oder Weiter
Ist die Abbruchbedingung nicht erfüllt, beginne im nächsten Zeittakt wieder mit einer lokalen Veränderung.
Erläuterungen
Wie ein Nachbarn gewählt wird, hängt von dem vorliegenden Problem ab. In der Informatik ist häufig der Wertebereich und wird als Bit–Vektor betrachtet. Ein Nachbar von kann z.B. durch das flippen (invertieren) eines oder mehrerer Bits gewählt werden (siehe Wegener 2005).
Es sind verschiedene Abbruchbedingungen denkbar. Zum Beispiel wird nur eine maximale Anzahl von Durchläufen erlaubt, eine ausreichende Fitness definiert oder eine Untergrenze für die Abkühlung festgelegt.
Siehe
- Schwellenakzeptanz (threshold Accepting)
- Deterministic Annealing
- Sintflutalgorithmus
Weblinks
- Interaktives Java-Applet zur Demonstration
- Java-Applet zum Vergleich von Simulated Annealing und Ameisenalgorithmen
Literatur
Ingo Wegener: Simulated Annealing Beats Metropolis in Combinatorial Optimization. In: Lecture Notes in Computer Science. Band 3580. Springer, Berlin/Heidelberg 2005, ISBN 978-3-540-27580-0, S. 589–601 (doi:10.1007/11523468 – Für ein einfach zu beschreibendes Problem gezeigt wird, dass, unabhängig von der Temperatur, die simulierter Abkühlung effizienter ist als der Metropolisalgorithmus.).