350 likes | 561 Views
InformatiCup 2008: CargoConcept. Die NP-harten Kerle. Malte Nuhn (Physik, Informatik). Linus Atorf (Physik). Gliederung. Problembeschreibung Lösungsweg Implementierung Parallelisierung Zusatzaufgabe. Aufgabenstellung CargoConcept. Gegeben: Städte (Punkte in der Ebene)
E N D
InformatiCup 2008:CargoConcept Die NP-harten Kerle Malte Nuhn (Physik, Informatik) Linus Atorf (Physik)
Gliederung Problembeschreibung Lösungsweg Implementierung Parallelisierung Zusatzaufgabe
Aufgabenstellung CargoConcept • Gegeben: • Städte (Punkte in der Ebene) • Grenzen (Einfach zusammen- hängende Fläche) • Gesucht: • Kürzestes Tunnelnetz,das alle Städte verbindet • Bedingungen: • Beliebige Zwischenstationen können eingefügt werden • Tunnel dürfen keine Grenzen kreuzen Ohne Zwischenstation Mit Zwischenstation „z“ Konkave Grenzen
Terminologie • Problemstellung besteht aus: • Städten (fest) • Grenzpolygon (fest) Problemstellung Mögliche Lösung Minimaler Spannbaum (MST) Grenzenberücksich- tigender MST (GMST) • Mögliche Lösung besteht aus: • Position und Anzahl der Zwischenstationen Entfernungsmessung auf der Erde (Kugeloberfläche)wird durch Euklidische Distanz (Ebene) nur angenähert
Form des Grenzpolygons • Konvexe Grenzen: • Alle Städte von allen erreichbar:Grenzen automatisch eingehalten • Problem des Euklidischen Steinerbaums • NP-vollständig • Konkave Grenzen: • Grenzen müssen eingehalten werden • Städte evtl. ohne Stationen nicht erreichbar:Problem der Wegfindung Algorithmus für konkaven Fall löst auch konvexen „Mindestens“ NP-vollständig
Lösungsidee • Zentrale Lösungsidee: • Zwischenstationen optimal einfügen • GMST (der alle Städte und Stationen verbindet) liefert für gewählte Stationen opt. Tunnelnetz Reduktion auf Suche nach geeigneten Stationen • Wegen NP-Vollständigkeit: • Erschöpfende Suche für „große Probleme“ nicht realistisch • Approximation der Lösung (z.B. durch Heuristiken) • Unser Ansatz: Genetischer Algorithmus • Spezielle Heuristik zu aufwändig • Fitness-Funktion bereits bekannt (gesamte Tunnellänge) • Parameterraum eingeschränkt („nur“ Position der Zwischenstationen)
Genetischer Algorithmus • Individuum: • Stellt mögliche Lösung dar • Liste von Zwischenstationen • Evolution eines Individuums: Initialisierung Fitness berechnen • Generation: • Menge der aktuellen Individuen • Wird laufend weiterentwickelt Selektion Kreuzung Mutation Optimierung
Genetischer Algorithmus • Initialisierung: • Alle Grenzpunkte zur Liste der Zwischenstationen hinzufügen • Dadurch Wegfindung garantiert • Evolution eines Individuums: Initialisierung Fitness berechnen • Fitness-Funktion: • Bewertet Lösungsansätze • Wegen GMST-Berechnung (Grenzen) sehr rechenintensiv • Beispiel: Selektion Kreuzung Mutation • Selektion: • Entfernt „schwache“ Individuen • Durch Backup bisheriger Generationen niemals Verschlechterung Optimierung
Genetische Operationen • Kreuzung: • Zufällige Anwendung auf Teil der gesamten Generation • Individuen tauschen oder kopieren Zwischenstationen • Fitte Individuen werden häufiger als Partner ausgewählt • Evolution eines Individuums: Initialisierung Fitness berechnen Selektion • Mutation: • Zufällige Anwendung auf Teil der gesamten Generation • Stationen werden verschoben, entfernt oder hinzugefügt Kreuzung Mutation Optimierung • Optimierung: • Verschiedene Verfahren
Lokale Optimierungen Hinzufügen: • Stationen werden regelmäßig optimiert (rechenintensiv, daher nur Teil der Generation) Verschieben: Entfernen:
Verwendete Sprachen und Hilfsmittel • Programmiersprachen • Werkzeuge • Python • Plattformunabhängig • High level • Subversion • Versionskontroll-system • PyQt (Bibliothek) • Plattformunabhängig • Natives Look & Feel • Trac • Projektmanagement • Tickets & Wiki C • Eclipse • Entwicklungs-umgebung • C • Plattformunabhängig • Low level
Aller Anfang ist schwer… • Erste Veranschaulichung in MATLAB: Gesamte Tunnellänge x y
Aller Anfang ist schwer… • Erste GUI in Visual Basic 6.0, Kommunikation mit Backend über TCP:
Aller Anfang ist schwer… • Umstieg auf Python & Qt, Brute Force:
Aller Anfang ist schwer… • Prototyp des aktuellen Designs:
Aller Anfang ist schwer… • Die ausgewachsene Anwendung:
Designübersicht • Programmhierarchie: • Python / Qt GUI (oder Kommandozeile) • Python Genetischer Algorithmus Dateninterface (XML) • C-Extension Fitnessfunktion & Optimierungsroutinen
Details zur Implementierung • Features der GUI: • Komfortable Kartenansicht mit Zoom • Anzeige der bisher besten Lösung • Berechnung jederzeit pausierbar • Unterstützte Daten-Formate: • Eigenes Map-Format (simpel & schnell) • GPX (Aufgabenstellung), DOM-Parser (flexibel) • OpenStreetMap (nur lesen), SAX-Parser (performant) • C-Extension für Python: • Effiziente Implementierung der GMST-Suche • Geometrische Algorithmen • Berücksichtigung numerisch schwieriger Fälle:z.B. Zwischenstation = Grenzpunkt
Parallelisierung, Möglichkeit 1 • Mehrere „Kontinente“: • Entkoppelte Evolutionszyklen je Kontinent • Kontinent 1 • Generation 1 • Generation 2 • Generation 3 • Kontinent 2 • Kontinent 3 Sync Sync Sync • Vorteile: • Relativ seltene, asynchrone Kommunikation möglich • Nahezu vollständig parallele Evolution • Nachteile: • Resultate des Algorithmus von Kontinenten abhängig • Hoher Implementierungs-aufwand Evolution
Parallelisierung, Möglichkeit 2 • Ein Kontinent: • Nur Fitnessfunktion & Optimierungen parallel • Großer Kontinent • Generation N • Worker #1 • Worker #2 • Worker #3 • Generation N+1 • Vorteile: • Einfache Implementierung • Funktionsweise des bestehenden Algorithmus bleibt unverändert • Nachteile: • Synchronisation nach jedem Evolutionsschritt nötig • Genetische Operationen weiterhin sequentiell
Zusatzaufgabe • Bisher: • Grenzen durch einfaches Polygon gegeben • Einfach zusammenhängendes Gebiet • Zusatzaufgabe: • Durch weitere Polygone festgelegte Hindernisse(z.B. Seen, hartes Gestein) • Landesgebiet nicht mehr einfach zusammenhängend • Erkenntnis: • Vorgestelltes Verfahren setzt den einfachenZusammenhang des Gebietes nicht voraus • Keine grundlegenden Veränderungen notwendig
Zusatzaufgabe • Notwendige Änderungen: • Editierbare Liste von Hindernispolygonen • Stationen dürfen nicht innerhalb der Hindernispolygone liegen • Verwende Grenzen- und hindernisberücksichtigenden MST (GHMST) • Initialisierung des genetischen Algorithmus: • Punkte des Grenz- und der Hindernisspolygonewerdenals Stationen hinzugefügt, dadurch Wegfindung garantiert
Verbesserungen • Seit Release 1.0 verbessert: • Kleinere Bugfixes • GUI stabiler • Pausenfunktion verbessert • Kommandozeilen-Schalter für automatische Stapelverarbeitung • Ausblick • Autotuning für Parameter des Genetischen Algorithmus‘ • Dynamische Parameter des Genetischen Algorithmus‘ • Ausbau der Parallelisierung • C-Extension mit OpenMP (echtes Multi-Threading) • OpenSource …
Backup Folien • Berechnung der Fitnessfunktion: (Details siehe Paper) • Komplexitätsklasse O(BS² + C² + BCS) • C = Cities (Anzahl Städte) • B = Borders (Anzahl Grenzpunkte) • S = Stations (Anzahl Zwischenstationen)
Backup Folien • Lookuptables:
Backup Folien • Analyse der GA-Parameter: