2010-05-06 8 views
9

Ich habe ein wenig GP (Anmerkung: sehr wenig) Arbeit in der Schule und habe damit herum gespielt. Meine Frage bezieht sich auf die anfänglichen Laufeinstellungen (Populationsgröße, Anzahl der Generationen, minimale/maximale Tiefe der Bäume, minimale/maximale Tiefe der ursprünglichen Bäume, Prozentsätze für verschiedene Reproduktionsoperationen usw.). Wie werden diese Parameter normalerweise eingestellt? Welche Papiere/Sites benutzen die Leute als gute Anleitung?Erste Genetische Programmierung Parameter

Antwort

3

Sie werden feststellen, dass diese auf Ihrem Problembereich hängt sehr stark - vor allem die Art der Fitness-Funktion, Ihre Implementierung DSL usw.

Einige persönliche Erfahrung:

  • Große Bevölkerungsgrößen scheinen zu arbeiten besser, wenn Sie eine geräuschvolle Fitness haben Funktion, ich denke, das ist, weil das Wachstum von Untergruppen in der Bevölkerung über aufeinanderfolgende Generationen wirkt geben mehr Stichproben von die Fitness-Funktion. Ich verwende normalerweise 100 für weniger verrauschte/deterministische Funktionen, 1000+ für laute.
  • Für die Anzahl der Generationen ist es am besten, Verbesserungen in der Fitness-Funktion zu messen und zu stoppen, wenn es Ihre Zielkriterien erfüllt. Ich laufe normalerweise ein paar hundert Generationen und sehe, welche Art von Antworten kommen, wenn es keine Verbesserung zeigt, dann hast du wahrscheinlich ein Problem woanders.
  • Baumtiefe Anforderungen sind wirklich abhängig von Ihrem DSL. Ich versuche manchmal, eine Implementierung ohne explizite Grenzen zu tun, aber bestrafen oder beseitigen Programme, die zu lange laufen (das ist wahrscheinlich , was Sie wirklich interessieren ....).Ich habe auch gefunden, dass Gesamtknotenzahlen von ~ 1000 recht brauchbare harte Grenzen sind.
  • Prozentsätze für verschiedene Mutation/Rekombination Operatoren scheinen nicht so viel Bedeutung. Solange Sie eine umfassende Reihe von Mutationen haben, wird jede vernünftige ausgeglichene Verteilung normalerweise arbeiten. Ich denke, der Grund dafür ist, dass Sie im Grunde nach günstigen Verbesserungen suchen, so dass das Hauptziel nur darin besteht, sicherzustellen, dass die Prozessverbesserungen vernünftig über alle Möglichkeiten verteilt sind.
0

Werfen Sie einen Blick auf Kozas voluminous tomes in diesen Angelegenheiten.

+0

Ich habe Koza erstes Buch zu diesem Thema lesen. Ich denke, dass ich seit 1992 mehr Forschung über geeignete Startpopulation gemacht habe, welche Reproduktionsmethoden besser sind etc. – cmptrer

1

Als ich begann, Genetische Algorithmen zu untersuchen, hatte ich die gleiche Frage.

Ich wollte Daten variating Parameter auf einem sehr einfachen Problem und Link gegeben Operatoren und Parameter-Werte (wie Mutationsraten, etc.) zu Ergebnissen, die in Abhängigkeit von der Bevölkerungsgröße usw.

Sobald ich in gestartet sammeln bekommen GA ein bisschen mehr Ich erkannte dann, dass angesichts der enormen Anzahl von Variablen ist dies eine große Aufgabe, und Generalisierung ist extrem schwierig.

aus meiner (begrenzten) Erfahrung, wenn Sie sich entscheiden, das Problem zu vereinfachen und einen festen Weg zu Crossover, Auswahl zu verwenden, und spielen Sie einfach mit Populationsgröße und Mutationsrate (in einer bestimmten Weise implementiert) versuchen zu kommen Mit allgemeinen Ergebnissen werden Sie schnell erkennen, dass zu viele Variablen immer noch im Spiel sind, denn am Ende des Tages hängt natürlich die Anzahl der Generationen, nach denen Sie statistisch ein vernünftiges Ergebnis erhalten werden (egal wie Sie es definieren wollen) auf das Problem, das Sie lösen und folglich auf dem Genom Größe (das gleiche Problem auf unterschiedliche Weise darstellt, wird offensichtlich zu unterschiedlichen Ergebnissen in Bezug auf die Wirkung der gegebenen GA-Parameter führen!).

Es ist sicherlich möglich, eine Reihe von Richtlinien zu erstellen - wie die (seltene, aber gute) Literatur beweist -, aber Sie werden die Ergebnisse nur dann statistisch verallgemeinern können, wenn das Problem genau kodiert werden kann Der gleiche Weg und die Fitness wird auf eine ähnliche Weise bewertet (was meistens bedeutet, dass Sie sich mit einem sehr ähnlichen Problem auseinandersetzen).

2

Warum versuchen Sie nicht, einen genetischen Algorithmus zu verwenden, um diese Parameter für Sie zu optimieren? :)

Jedes Problem in der Informatik kann mit einer weiteren Schicht aus indirection gelöst (außer zu viele Schichten Indirektionsebene.)

-David J. Wheeler

+0

Keine Verbesserung, da es keine richtige Antwort ist, aber es hat mich zum Lachen gebracht. :-) –

0

Es gibt sehr unterschiedliche Denkschulen sogar innerhalb der GP-Gemeinschaft - Einige betrachten Populationen in den (niedrigen) Tausenden als ausreichend, während Koza und andere oft nicht als wert betrachten y, um einen GP-Lauf mit weniger als einer Million Individuen in der GP-Population zu beginnen ;-)

Wie bereits erwähnt, hängt es von Ihrem persönlichen Geschmack und Ihren Erfahrungen, Ressourcen und wahrscheinlich dem verwendeten GP-System ab!

Cheers, Jan

Verwandte Themen