WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

allgemeine Fragen zum GA

 

MenschMeier
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 22.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 15:10     Titel: allgemeine Fragen zum GA
  Antworten mit Zitat      
Hallo zusammen,
ich beschäftige mich gerade mit dem genetischen Algorithmus in Matlab und habe einige Verständnisfragen.

Frage zur generellen Ablauf:
Der GA erstellt zu beginn eine Initial Population (wenn man keine vorgibt) und dessen Fitnesswerte werden berechnet. Danach werden die "EliteCounts" direkt und die anderen Gene mit einer bestimmten (abhängig vom Fitnesswert) Wahrscheinlichkeit in die in Generation 2 übernommen. Jetzt beginnt die Vererbung (wovon hängt es ab, ob zwei Gene sich "vermehren" und mit wem? Was passiert mit den Eltern?) und darauf folgt eine zufällige Mutation. Jetzt wurde Generation 3 erschaffen und diese vermehrt und mutiert weiter, ein Kreislauf entsteht.
Ist das so korrekt?

Frage zu initial Population:
Wenn ich 6 Variablen und eine Populationsgröße von 10 habe, ist dann die initalpopulation eine 6X10 Matrix oder eine 6X1 Matrix?

Frage zur Geschwindigkeit/Aufrufe der Fitnessfunktion:
Ich habe einen anderen Algorithmus der sehr viel schnelle läuft als der GA und die selbe Fitnessfunktion verwendet. Ich weiß, dass das Berechnen des Fitnesswertes 1-3 Sekunden dauert.
Ein GA (PopSize 5) braucht aber für eine Generation, also ein Fitnessergebis etwa 5 Minuten. Eigentlich muss die Fitnessfunktion doch nur 5 mal für die Initial Population und 5 mal für die erste mutierte Kindergeneration aufgerufen werden?!
Bei einer Beispielrechnung habe ich via Profiler die Aufrufe der Fitnessfunktion gezählt: 191 Aufrufe in 5 Generationen (Dauer gesamt: 1.448s, Dauer der Bearbeitung der Fitnessfunktion: 1.446s)

Danke für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen


MenschMeier
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 22.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2011, 19:40     Titel:
  Antworten mit Zitat      
Ich habe jetzt einfach mal einige GA mit Testfunktionen und meiner Zielfunktion durchlaufen lassen und mir den f-count (anzahl Fitnessfunktionsaufrufe) anzeigen lassen. es lässt sich eine Struktur ablesen:

erste Iteration: f-count 1060 (1040 + 20 für Initial Population)
zweite iteration: f-count 1040
dritte iteration: f-count 1040
...

bei einer Popsize von 20 sind das genau 52 Aufrufe der Fitnessfunktion in der Generation. Ist das normal? jetzt ist mir auch klar, warum der Algorithmus mehrere Stunden braucht um fertig zu werden. In meiner Vorstellung müsste der doch nur 20 Aufrufe pro Generation haben?

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.10.2011, 21:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wenn ich 6 Variablen und eine Populationsgröße von 10 habe, ist dann die initalpopulation eine 6X10 Matrix oder eine 6X1 Matrix?

6x10.

Zitat:
Ich habe einen anderen Algorithmus der sehr viel schnelle läuft als der GA und die selbe Fitnessfunktion verwendet.

Was für einen anderen Algorithmus? Auch ein genetischer Algorithmus?
Wenn du für dasselbe Problem fmincon und ga verwenden kannst, wäre fmincon wahrscheinlich deutlich schneller, da es systematisch sucht, während ga mehr oder weniger blind sucht.

Um deine Frage von heute zu beantworten, wäre mehr Code hilfreich. Momentan sehe ich dafür keinen Grund.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MenschMeier
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 22.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2011, 21:43     Titel:
  Antworten mit Zitat      
Der Code ist der von Jong und deb 2009 veröffentliche Cuckoo Search Algorithmus.

Mich wundert es einfach, das der GA so viele Aufrufe der Fitnessfunktion macht. Warum reicht nicht ein Aufruf pro Induviduum pro Generation? Mir will das einfach nicht ganz in den Kopf. Das ist nämlich der treibende Faktor, der die Berechnung so in die länge zieht. Der Cuckoo Search ist bei den Aufrufen viel genugsamer. Ich lasse ihn morgen mal durchlaufe und schreibe dann, wie oft er die Fitnessfunktion aufruft.

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.10.2011, 22:11     Titel:
  Antworten mit Zitat      
Hallo,

mich wundert die Anzahl der Aufrufe auf den ersten Blick auch. Nur kann ich halt nicht erahnen, was in deinem Aufruf dazu führt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MenschMeier
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 22.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2011, 06:53     Titel:
  Antworten mit Zitat      
Ich kann die Fitnessfunktion hier nicht posten, aber das "Problem" tritt ja auch bei den Testfunktionen auf. Ich habe mal die Rastrigin mit 2 Varibalen, 20 PopulationsSize und 5 Generationen durchführt. Auch hier ist der F-Count sehr hoch.

>> Start_GA

Diagnostic information.
Fitness function = @rastriginsfcn
Number of variables = 2
nonlinear constraint function = @constraint
0 Inequality constraints
0 Equality constraints
0 Total number of linear constraints

Modified options:
options.Display = 'diagnose'
options.PlotFcns = { @gaplotbestf @gaplotscorediversity }
End of diagnostic information.


Optimization terminated: average change in the fitness value less than options.TolFun
and constraint violation is less than options.TolCon.

% die Ergebnistabelle lässt sich hier schlecht einfügen! Siehe dazu im Anhang

ans =

1.0e-004 *

0.1363 0.0075

>>

erste Iteration: f-count 1060 (1040 + 20 für Initial Population)
zweite iteration: f-count 2100 (+1040)
dritte iteration: f-count 3140 (+1040)
...

Dieser Effekt scheint der GA an sich zu erzeugen, aber wieso? Ich möchte in meiner Bachelorarbeit den GA in Matlab beschreiben und diese vielen Aufrufe entziehen sich meiner Logik.

lg und einen schönen Freitag

rast.jpg
 Beschreibung:

Download
 Dateiname:  rast.jpg
 Dateigröße:  22.2 KB
 Heruntergeladen:  451 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.10.2011, 08:30     Titel:
  Antworten mit Zitat      
Hallo,

tu mir doch den Gefallen und poste ein lauffähiges Beispiel, gerne mit einer Beispielfunktion statt der echten. Ich habe es nämlich probiert und konnte das auf die Schnelle nicht reproduzieren.
Frage auch: mit welchem Release arbeitest du?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MenschMeier
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 22.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2011, 17:20     Titel:
  Antworten mit Zitat      
Hallo,
also ich habe mit dem optimtool die Testfunktion @rastriginsfcn durchlaufen lassen.

PopSize ist auf Standart: 20
Maxgen auch: 100
nvars = 2

Im Anhang sind die Ergebnisse. Wie in den vorherigen Post beschrieben, sind die f-count's sehr hoch. Mir ist nicht klar, warum der GA die Fitnessfunktion so oft öffnet. In der testfunktion macht das zeitlich kaum einen Ausschlag, aber in meiner richtigen Fitnessfunktion sind das Stunden.

lg

Anhang:

rastriginsfcn.jpg
 Beschreibung:
Bild des Ergebnisses (Level of Display: iter)

Download
 Dateiname:  rastriginsfcn.jpg
 Dateigröße:  266.71 KB
 Heruntergeladen:  505 mal
execute.m
 Beschreibung:
von Matlab erstellte M-File zum starten des GA

Download
 Dateiname:  execute.m
 Dateigröße:  500 Bytes
 Heruntergeladen:  357 mal
constraint.m
 Beschreibung:
leere NB, da ohne der GA nicht startet.

Download
 Dateiname:  constraint.m
 Dateigröße:  57 Bytes
 Heruntergeladen:  334 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.10.2011, 18:26     Titel:
  Antworten mit Zitat      
Hallo,

wieso soll GA ohne nichtlineare NB nicht starten? Du kannst das einfach durch [] ersetzen.

Ich habe mal experimentiert:
Interessanterweise ist die Anzahl der Funktionsauswertungen ohne nichtlin. NB 20 pro Generation, aber selbst mit leerer nichtlinearer NB ist sie bei über 1000.
Warum dies so ist, war auch mir vorerst nicht klar, aber Google hilft:
http://www.mathworks.de/matlabcentr.....reader/view_thread/304689

Wenn du keine nichtlinearen NB hast, dann setze also bitte an diese Stelle [].

Wenn du welche hast und die hohe Anzahl an Funktionsauswertungen vermeiden möchtest, kannst du die nichtlin. NB auch über Strafterme in der Fitnessfunktion einbauen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MenschMeier
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 22.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2011, 18:39     Titel:
  Antworten mit Zitat      
Hallo Harald,
wohin darf ich die Pralinen schicken?

Deine Lösung hat mir gerade einen Geschwindigkeitsschub gegeben, das kannst du dir nicht vorstellen Smile genial!

lg und ein schönes Wochenende
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.