Einzelnen Beitrag anzeigen

Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#32

Re: [Artikel] Simulierte Evolution

  Alt 21. Jul 2006, 14:13
@Danke hagen, für Deine Antwort, interessant, aber das war es nicht. Ich weiss, dass die Programme
über Rechner am Schluss die gesamte Rechenzeit übernahmen. Ich glaube, da war auch jedem Programm eine maximale Rechenzeit zugewiesen gewesen. Trotzdem kam es zum GAU.

Ein wenig habe ich michmit GA damit beschäftigt, ich habe meine Programme so aufgebaut:
a) Lernmodus
b) Aktionsmodus
Es gibt einen Pool mit Funtionen/Proceduren (siehe unten)
Einen Bewerter/Selector
Einen Populationspool/Programmepool

a) Im Lernmodus werden Ergebnisse gesucht/optimiert.

1. Functionen/Proceduren Pool,
die von den Populationen/Programmen aufgerufen werden können. Dabei: Die Überparameter werden in einem bestimmen Bereich akzeptiert. Übersteigt/unterschreitet ein Übergabeparameter den Wertebereich, wird auf dem höchsten/niedigsten erlaubten Wert gesetzt. Und: die Programme rufen per Zufall die Proceduren/Funktionen (d. h. mindestens eine Procedure/Function bis alle) mit zufälligen Werten auf.
Damit kristalisiert sich raus, ob eine Procedur/Funktion im Pool überhaupt Sinn macht. z. B. gleitender Durchschnitt auf Aktienkurse als alleiniges Kauf-/Verkaufskriterium einer Aktie ist
sinnlos und bringt je nach Aktie unterdurchschnittliche Renditen)

2. Bewerter/Selection
Der Bewerter will entweder
a) das Maximum eines Wertes. z.b. Hohe Rendite
b) das Minimum eines Wertes. z. B. Niedrigen Ölverbrauch
c) Ergebnis/Variable in der Nähe eine bestimmten Wertes/Zustandes

Danach richtet sich, welche Populationen/Programme letztendlich 'überleben'.
Diese Populationen speichern Ihre zufällig erzeugten Übergabeparameter und dürfen solange leben
bis eine Population dem Bewerter bessere Ergebisse bringt.

Sonderfälle:
Es gibt Sonderfälle, die bei bestimmten Situationen ausgelöst werden müssen und auf Populationen
aktiv werden, die nur in der Situation aktiv werden. z. B. Notfälle/Extremwerte
Diese dürfen nicht sterben, bzw. deren Werte dürfen nicht verändert werden.

3. Populationen/Programme
Dürfen solange leben, bis eine Population/Programm bessere Ergebnise bringt. Bei mir dürften 10 Programme/Populationen Ihre Ergebnisse liefern.


b) Aktionsmodus
Dabei rufen die besten 10 Populationen die erlaubten Functionen/Proceduren aus dem Pool
mit den optimierten (zuvor gespeicherten) Parametern auf und der Bewerter liefert die Ergebnisse.


Generell:
Ungeahnte Ergebnisse sind dabei nicht erwünscht. Die Populationsgröße ist auf 100 begrenzt,
die Durchläufe, um Optimierungen zu finden ist, je nach Anzahl der zu optimierenden Variablen
Parameter auf 10 Mio. beläuft, wobei man sich anzeigen kann, wie schnell das Optimum gefunden wird, und entsprechend den Wert runtersetzt. Ist eine Population besser als die im 100er Pool, wird dieser eingetragen, dabei 'stirbt' der Letzte. Dabei können auch Programme, die weniger Code/Zeit
oder Proceduren aus dem Pool benötigen, bevorzugt werden, wenn gleiche Ergebnisse vorliegen.

So mache ich es vorerst. Beste Grüße
G02EITS
  Mit Zitat antworten Zitat