Ich implementiere ein GA in Python und muss eine Folge von Einsen und Nullen speichern, also stelle ich meine Daten als Binärdateien dar. Was ist die beste Datenstruktur dafür? Eine einfache Zeichenfolge?Welche Datentypen für genetische Algorithmen in Python?
Antwort
Ich denke, mit den Saiten zu bleiben ist eine gute Idee. Sie können einfach Strings in Stücke hacken. Wenn Sie auf sie als Liste reagieren müssen, können Sie sie mit "list (str)" konvertieren. Sobald Sie eine Liste haben, können Sie sie ändern und mit "'. .join (lst)" in eine Zeichenkette zurückverwandeln.
Persönlich würde ich nicht einen langen oder einen anderen Integer-Typ verwenden, um als Bits zu speichern. Es kann platzsparender sein, aber die Kopfschmerzen der Arbeit mit den Daten, wenn Sie eine Rekombination durchführen möchten, wären beträchtlich. Mutationen wären ebenfalls problematisch, wenn die Mutation aus etwas anderem als einem Bit-Flip besteht. Außerdem wäre der Code viel schwerer zu lesen.
Nur meine 2 Cent. Hoffe, dass dir das hilft.
Wenn es sich bei Ihren Chromosomen um Bitstränge fester Länge handelt, sollten Sie anstelle von Listen Numpy Arrays und vektorisierte Operationen verwenden. Diese können viel schneller sein als Python-Listen. Z. B. kann ein-Punkt-Crossover mit
def crossover(a, b):
"""Return new individual by combining parents a and b
with random crossover point"""
c = np.empty(a.shape, dtype=bool)
k = np.random.randint(a.shape[0])
c[:k] = a[:k]
c[k:] = b[k:]
return c
Wenn Sie Numpy nicht verwenden getan werden wollen, dann Strings scheinen durchaus angebracht; Sie sind viel kompakter als Listen, die Zeiger auf Elemente statt auf tatsächliche Elemente speichern.
Schließlich, achten Sie darauf, wie Pyevolve Chromosomen darstellt; Es scheint so zu sein, wenn man Numpy benutzt.
Es gibt auch [DEAP] (http://deap.googlecode.com) und [ecspy] (http://ecspy.googlecode.com), die den Vorteil haben, noch aktiv entwickelt zu werden. – CmdNtrf
- 1. Welche Java-Bibliothek/Bibliotheken für Genetische Algorithmen?
- 2. Welche Algorithmen für die Bildverkleinerung?
- 3. Genetische Algorithmen: Wie Crossover in "Subset" -Problemen zu tun?
- 4. Genetische Programmierbibliothek für Java
- 5. Genetische Algorithmen und Multi-Objektive Optimierung auf PYTHON: Bibliotheken/Tools zu verwenden?
- 6. Welche Algorithmen verwendet SQL?
- 7. Welche Algorithmen verwenden RDBMS?
- 8. Genetische Programmierung in C++, Bibliotheksvorschläge?
- 9. R Vorlage für evolutionäre Algorithmen?
- 10. Warum ist die tatsächliche Anzahl der Generation als nicht für genetische Algorithmen in R angegeben
- 11. Welche Datentypen unterstützt ein SharedObject?
- 12. Erste Genetische Programmierung Parameter
- 13. Genetische Programmierung Implementierung
- 14. Welche Algorithmen verwendet D3.js für den kraftgerichteten Graphen?
- 15. Java-Verschlüsselung: Welche Algorithmen sollte ich verwenden?
- 16. Python Pandas Inferenzspalte Datentypen
- 17. Welche Bibliotheken, Daten, Algorithmen existieren für die Simulation von Farben?
- 18. Welche gemeinsamen Algorithmen werden für Cs rand() verwendet?
- 19. Algorithmen für große O-Analyse
- 20. Welche C# -Datentypen können NULL-Typen sein?
- 21. Algorithmen für Subgraph-Isomorphie-Erkennung
- 22. Genetische/evolutionäre Algorithmus - Maler
- 23. Iteratives Drucken über zwei Datentypen in Python
- 24. Genetische Programmierung Stackoverflow Fehler
- 25. Für welche Python-Pandas-Datenstreben?
- 26. Also - welche aufregenden Algorithmen haben Sie in letzter Zeit "entdeckt"?
- 27. Queue Algorithmen
- 28. Breeze-Datentypen für Binärarray
- 29. R Fehler Genetische Programmierung Implementierung
- 30. Was ist die aktivste genetische Programmierbibliothek?
Eine 'lange' oder eine Liste von' int' klingt vernünftiger. –
Ist es einfach, Operationen wie Mutationen oder Rekombinationen durchzuführen? Ist das Arbeiten mit Listen effizient genug? – Ingo
Ich reagierte gerade auf den Teil "Speichern Sie eine Folge von Einsen und Nullen" :) Wenn Sie ein beliebiges Einfügen/Entfernen von Bits benötigen, sollten Sie stattdessen eine verkettete Liste verwenden ('collections.deque'). Können Sie Informationen zu den erforderlichen Operationen für Ihre Datenstruktur schreiben? Dies könnte für Leute wie mich hilfreich sein, die Python und die verfügbaren Datenstrukturen kennen, aber nichts über Genetik wissen :) –