AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials [Artikel] Simulierte Evolution
Tutorial durchsuchen
Ansicht
Themen-Optionen

[Artikel] Simulierte Evolution

Ein Tutorial von Luckie · begonnen am 19. Jul 2006 · letzter Beitrag vom 31. Jul 2006
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
Simulierte Evolution

Um was geht es dabei? Kurz gesagt geht es darum, dass sich Computerprogramme selber schreiben und verbessern. Sich also entwickeln, sich verbessern und sich der gestellten Aufgabe immer besser "anpassen" bzw. sie immer besser lösen können. Und faszinierend ist, was man damit zum Schluss in der Praxis selber, überraschenderweise oder auch nicht, erleben kann.

Artikel: Simulierte Evolution
Ein Teil meines Codes würde euch verunsichern.
 
Benutzerbild von negaH
negaH
 
#31
  Alt 21. Jul 2006, 12:00
Hm das Buch selber kenne ich nicht, weis aber von einer ähnlichen Gechichte. Zu DOS Zeiten gab es ein lustiges Kriegsspiel. In einer simulierten Welt aus Speicherzellen und einem vorgefertigten Set von Maschinenbefehlen war es die Aufgabe der Spieler=Programmierer möglichst effiziente Progrämchens zu coden die diesen Speicher auf eine Weise beackerten das sie sich 1.) vorpflanzten oder bewegten und 2.) Gegnerische Progrämchens dabei vernichteten. Der Programmierer dessen Program als letztes übrig blieb hatte gewonnen.

Zurück zum Thema, bei den EP/GPs sehe ich das große Problem darin

1.) eine Selektierungsfunktion zu definieren, immerhin evolutionieren die EP/GP so wie ich es verstanden haben ohne Aufsicht aus sich selbst heraus. Also ohne konkrete Zielsetzungen.
2.) die Geschwindigkeit/Dauer dieser Evolution und die Größe der notwenigen Population von solchen Programmen.
3.) die Kodierung und Syntax sollte sehr universell sein damit auch ungeahnte Programme rauskommen

Das sind Probleme die enormen Rechenpower benötigen werden. Denn wenn man wirklich kreative Programme erzeugen möchte, Programme wie die die wir jeden Tag erzeugen, dann benötigten wir um Magnituden mehr Speicher und Prozessorpower als das was wir heute haben.


Das Buch was ich damals zur Hand hatte heist:

"Genetische Algorithmen und Evolutionsstrategieen"
Eberhard Schöneberg, Frank Heinzmann, Sven Feddersen
1. Auflage 1994 im Addison-Wesley Verlag
ISBN 3-89319-493-2
481 Seiten stark
enthielt eine 5 Zoll Diskette mit C Sourcen und Programmen
Auf Seite 333 zb. "Auotmatische Erzeugung von Programmen in LSIP".

Sehr zu empfehlen da von den Grundlagen bis zu konkreten Anwendungen alles sehr verständlich beschrieben wird und nicht mit praktischen Beispielen, Diagrammen und Grafiken gegeizt wurde. Nur die DOS Software dürfte heutzutage wohl unmodern geworden sein.

Gruß Hagen
  Mit Zitat antworten Zitat
Go2EITS

 
Delphi 7 Personal
 
#32
  Alt 21. Jul 2006, 13: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
Benutzerbild von Boombuler
Boombuler

 
Delphi 2009 Professional
 
#33
  Alt 21. Jul 2006, 14:28
Offtopic:

Zitat von negaH:
Zu DOS Zeiten gab es ein lustiges Kriegsspiel. In einer simulierten Welt aus Speicherzellen und einem vorgefertigten Set von Maschinenbefehlen war es die Aufgabe der Spieler=Programmierer möglichst effiziente Progrämchens zu coden die diesen Speicher auf eine Weise beackerten das sie sich 1.) vorpflanzten oder bewegten und 2.) Gegnerische Progrämchens dabei vernichteten. Der Programmierer dessen Program als letztes übrig blieb hatte gewonnen.
Du meinst nicht zuuuuufällig CoreWar? (http://de.wikipedia.org/wiki/Corewar)

Greetz
Boombuler

PS: sollte wer daran intresse haben ich hab noch n interpreter für Redcode...
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH
 
#34
  Alt 21. Jul 2006, 14:34
Doch das scheint es zu sein, allerdings hätte ich gedacht das das Teil schon längst tot und vergessen ist.
Ich meine aber das es früher nicht "CoreWar" hieß.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#35
  Alt 21. Jul 2006, 15:49
Mal grad etwas off-Topic: Ich hab mir mal den Link zu Wiki angeguckt zum Thema Corewars. Und ich bin fasziniert!
Ich bin grade ein paar Tutorials am durchlesen und glaube es zu verstehen. Aber gibt es vielleicht irgendwo ein deutsches Corewar Forum? Weil ich würde gerne wissen ob ich eins wirklich verstehe oder ob ich das falsch verstehe...
Oder meint ihr ich kann sowas auch hier fragen? Ist ja im Prinzip Assembler.. ?!

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH
 
#36
  Alt 21. Jul 2006, 16:20
Das Ding ist schon über 20 Jahre alt, ich hatte es vor mehr als 15 Jahren getestet ! Ich glaube also kaum das es heut noch Foren dafür gibt, aber sag niemals nie. Der Eintrag im Wiki ist schon erstaunlich genug.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

 
Delphi 2009 Professional
 
#37
  Alt 24. Jul 2006, 09:54
BTW: Man könnte ja mal n DP internes Tunier für CoreWar anstreben
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#38
  Alt 24. Jul 2006, 12:20
Fände ich gut
Btw: *Schleichwerbung mach*
Hab mal en CoreWar Forum gemacht weil ich selbst Anfänger bin und sowas gebraucht hätte und da ist auch Platz für Kämpfe etc..
www.CoreWar-Space.de.vu. Nur wie schon innem anderen Thread beschrieben gibts das Problem das man bei der Anmeldung kein
Passwort zugeschickt bekommt... aber das bin ich grad am lösen...
Michael
  Mit Zitat antworten Zitat
Go2EITS

 
Delphi 7 Personal
 
#39
  Alt 25. Jul 2006, 09:02
Ich habe mal für Euch etwas Leichteres als CoreWars gesucht, nämlich Pascal Robots!
Die lassen sich leicht programmieren, wenn ich richtig sehe unter Turbo Pascal und Dos. Ein Win Robots gibt es wohl noch nicht. Eine Portierung nach Delphi wäre mal eine Herausforderung für Euch. Evtl. ist es ein Thema für eine Gemeinschaftsarbeit. Hier der InfoLink dazu. Es ist leider kein Download möglich, die Seite wird nicht mehr gepflegt. Es müsste aber irgendwo eine Pascalversion geben. Vielleicht findet jemand etwas dazu und gibt uns einen Link dazu.
Pascal Robots

Ihr findet bestimmt noch etwas...

Meine Ergänzung zum Thema Programmierspiele: PcRobots
Pc Robots
PcRobots Deutsch

Ganz viele Links mit sehr interessanten Inhalten:
Sammlung
Vielleicht findet ja jemand die jüngsten Sourcen zu Pascal Robots.
Viel Vergnügen!
Go2EITS
  Mit Zitat antworten Zitat
TurboMartin

 
Turbo Delphi für Win32
 
#40
  Alt 25. Jul 2006, 10:04
Du hasst die die URLs nicht angeschaut. Die sind alle gleich, bis auf den Downloadlink, da hättest du aus "zeus" "www" machen müssen. Allerdings läuft die Version nicht unter Win.
Trotzdem mal als Anhang dabei, da kaum jemand ARJ-Dateien öffnen kann.
Ich versuch es dann mal zu übersetzen.

[edit]WinProblem herausgefunden: PRobots unterstütz nur Rechner mit bis 200 MHz[/edit]
Angehängte Dateien
Dateityp: 7z probots_682.7z (237,3 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz