Ich habe einen genetischen Algorithmus für ein Optimierungsproblem. Ich habe die Laufzeit des Algorithmus in mehreren Läufen mit derselben Eingabe und denselben Parametern (Populationsgröße, Generationsgröße, Crossover, Mutation) aufgezeichnet.
Die Ausführungszeit ändert sich zwischen den Ausführungen. Ist das normal?
Ich habe auch festgestellt, dass die Laufzeit entgegen meiner Erwartung manchmal abnimmt, anstatt zuzunehmen, wenn ich sie mit einem größeren Eingang ausführe. Wird das erwartet?
Wie kann ich die Leistung meines genetischen Algorithmus experimentell analysieren?
Antworten:
Der typische Ansatz besteht darin, mehrere Läufe des Evolutionsalgorithmus (EA) durchzuführen und die durchschnittliche Leistung über die Zeit zu zeichnen (durchschnittliche Leistung des Best-of-Run-Individuums, NICHT des Populationsdurchschnitts).
Eine gute Faustregel ist, mindestens 30 Läufe durchzuführen (natürlich sind 50-100 Läufe besser).
Der Durchschnitt ist besser als der beste Wert, der in einer Reihe von Läufen erzielt wird, aber auch die Varianz sollte berücksichtigt werden.
Es gibt einige schöne Beispiele auf der Website von Randy Olson :
Die grundlegende Aufschlüsselung zur Berechnung eines Konfidenzintervalls für einen Populationsmittelwert lautet wie folgt:
Identifizieren Sie den Stichprobenmittelwert . Während sich von , dem Mittelwert der Grundgesamtheit, unterscheidet, werden sie immer noch auf die gleiche Weise berechnet:x¯ x¯ μ
Identifizieren Sie die (korrigierte) Standardabweichung der Stichprobe : ist eine Schätzung der Populationsstandardabweichung .s
Berechnen Sie den kritischen Wert , , der Student-t - Verteilung. Dieser Wert ist abhängig vom Konfidenzniveau und der Anzahl der Beobachtungen .t∗ C n
Der kritische Wert wird aus der T-Verteilungstabelle ermittelt (in den meisten statistischen Lehrbüchern ist er aufgeführt). In dieser Tabelle wird als wobei die Freiheitsgrade sind (ermittelt durch Subtrahieren von eins von der Anzahl der Beobachtungen) und ist das Signifikanzniveau .t∗
Ein besserer Weg zu einem vollständig präzisen kritischen -Wert ist die statistische Funktion, die in Tabellenkalkulationen (z. B. Funktion ), wissenschaftlichen Computerumgebungen (z. B. SciPy ) und Sprachbibliotheken (z. B. C ++ und ) implementiert ist .t∗
T.INV.2T
stats.t.ppf
boost::math::students_t
Stecken Sie die gefundenen Werte in die entsprechenden Gleichungen:
Der letzte Schritt ist die Interpretation der Antwort . Da die gefundene Antwort ein Intervall mit einer Ober- und Untergrenze ist, sollte angegeben werden, dass basierend auf den angegebenen Daten der wahre Mittelwert der Population zwischen der Untergrenze und der Obergrenze mit dem gewählten Konfidenzniveau liegt.
Je mehr sich die Konfidenzintervalle zweier Algorithmen überschneiden, desto wahrscheinlicher ist es, dass die Algorithmen dieselbe Leistung erbringen (oder wir haben nicht genug Stichproben abgetastet, um zwischen den beiden zu unterscheiden). Wenn sich die 95% -Konfidenzintervalle nicht überschneiden, ist die Leistung des Algorithmus mit der höchsten durchschnittlichen Leistung erheblich besser.
In EA ist die Quellverteilung im Wesentlichen nie normal und was bisher gesagt wurde, gilt formal nur, wenn es sich um eine Normalverteilung handelt!
In der Tat sagt es immer noch viele Dinge. Die folgende Tabelle fasst die Leistung der t-Intervalle in vier Situationen zusammen:
Für genauere Antworten sind nichtparametrische Statistiken der richtige Weg ( weitere Informationen finden Sie unter Eine Einführung in die Statistik für die experimentelle Analyse der EG von Mark Wineberg und Steffen Christensen).
quelle
Antwort: Sie analysieren die Leistung statistisch.
Siehe beispielsweise Abbildung 3 dieses Dokuments : Eine königliche Bausteinstraße, auf der Crossover nachweislich unerlässlich ist, wenn die Leistung verschiedener GA miteinander verglichen wird.
Das Diagramm zeigt Änderungen der Fitness (Y-Achse) gegenüber der Iterationszahl (X-Achse). Jeder Algorithmus wird mehrmals ausgeführt und die durchschnittliche, minimale und maximale Fitness wird im Diagramm angezeigt . Daher zeigt sich deutlich, dass einige GA-Variationen eine bessere Leistung aufweisen als andere.
Die asymptotische Konvergenz von Fitness über Iteration, wie in der Antwort von vzn vorgeschlagen, ist in den meisten Fällen ebenfalls sehr nützlich.
...
(Außer wenn die Fitness nicht konvergiert, wenn Sie eine sich entwickelnde Fitnessfunktion haben.)
quelle
Die grundlegende Strategie besteht darin, die Fitnessfunktion über die Zeit grafisch darzustellen. man kann die Eignung der besten Lösung oder die durchschnittliche Eignung von Lösungen, die schlechteste Lösung usw. grafisch darstellen. Die besten / schlechtesten weisen treppenstufenartige Eigenschaften auf und der Durchschnitt zeigt eine asymptotische Konvergenz in Richtung des durch die GA erreichbaren Optimums. Es gibt im Allgemeinen keine a priori "Ausführungszeit", die mit dem Finden einer Lösung für GAs verbunden ist. Normalerweise wird der Algorithmus an einem Punkt beendet, der "gut genug" ist, indem diese asymptotische Kurve untersucht wird.
siehe zB Grafiken am Ende dieser Diashow:
quelle