Ich baue einen genetischen Algorithmus, um das Problem des reisenden Verkäufers zu lösen. Leider treffe ich Spitzen, die über tausend Generationen lang aufrechterhalten werden können, bevor ich aus ihnen mutiere und bessere Ergebnisse erziele. Welche Crossover- und Mutationsoperatoren funktionieren in diesem Fall im Allgemeinen gut?Empfohlene GA-Betreiber für ein TSP-Problem?
Antwort
Könnten Sie bitte klären
„Leider habe ich getroffen Spitzen, die über tausend Generationen aufrecht erhalten kann, bevor er aus sie mutieren und immer bessere Ergebnisse“?
Sie könnten die Crossover-Operatoren überprüfen, die sicherstellen, dass Sie keine wiederholenden Knoten in den Kinderchromosomen haben. Einige dieser Crossover-Operatoren sind die Order-Crossover (OX) - und die Edge-Crossover-Operatoren.
Mutation kann so einfach sein wie einfach zwei Positionen in einem einzigen Chromosom zu vertauschen.
BTW, da Sie "python" markiert haben, werfen Sie einen Blick auf Pyevolve, es hat auch ein TSP-Beispiel.
Geordnete Mutation und geordnete Kreuzung (siehe this article). Standard-Mutations- und Crossover-Operationen führen normalerweise zu ungültigen Lösungen (d. H. Doppelte und/oder fehlende Städte in einer Route).
Kürzlich gab es eine similar question.
Ich habe a Java applet that implements the TSP using ordered cross-over and mutation, wenn Sie daran interessiert sind, die Leistung Ihrer Implementierung zu vergleichen.
Wenn Ihr Problem darin besteht, dass Peaks für mehr als eintausend Generationen bestehen bleiben, liegt das Problem möglicherweise nicht bei den Crossover- und Mutationsoperatoren. Sie werden Ihrer Bevölkerung möglicherweise nicht genügend Variation beibringen oder sie beibehalten: Ich würde die Proportionen von Kreuzungen, Mutationen und Überlebenden von einer Generation zur nächsten untersuchen und möglicherweise den Anteil an Mutationen erhöhen.
- 1. Empfohlene IDE für VBA
- 2. Empfohlene Dokumentstruktur für CouchDB
- 3. Empfohlene Befehlszeilenoptionen für Clang
- 4. Empfohlene Initialisierungswerte für Zahlen
- 5. Empfohlene GPUs für Tensorflow
- 6. Empfohlene Entwurfsmuster für asynchrone Blöcke?
- 7. Empfohlene Breiten für reaktionsschnelle Layouts
- 8. Empfohlene Berechtigungen für Website-Dateien
- 9. Empfohlene Datenstruktur für eine Datenzugriffsschicht
- 10. Empfohlene jQuery Vorlagen für 2012?
- 11. Empfohlene Serverspezifikationen?
- 12. Empfohlene Quellensteuerverzeichnisstruktur?
- 13. Empfohlene Titelbeschleunigung?
- 14. Empfohlene Linux Distro für Android Entwicklung Workstation
- 15. Abnitio und empfohlene Nutzungsszenarien für Datenimport/-export
- 16. Empfohlene Vorgehensweise für die Anwendungsausnahmebehandlung in AngularJS
- 17. Empfohlene Dateieinrichtung für VisualSVN- und Webbereitstellungsprojekte
- 18. Empfohlene Multithreading-/Parallelverarbeitungsbücher für C# 4.0
- 19. Empfohlene Technologie für die Desktop-Anwendung
- 20. Python - Empfohlene IDE für die Remote-Entwicklung
- 21. Empfohlene Carts für Rails E-Commerce-App
- 22. Empfohlene Datenstruktur/Format für Web-MVC-Anwendungen?
- 23. NVM & Node.js - Empfohlene Installation für alle Benutzer
- 24. Azure EventHubs: empfohlene Werte für PartitionManagerOptions
- 25. Empfohlene Zwei-Wege-Verschlüsselung Edelsteine für Ruby?
- 26. Empfohlene Ressourcen für Data Compression Research
- 27. Empfohlene Vorgehensweisen für Wiedereintrittscode in C, C++
- 28. Empfohlene Mac SQLite IDEs?
- 29. Empfohlene modellbasierte Testwerkzeuge
- 30. Empfohlene Open Source Profiler
http://stackoverflow.com/questions/1544055/rossover-operation-in-genetic-algorithm-for-tsp könnte helfen. –