Frage

Ich bin auf der Suche einige genetische Algorithmen auf ein Operations Research Projekt hinzuzufügen ich beteiligt war. Zur Zeit haben wir ein Programm, das hilft bei der einige Planung zu optimieren und wir in einigen Heuristik in Form von genetischen Algorithmen hinzufügen möchten. Gibt es gute Bibliotheken für allgemeine genetische Programmierung / Algorithmen in C ++? Oder würden Sie empfehlen, I-Code nur meine eigenen?

Ich soll hinzufügen, dass, während ich auf c nicht neu bin ++ ich ziemlich neu bin, diese Art von mathematischen Optimierungsarbeiten in c zu tun ++ als die Gruppe I mit zuvor gearbeitet hatte eher ein proprietäres Optimierungspaket zu verwenden.

Wir haben eine Fitness-Funktion, die ziemlich rechenintensiv ist zu bewerten, und wir haben einen Cluster dies auf denen sie laufen so parallelisierten Code ist sehr wünschenswert.

So ist c ++ eine gute Sprache für diese? Falls nicht, bitte ein paar andere, die empfehlen, wie ich bin bereit, eine andere Sprache zu lernen, wenn es das Leben leichter macht.

Danke!

War es hilfreich?

Lösung

Ich würde empfehlen, Ihre eigenen Rollen. 90% der Arbeit in einem GP ist die Codierung des Genotyps, wie es wird operiert, und die Fitness-Berechnung. Dies sind Teile, die Änderung für jedes anderes Problem / Projekt. Der eigentliche evolutionäre Algorithmus Teil ist in der Regel recht einfach.

Es gibt mehrere GP-Bibliotheken da draußen ( http://en.wikipedia.org/wiki / Symbolic_Regression # Implementations ). Ich würde diese als Beispiele und Referenzen obwohl verwenden.

C ++ ist eine gute Wahl für GP, weil sie dazu neigen, sehr rechenintensiv zu sein. Üblicherweise ist die Fitness-Funktion ist der Engpass, so dass es sich lohnt, zumindest machen diesen Teil zusammengestellt / optimiert.

Andere Tipps

Ich verwende GAUL

es ist eine C-Bibliothek mit allem, was Sie wollen.
(Pthread / Gabel / openmp / mpi)
(Verschiedene Crossover / Mutation Funktion)
(Nicht GA-Optimierung: Hill-Climbing, N-M Simplex, Simulierte annealling, Tabu, ...)

Warum Ihre eigene Bibliothek aufbauen, wenn es eine solche leistungsfähige Werkzeuge ???

Ich habe nicht persönlich noch verwendet, aber die Alter Layered Bevölkerungsstruktur (ALPS) Methode wurde verwendet, um menschliche Wettbewerbs Ergebnisse zu erzeugen und hat sich gezeigt, dass bei der Suche nach optimalen Lösungen in rauen Landschaften Fitness mehrere populäre Methoden zu entwickeln. Darüber hinaus enthält die Link-Quellcode in C ++ FTW.

Ich schlage vor, Sie haben einen Blick in die Matlab Optimierung Toolkit - es kommt mit GAs aus dem Kasten heraus Sie nur haver Code die Funktion Fitness (und eine Funktion inital Bevölkerung erzeugen, schließlich) und ich glaube, Matlab einig C ++ Interoperabilität hat, so dass Sie Ihnen Funktionen in C ++ Code könnten. Ich benutze es für meine Experimente und ein sehr nettes Feature ist, dass man auch alle Arten von Diagrammen aus der Box zu bekommen.

Said so - wenn Ihr Ziel über genetische Algorithmen zu lernen ist, sind Sie besser dran es Codierung, aber wenn Sie nur wollen, laufen Experimente Matlab und C ++ (oder auch nur Matlab) ist eine gute Wahl.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top