Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   [Artikel] Simulierte Evolution (https://www.delphipraxis.net/73501-%5Bartikel%5D-simulierte-evolution.html)

Luckie 19. Jul 2006 00:42


[Artikel] Simulierte Evolution
 
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

stoxx 19. Jul 2006 00:53

Re: [Artikel] Simulierte Evolution
 
das ist ja ein äußerst interessanter Artikel !
das würde ich gern mal sehen, das Programm, weil vorher fällt es mir schwer das zu glauben.

Genetische Algorithmen verfahren ja auf Gleiche Weise, nur dass sie den Quelltext nicht selber zusammenwürfeln.
Das find ich schon erstaunlich.
Hab mir schon oft Gedanken drüber gemacht, wie die Zukunft des programmierens aussehen könnte, dann so mühsam wie es im Moment ist, wird es (hoffentlich) nicht bleiben.

Luckie 19. Jul 2006 00:54

Re: [Artikel] Simulierte Evolution
 
Zitat:

Zitat von stoxx
das ist ja ein äußerst interessanter Artikel !
das würde ich gern mal sehen, das Programm, weil vorher fällt es mir schwer das zu glauben.

Dann schreib mal an den Autor. Und während du auf eine Antwort wartest, kannst du ja schon mal das nötige Geld sparen, um Rechenzeit auf einem Parallelcomputer zu mieten. ;)

stoxx 19. Jul 2006 00:59

Re: [Artikel] Simulierte Evolution
 
Zitat:

kannst du ja schon mal das nötige Geld sparen, um Rechenzeit auf einem Parallelcomputer zu mieten.
Genetische Algorithmen setzt man ja eigentlich garade wegen ihrer Effizienz im Vergleich zu Brute Force ein.
Könnte also auch mit einem PC gehen ;-)

Luckie 19. Jul 2006 01:03

Re: [Artikel] Simulierte Evolution
 
Das Buch ist von 1999 und da waren wohl nur Parallelcomputer dazu in der Lage in akzeptabler Zeit brauchbare Ergebnisse zu liefern.

stoxx 19. Jul 2006 01:09

Re: [Artikel] Simulierte Evolution
 
wahrscheinlich wird bei dieser Art der Programmierung immer die Unsicherheit bleiben ob das Ergebnis nun wirklich richtig ist.
Genau wie beim Menschen, der nicht fehlerfrei sein wird, kann wahrscheinlich so ein Programm nie exakte Ergebnisse liefern.
Aber das sind nur vermutungen, weil, hab ja nix gesehen von dem Programm bisher ;-)

Luckie 19. Jul 2006 01:12

Re: [Artikel] Simulierte Evolution
 
Nein, der Autor hat mathematisch bewiesen, dass die erzeugten Programme korrekt arbeiten. Frag ich aber nicht wie man so etwas mathematisch beweisen kann.

stoxx 19. Jul 2006 01:17

Re: [Artikel] Simulierte Evolution
 
hmm .. interessant .... manchmal wäre ich gern ein Jahrhunder später geboren, um das alles noch miterleben zu können ;-)

GimbaR 19. Jul 2006 01:48

Re: [Artikel] Simulierte Evolution
 
Moin,

ein sehr guter Artikel, passt wie ich finde schon fast in die philosophische Kategorie "informatische Revolution", auch wenn es hier speziell um die Evolution geht :)

Axo, ich glaub da hat sich nen kleiner Fehler eingeschlichen. In der ersten Zeile des Absatz "Das Ergebnis" steht im zweiten Satz:
Zitat:

Er nur noch als zusätzliches Eignungskriterium
heißen müsste es doch aber
Zitat:

Er hat nur noch als zusätzliches Eignungskriterium
so far

GimbaR

mbamler 19. Jul 2006 06:46

Re: [Artikel] Simulierte Evolution
 
Zitat:

Zitat von Luckie
Nein, der Autor hat mathematisch bewiesen, dass die erzeugten Programme korrekt arbeiten. Frag ich aber nicht wie man so etwas mathematisch beweisen kann.


Leider kann man genau das NICHT: Beweisen, dass ein Programm korrekt arbeitet (nicht mal theoretisch)

(Man kann Plausibilitätsprüfungen machen und gegebenenfalls behaupten: Sehr wahrscheinlich funktioniert das Programm - aber mehr leider nicht)

siehe Alan M. Turing

Alan M. Turings "Halteproblem"

Gruß
Matthias

negaH 19. Jul 2006 11:26

Re: [Artikel] Simulierte Evolution
 
Sorry aber da muß ich widersprechen.

Man kann sehr wohl ein Program so konstruieren das man math. beweisen kann es es formal immer korrekt arbeiten wird. ABER! Laut Turing kann man eben kein zweites Program schreiben das nun quasi automatisch dieses erste Program testet und somit zu jeder möglichen Eingabe in dieses Program beweisen kann das es korrekt arbeitet.
Dh. per Definition kan man ein Program schreiben so das man es auch beweisen kann das es korrekt funktionieren muß. Aber man kann kein Program schreiben das ein anderes Program als math. korrekt beweisen kann.
Das ist meiner Meinung nach ein großer Unterschied und darf nicht in einen Topf geschmissen werden.

Delphi-Quellcode:
Genetische Algorithmen verfahren ja auf Gleiche Weise, nur dass sie den Quelltext nicht selber zusammenwürfeln.
Das find ich schon erstaunlich.
Doch, genetische Algorithmen beruhen ja gerade darauf das sie mit Zufall=Mutationen ein Program "zusammenwürfeln". Das ist ja gerade das Faszinierende an der Evolution, eine rießige Kette von immer kleinen und zufälligen Veränderungen führt durch eine Selektionsfunktion zu einem lebenigen,lebensfähigem System. Grundsätzlich gesprochen ist das für Menschen schwer greifbare der Zusammenhang von Zufall bei der Entstehung und denoch absolut Logischem im finalen System. Wenn man den Menschen unter die Lupe nimmt so stellt man fest das alle Vorgänge in unserem Organismus absolut logisch ineinander greifen, aber wir wissen auch das all das durch zufällige Mutationen erzeugt wurde. Das entscheidende an diesem Prozess ist die Selektionsfunktion, quasi der Überlebenskampf durch Anpassung an unsere Umwelt. Dieser Prozess ist nicht zufällig !

Ein vergleichbares Beispiel wäre:

Wir füllen einen rießige Napf mit vielen M&M's. Den mischen wir kräftig und erzeugen so eine Menge von zufällig verteilten farbigen Kugeln. Das wäre unser Zufall.
Nun nehmen wir aber immer nur rot M&Ms raus, wie selektieren ganz bewusst, und legen diese auf einen Haufen.
Fertig ist ein wohl geordnerter und nach der Eigenschaft Farbe sortiertes System.
Wohin sich also die Evolution entwickelt entscheidet die Selektierungsfunktion und diese ist nicht zufällig.


Gruß Hagen

Luckie 19. Jul 2006 11:48

Re: [Artikel] Simulierte Evolution
 
@stoxx: Das was du als genetische Algorithmen bezeichnest, ist wohl in meinem Artikel das, wa sichmit sexueller Reproduktion bezeichne.

3_of_8 19. Jul 2006 11:58

Re: [Artikel] Simulierte Evolution
 
Das ist wirklich unglaublich. Ich würde das ganze fast für einen Aprilscherz halten, aber da nicht April ist, finde ich das wirklich erstaunlich... Der Evolutionsalgorithmus würde mich sehr interessieren.

Tubos 19. Jul 2006 12:09

Re: [Artikel] Simulierte Evolution
 
Sehr interessant.

Zitat:

das interessante ist die Tatsache, dass [die resultierenden Algorithmen] unverständlich sind. Es konnte in diesem Fall einfach nicht nachvollzogen werden wie sie letztendlich funktionieren. Als Erklärung gab es nur die Befehlsfolge selber. Und genau dies hat mich eben Regel recht fasziniert.
[..]
Nun es könnte bedeuten, dass wir die Funktionsweise unseres Gehirns nie richtig verstehen werden, wenn die Evolution, simuliert oder nicht, offensichtlich in der Lage ist, etwas hervorzubringen, was sich einfach nicht begreifen lässt.
Das glaube ich nicht. Aber ich habe ja auch nicht das Buch gelesen oder das Programm gesehen.

Während dem Mittagessen ist mir gerade eine Variante eines solchen Programmes eingefallen, die wohl etwas anschaulicher wäre.
Man stelle sich ein Programm vor mit einer 2-dimensionale Fläche, auf der verschiedene Lebewesen herumlaufen. Die können sich gegenseitig auffressen, es könnte auch simulierte Vegetation darin geben.
Solche Programme gibt es bereits, zum Beispiel .NET Terrarium. Aber bei all diesen Programmen (die ich gesehen habe), wird der Code von Menschen geschrieben.
Man könnte jetzt einen einfachen Interpreter schreiben mit grundlegenden Anweisungen: Vorwärts gehen, drehen, andere Lebewesen attackieren, if, else, verschiedene Bedingungen, etc... Die Anweisungen müssen dabei so gewählt werden, dass eine ausreichende Entscheidungsvielfalt möglich wird.
Dann erzeugt man, wie in Luckies Artikel beschrieben, eine bestimmte Anzahl von völlig zufälligen Programmen, die sich dann fortpflanzen können.

Vermutlich gibt es sowas schon, vielleicht kann mir jemand einen Hinweis geben?
Interessanter wäre es trotzdem, das Ganze selbst zu programmieren.

Mirilin 19. Jul 2006 12:59

Re: [Artikel] Simulierte Evolution
 
Zitat:

@stoxx: Das was du als genetische Algorithmen bezeichnest, ist wohl in meinem Artikel das, wa sichmit sexueller Reproduktion bezeichne.
So wie ich mich erinnere ist der unterschied zwischen GA und GP der, dass man mit GAs nur
die "Parameter" einer "Lösung" sucht, bei der GP evoluiert man aber einen Algorithmus/Programm.
GP ist also viel freier als GA.
Crossover spielt bei beiden die/eine wichtige Rolle.

Aber ist auch schon ein Weilchen her, kann mich gut irren^^


mfg Tobias

negaH 19. Jul 2006 13:02

Re: [Artikel] Simulierte Evolution
 
Zitat:

Man könnte jetzt einen einfachen Interpreter schreiben mit grundlegenden Anweisungen: Vorwärts gehen, drehen, andere Lebewesen attackieren, if, else, verschiedene Bedingungen, etc... Die Anweisungen müssen dabei so gewählt werden, dass eine ausreichende Entscheidungsvielfalt möglich wird.
Dann erzeugt man, wie in Luckies Artikel beschrieben, eine bestimmte Anzahl von völlig zufälligen Programmen, die sich dann fortpflanzen können.
Genauso arbeiten Genetische Algorithmen.

Stell dir mal vor das deine Anweisungen -> Vorwärts, Rückwärts usw. die Gene = DNA eines Wesens darstellen. Diese Gene werden in der Anfangspopulation komplett per Zufall erzeugt.

Nun lässt man in einer Selektierungsfunktion quasi diese Gene eines Individums als interpretierbares Program ablaufen, quasi eine Arbeitsanweisung wie sich das Individuum bewegen soll. Die Selektierungsfunktion bewertet nun an Hand der erreichten örtlichen Position die Qualität dieses Individuums, zb. 0 bis 100%. Sollte 100% erreicht worden sein so endet im Allgmeinen die komplette Evolution, denn wir haben ja eine maximal perfekte Lösung gefunden. Das ist aber real sehr wenig der Fall, man findet als viel öfters Lösungen die optimial aber nicht maximal gut sind.

Gut nachdem diese Selektierungsfunktion ALLE Individuen eienr Population auf diese Art bewertet hat beginnt man mit der Reproduktion, sprich Fortpflanzung. Dafür gibt es mehrer Ansätze, monogam/asexuell -> Zellteilungen und Klonen, oder sexuell dh. die Gene der neuen Population = Kinder setzen sich per Rekombinationen aller beteiligten Eltern zusammen. Dabei kann es zweigeschlechtlich, multigewschlechtlich usw. zugehen.

Wichtig ist nur eines! Die Häufigkeit in wieweit sich ein Individuum reproduzieren darf ist abhängig von deren Fitness. Die Fitness ist das was als Bewertung durch die Selektierungsfunktion ermittelt wurde. Das bedeutet das ein überaus gutes Individuum sich wesentlich stärker reproduzierenn darf als ein weniger gutes, es produziert also viel mehr Nachkommen und wird somit seine Gene viel stärker in der neuen Population verteilen. Ergo: die neue Population von Individuuen -> Kinder, wird ansich schon besser das Ziel ereichen.

Nach diesem Schritt der Fortpflanzung wird noch ein "Störfaktor" eingebaut, die Mutationen. Dabei werden zu einem geringen Prozentsatz von 1-3 Prozent die Gene der neuen Kinder per Zufall verändert. Dies schafft die Grundlage, als zufällige Varianz, das sich Neues und damit bis dahin Unbekanntes entwickeln kann.

Nach diesen Schritten stirbt die Elternpopulation aus und die neue Kinderpopulation tritt an ihre Stelle. Und der ganze Vorgang begint von neuem.

Die genetischen Algos. sind also defakto sehr effiziente Suchalgorithmen die im Besoinderen enorm rießige, ja unendlich große Suchräume effizient absuchen können und im Worstcase meistens ein Optima-> optimales Resultat erzielen aber nur unter seltesten Umständen das absolut beste Maximum der Lösung.

Neben den Neuronalen Netzen waren die genetischen Algortihmen und die Evolutionsstrategien eines meiner liebsten Hobbies ;)

Gruß Hagen

stoxx 19. Jul 2006 13:08

Re: [Artikel] Simulierte Evolution
 
Zitat:

Zitat von negaH

Delphi-Quellcode:
Genetische Algorithmen verfahren ja auf Gleiche Weise, nur dass sie den Quelltext nicht selber zusammenwürfeln.
Das find ich schon erstaunlich.
Doch, genetische Algorithmen beruhen ja gerade darauf das sie mit Zufall=Mutationen ein Program "zusammenwürfeln".

damit meinte ich, dass Genetische Algorithmen nur Parameter verändern, aber sich selbst nicht im Quelltext verändern.
Und damit also "normale" Programme darstellen, wie man sie kennt.

negaH 19. Jul 2006 13:10

Re: [Artikel] Simulierte Evolution
 
Zitat:

So wie ich mich erinnere ist der unterschied zwischen GA und GP der, dass man mit GAs nur
die "Parameter" einer "Lösung" sucht, bei der GP evoluiert man aber einen Algorithmus/Programm.
GP ist also viel freier als GA.
Das sehe ich anders. Hierarisch betrachtet sind GPs eine Anwendung der GA's. GPs sind also nur eine spezielle Anwendungsform der Grundregeln der GA.

Die Frage ist nämlich was ist ein Program ? Es ist eine Sequenz von sequientiellen Anweisungen. Nun die Gene auf einer DNA sind auch nur ein Sequenz von Anweisungen und dieses Konzept ist in der GA verankert.

Ob man nun in den GAs und dessen Genen Programmanweisungen codiert oder Formeloperatoren zur Erzeugung von math. Formeln oder nur Parameter eines Neuronalen Netzwerkes ist egal.

Aber im allgemeinen sind es die Evolutuionsstrategieen die sich auf reine Parameter einer Optimierung beziehen. Die Evolutionsstrategien wurden in Deutschland entwickelt. Sie zielten zb. auf die konkrete Optimierung von Kränen, Düsen usw. ab und arbeiteten daher mit Floatzahlen als "Gene". Sie konzentrierten sich in keinster Weise um die Frage "wie werden Informationen kodiert".

Die Genetischen Algorithmen wiederum sind eine amerikanische Erfindung. Sie hatten kein reales Ziel als Fokus sondern wurden erstmal nur entwicklelt um zu lernen wie die Natur Informationen in den Genen kodiert und wie sich das auswirkt. Es ging also eher um theoretische Aspekte.

Gruß Hagen

Mirilin 19. Jul 2006 13:20

Re: [Artikel] Simulierte Evolution
 
Ich seh den unterschied darin, dass man wenn man zum Beispiel das Maximum einer Funktion sucht, dann sucht man mit dem GA die Koordianten, mit der GP aber erstellt man ein Programm dass das Maximum einer Funktion bestimmt. Also das eine erstellt Punkte im Raum, das andere Lösungsmethoden.
Die Lösung des GAs ist dann problemspezifisch, die Lösung des GPs idealerweise nicht.

mfg Tobias

negaH 19. Jul 2006 13:20

Re: [Artikel] Simulierte Evolution
 
Zitat:

damit meinte ich, dass Genetische Algorithmen nur Parameter verändern, aber sich selbst nicht im Quelltext verändern.
Und damit also "normale" Programme darstellen, wie man sie kennt.
Ja ich weis, und diese Meinung erachte ich eben als falsch.
Was und wie in den Genen welche Informationen kodiert sind ist irrelevant für die Theorie der GAs. Es ist eine reine Definitionsfrage die nur von der jeweiligen Interpreation und Zielsetzung abhängig sind. Es könnten eben auch Programme->Sourcecodes sein.

GAs verändern eben keine Parameter, das ist falsch bzw. viel zu einseitig betrachtet, sie verändern kodierte Informationen, sie arbeiten direkt auf der Kodierung, den Genen, Allelen, Chromosomen, DNA Strängen. Die Werkzeuge für diese Bearbeitungen sind die Selektion=Bewertungsfunktion der Fitness, die Vererbung durch Rekombination der Kodierung, Crossover etc.pp. und die zufällige Varianz über die Mutationen.

Bei den GAs ist es also das Schwierigste die Zielsetzungen die man verfolgt so in eine geeignete Kodierung der Gene usw. zu bekommen das sich daraus auch "lebensfähige" Individuuen bilden können, dh. das dieser Optimierungsalgo. als GA auch wirklich unserem Ziel annähern kann.

Die ES -> Evolutionsstrategien, umgehen eindeutig dieses Problem, weil es für die konkreten Optimierungen eigentlich auch irrelevant ist. Und als Endeffekt ergab sich auch das gerade die ES mit konkreten Erfolgen aufwarten konnte, eben stabilere Krane, bessere Unterwasser-Luft-Düsen mit bis dato ungeahnten Formen usw. Die GAs wiederum brachten zuerst nur Erfolge in der Fragestellung wie die Natur Informationen kodiert, übrigens sehr überraschende Antworten. Zb. die Frage: wieviel Prozent der Gene werden durchsachnittlich durch Mutationen verändert ? DIe Antwort, ca. 2.3 Prozent und das frappieende ? die Natur mutiert nachweislich ca. 2.3 Prozent der Gene. Man fand also unabhängig voneinander heraus, also die Biologen und die Informatiker, das sich dieser Prozentsatz als am besten erwies. (so schlagt mich bitte nicht wenn es nicht 2.3 Prozent sind, könnte mich da leicht irren :) )

Gruß Hagen

negaH 19. Jul 2006 13:23

Re: [Artikel] Simulierte Evolution
 
Zitat:

Ich seh den unterschied darin, dass man wenn man zum Beispiel das Maximum einer Funktion sucht, dann sucht man mit dem GA die Koordianten, mit der GP aber erstellt man ein Programm dass das Maximum einer Funktion bestimmt. Also das eine erstellt Punkte im Raum, das andere Lösungsmethoden.
Die Lösung des GAs ist dann problemspezifisch, die Lösung des GPs idealerweise nicht.

Gut, und wie erstellt man GPs ?
Meine Antwort ist mit Hilfe von GAs bzw. mit der Theorien der GAs. Ergo: GPs sind nur eine Anwednungsmöglichkeit für Genetische Algorithmen (häng dich mal nicht so sehr an dem Wort Algorithmus auf, der bezieht sich auf die Theorie WIE man mit Kodierungen als Gene arbeiten muß).


Gruß Hagen

stoxx 19. Jul 2006 13:27

Re: [Artikel] Simulierte Evolution
 
wo ist (siehst) Du jetzt nochmal den Hauptunterschied zwischen Evolutionsstrategien und GA´s ?
Das hab ich irgendwie noch nicht ganz verstanden.
Danke !

negaH 19. Jul 2006 13:46

Re: [Artikel] Simulierte Evolution
 
Nun in der Historie ;)

Die ES sind im Grunde einfache Arrays of Float. Jeder dieser Flaot beschreibt einen Parameter in einer Formel, zb. eben die Stärke, Anzahl, Winkel von Stahlträgern in einem Kran. Man verändert benutzt nunr in der Selektierungsfunktion diese Parameter um rechnerisch einen Kran zu simulieren. Als Resultat dessen kommt eine Fintness raus, also wie verhält sich unser Kran unter Windlast, bei wieviel Last bricht er usw. Danach wird eine neue Population von Kranen erzeugt. Eben mit Vererbung, indem man die besten Krane untereinander deren Parameter in den Arrays[] rekombiniert -> Crossover und daraus dann neu Kinder erzeugt. Als letztes werden nun per Zufall einige Floatzahlen in den Kinderarrays leicht verändert, so ca. 2.3 Prozent. Und dann beginnt wieder alles von vorne.
Da man die nächste Generation zum großen Teil aus den vorher besten Eltern erzeugt hatte heist dies auch das diese Evolution sich immer besser an die Selektierungsfunktion anpassen wird. Und diese Selektierungsfunktion ist das was wir als Zielsetzung erreichen wollen, WIR spielen Gott und entscheiden wer sich wohin und wie entwickeln soll.

Die GAs konzentieren sich auf die Fragestellung WIE man Informationen am besten kodiert. Als Vorbild diente die Natur mit ihren Genen. Dabei stellte man fest das es auf unserer DNA Genübergreifend bestimmte Muster gibt, also kodierte Abschnitte von Genen. Man erkannt eine Hirarchie in der Wirkungsweise dieser Genstrukturen. Gene bilden Allele (Funktionsgruppen) die sicherstellen das eine Abfolge von Genen auch einen Sinn ergeben. Solche Allele ergeben dann Chomosomen die dann im besoinderen sicherstellen sollen das bei einem Crossover (geschlechtliche Vererbung) nicht die Gene, Allele zerstört werden und so ein lebensunfähiges Individuum ergeben. Die Natur rekombiniert also Chromosomen beim Sex. Desweiten betrachtet man den Einfluß der Mutation. Zu wenig Mutation lässt die Evolution zu langsam vorranschreiten, zo viel Mutation zerstörte die Evolution. Die Mutation arbeitet immer auf allen Genen, und nicht wie zb. die Verrebungen auf Chmosomen/Allelen als in sich funktionale Genketten.
Die nächst höhere Stufe der Betrachtungen in der GA sind die Populationen. Man erkannte und experimentierte mit ganzen Populationen, einige isoliert auf Inseln, andere mit regem Genaustasuch zu anderen Populationen.

Man erkennt also schon das sich die GAs viel stärker auf die Fragestellung wie man Informationen kodieren sollte, wie man über diese Kodierungen eine Evolution in Gang setzt, und wie sich Populationen entwickeln sollten, auseinander setzt. Man versucht also die Natur, die Evolution in der Natur, im Computer zu simulieren und daraus Erkenntnisse zu gewinnen.

Klar gibt es auch konkrete Anwendungsgebiete der GAs. Zb. das Travelsman/Salesman Problem (Problem des Handlungsreisenden). Allerdings wenn man es genauer betrachtet so sind die ES auf diesem Gebiet den GAs überlegen. Dh. viele der Problemlösungen der GAs lassen sich über die ES viel leichter und logischer lösen.

Mittlerweile sind aber die ES nur eine "Unterform" der GAs (laut Meinung der führenden Forscher in diesem Gebiet, und das sind die Amis). ES sind im allgemeinen GAs ohne spezielle Kodierungen.

Historisch gesehen sind es aber zwei komplette andere Ansätze zum gleichen Problem der Evolution. An beiden lassen sich die Gesetzmäßigkeiten demonstrieren, der Evolution etc.pp. Nur das Kodierungsproblem der Gene in der Natur ist mit den GAs simulierbar,m aber das ist garnicht die Aufgabe der ES. Ingeniuerstechnisch betrachtet sind die ES effektiver. Informationstheoretisch betrachtet sind die GAs ertragsreicher.

Gruß Hagen

Tubos 20. Jul 2006 23:48

Re: [Artikel] Simulierte Evolution
 
Ich habe noch eine Frage dazu an negaH, oder an jemand anderen, der sich damit auskennt.

Wie funktioniert das Erstellen einer neuen Generation beim Genetischen Programmieren?
Die erfolgreichen Algorithmen werden oft kopiert, die erfolglosen gar nicht. Nach dem Kopieren mutieren einige zufällige Individuen. Soweit hab ichs kapiert.
Dann gibt es noch die Variante, dass sich zwei Individuen zu einem neuen zusammenkopieren. Aber wird dabei nicht meistens der zuvor erfolgreiche Algorithmus zerstört? Ich kann ja nicht beurteilen, ob ein bestimmter Teil davon gut ist, weil ich nur einen Fitnesswert für das gesamte Individuum habe.
Kann diese sexuelle Fortpflanzung alleiniger Bestandteil eines GP-Systems sein oder ist das eine Form, die man per Zufall mit der monogamen Fortpflanzung mischen sollte?

mfg. Tubos

Luckie 20. Jul 2006 23:51

Re: [Artikel] Simulierte Evolution
 
Ich habe gerade ein Mail zu diesem Artikel bekommen. In der wurde ich auf diese Homepage aufmersam gemacht: http://www.cambrianlabs.com/Mattias/ Man sollte sich mal da das Schlangen Programm angucken. Dort wird demonstriert, wie die Schlage lernt sich fortzubewegen. (OK, eigentlich ist es wohl eine Raupe. ;) )

jus 21. Jul 2006 00:28

Re: [Artikel] Simulierte Evolution
 
Um Hagen's Aussagen wissenschaftlich zu untermauern gebe ich hier die Literaturangaben zu den Original-Artikeln in den Bereichen. Der Grund ist, dass ich gerade an einer Arbeit schreibe, die GA einsetzt, und habe somit auch die Literaturquellen für Interessierte gleich zur Hand.

Evolutionsstrategien (ES) begründet durch
Rechenberg I., Evolutionsstrategie, Stuttgart: Friedrich Frommann-Verlag, 1973

Evolutionäres Programmieren (EP) begründet durch
Fogel L. J., Owens A. J., Walsch M. J., Artificial Intelligence through Simulated Evolution, New York: John Wiley, 1966

Genetische Algorithmen (GA) begründet durch
Holland J., Adaption in Natural and Artificial Systems: An Introductory Analysis with Application to Biology, Control and Artificial Systems, Ann Arbor: The University of Michigan Press, 1975

Genetische Programmierung (GP) begründet durch
Koza J. R., Genetic Programming: On the Programming of Computers by Means of Natural Selection, Cambridge, MA.: The MIT Press, 1992

Zitat:

Zitat von negaH
...Zb. die Frage: wieviel Prozent der Gene werden durchsachnittlich durch Mutationen verändert ? DIe Antwort, ca. 2.3 Prozent und das frappieende ? die Natur mutiert nachweislich ca. 2.3 Prozent der Gene. Man fand also unabhängig voneinander heraus, also die Biologen und die Informatiker, das sich dieser Prozentsatz als am besten erwies. (so schlagt mich bitte nicht wenn es nicht 2.3 Prozent sind,...

@negaH
kannst du mir den Artikel(n) mit den ~2,3 Prozent nennnen, oder irgendwie zukommen lassen, das würde mich brennend interessieren.

:)

Grüsse,
jus

negaH 21. Jul 2006 01:34

Re: [Artikel] Simulierte Evolution
 
Zitat:

Ich habe noch eine Frage dazu an negaH, oder an jemand anderen, der sich damit auskennt.

Wie funktioniert das Erstellen einer neuen Generation beim Generischen Programmieren?
Die erfolgreichen Algorithmen werden oft kopiert, die erfolglosen gar nicht. Nach dem Kopieren mutieren einige zufällige Individuen. Soweit hab ichs kapiert.
Dann gibt es noch die Variante, dass sich zwei Individuen zu einem neuen zusammenkopieren. Aber wird dabei nicht meistens der zuvor erfolgreiche Algorithmus zerstört? Ich kann ja nicht beurteilen, ob ein bestimmter Teil davon gut ist, weil ich nur einen Fitnesswert für das gesamte Individuum habe.
Kann diese sexuelle Fortpflanzung alleiniger Bestandteil eines GP-Systems sein oder ist das eine Form, die man per Zufall mit der monogamen Fortpflanzung mischen sollte?

mfg. Tubos

Uff viele Fragen. Vorweg ich kenne mich mit den EP und GP (siehe vorherigen Thread) nicht konkret aus deshalb versuche ich mal übertragen auf die GAs zu antworten.

Deine Annahme das durch das Zerteilen der Gene sehr oft Kinder entstehen die nicht lebensfähig sind ist absolut berechtigt. Das ist nämlich ein Grundproblem und auch eine Fragestellung in den GAs -> also wie müssen die Genketten organisiert (strukturiert) sein, das eben bei der Vererbung möglichst keine Kinder entstehen die nicht lebensfähig sind. Lebensfähig heist also in unserem Sinne auch einen Sinn ergeben und unsere gesetzten Optimeirungsziele erreichen können. In deinem Sinne ist es eben die Frage wie man sicherstellt das ein so erzeugtes "Program" auch wirklich syntaktisch korrekt ist.

Und diese Syntax ist es auch die man zu logisch zerlegen muß das man sie dann in den Gene umkodieren kann. Ich sprach oben schon die Allele an. In den GAs steht diese Wort für eine Funktionsgruppe, eine ganze Kette von Genen die man bei der Vererbung/Rekombination/Crossover eben nicht in der Mitte zerlegen sollte. In der Biologie sind Allele ein bischen anders definiert. Dort stellen sie zwar auch Funktionsgruppen dar (zb. die Augenfarbe oder Farbe der Blüten oder Blutgruppenmerkmale) aber sie sind auch quasi Redundanz-Schnittstellen. Dh. es ist oft so das es mehrere Allele in der DNA gibt die alle zb. die Augenfarbe bestimmen aber meistens ist nur eines dieser Allele auch dominant und die meisten sind reszessiv. Der wichtige und übertragebare Zusammenhang zwischen Biologie und Informatik ist aber das Allele immer Funktionsgruppen sind und meistens aus ganzen Ketten/Sequenzen von Genen bestehen. In der Biologie sind solche "Allele" Abschnitte im DNA Strang die durch besondere Sart/Stop Gene markiert sind. Beim Reproduktionsprozess über die RNA kann über diese Markergene auch quasi eine "Prüfsumme" erzeugt werden und sogar beschädigte Gene können repariert werden.
In der Informatik sind Allele nur eine Definitionsfrage und sie führen dazu das man in der Kodierung der Gene die Datenstrukturen entsprechend anpasst.

Mal ein Beispiel: Wir wollen einen GA entwickeln der in der Lage ist zu einer Menge von Zahlen -> X und einer Menge von Zahlen Y eine Formel zu finden die nach Möglichkeit sehr exakt Y = f(X) berechnen kann. Unser Individuuen in der Population sind also nichts anderes als mathem. Formeln. Eine solche Fornmal hat eine Syntax damit sich auch berechenbar ist. Es gibt also Operatoren wie +,-,*,/,Sqrt(),Power(),Exp() es gibt Konstanten wie +1, 0.1234, PI usw. und es gibt Variablen.

Konstanten und Variablen sind unary, (hm welches Wort gibts dafür im Deutschen?) sie sind also nur Eins.
Operatoren sind immer binary oder größer, sie benötigen also immer mindestens zwei formale Seiten.

Das ist die Syntax und es ist nun sehr wichtig das wir unsere Gene von Anfang an so kodieren das immer gültige Formeln rauskommen. Also sowas wie 1+2------3*SqrSqr/0 darf NICHT in den Gene vorkommen. Wir erledigen dies indem wir unsere Gene entsrepchend konstruieren, aus den Genen werden Allele da sie nun zusammenhängende Funktionsgruppen darstellen. Man darf sie bei der Rekombination also nicht mehr auseinander reisen.

Ein solches Allel könnte so aussehen:

1. Gen -> Typus (binary Operator wie +,- oder trinary Operator wie Power(), oder Konstante, oder Variable)
2. Gen -> 1. Data (bei Konstanten/Variablen usw.)
3. Gen -> 2. Data (bei trinary Operator)

Es besteht also aus mehreren Gene, ist variabel in der Genanzahl und ist eine funktiuonale/informationstheoretische Einheit unserer angestrebten Syntax.

Wenn wir also Mutieren dann arbeiten wir immer auf allen Genen. Aus einem Allel das vorher noch Operator + darstellte könnte durch Mutation des 1. Genes also auf einmal ein Konstante entstehen.

Wenn wir Rekombinieren, egal wie dann machen wir dies aber immer auf Allele Ebene, niemals auf die einzelnen Gene betrachtet.

Somit entstehen quasi nur per Definition aus der "Syntax" der Gene immer auch vollwertige und Funkionsfähige Formeln.

Nun können wir aber eine Division durch Null NICHT über diese Regel ausschließen, das wäre nämlich evolutionär gesehen falsch, da die KEIN problem der Syntax -> der Sprache ist. Solche "Fehl-Individuuen" filtern wir raus indem wir sie in der Bewertungsfunktion bei der Selektion einfach als schlecht bewerten. Ein Formel-Individuum das eine Divison durch Null rechnet vermehrt sich also fats garnicht und somit vererbet es auch nicht seine fehlerhaften Gene in die nächste Population.

So, dieses einfache Beispiel kannst du nun auf die Syntax einer Programmiersprache weiterdenken und kämst bei einigen Grundregeln der EP/GP an.

Eine weitere und oft benutzte Möglichkeit ist der Einfluß im Crossover/Rekombination zu beschränken. Ziel ist es die Wahrscheinlichkeit lebensunfähige Individuuen zu erzeugen auf eine Weise zu reduzieren indem man eben weniger "zerschneidet". Zwei Individuuen mit sehr langen Genketten werden also beim Crossover nur in zwei Genkettenteilen zerlegt, mehr nicht. Man bestimt nur per Zufall WO man diese DNA eines Individuums zerschneidet. Nun erzeugt man zwei Kinder indem man einfach über kreuz diese 4 Teil DNA Stränge wieder zusammensetzt. Trennt man eine DNA->Genkette immer an Allel-Grenze so wird zumindestens nicht die Syntax zerstört. Die Wahscheinlichkeit das diese neuen Kinder immer noch funktionieren ist direkt umgekehrt proportional zur Anzahl der Individuuen innerhalb einer Population. Je größer die Population je geringer die Wahscheinlichkeit das diese Kinder fehlerhaft sind. In der nächsten Selektion erkennt man ja das solche fehlerhaften Kinder, nun potentielle Eltern, nicht überleben dürfen und lässt sie sich nicht vermehren, sie sterben quasi aus.

Denoch kann es bei bestimmten Problemstellung nicht vermieden werden das viele nicht lebensfähige Kinder erzeugt werden. Man versucht das über eine Co-Evolution in Co-Populationen zu lösen. Quasi macht man während der Evolution einer Population immer wieder Backup-Populationen. Stagniert nun die aktuelle Evolution der Population dann injeziert man Genmaterial->Individuuen dieser Backup-Population hinein. Das ist also so als ob man aus der Zeit von Da Vinci par Menschen auftaut und sie in unserer Zeit sich vermehren lässt.

Oder aber man benutzt die Co-Evolution. Dabei arbeitet man qausi mit mehreren Evolutionen in parallel. Der Unterchied zischen diesen ist das man andere Parameter für die Selektierungsfunktionen benutzt. Das Stichwort hier sind die Eliten. Es gibt also eine Eliten-Population die mit enorm strengen Selektierungsfunktionen arbeiten. Diese entwickeln sich im günstigen Falle rapide haben aber im schlechtesten Falle die Angewohnheit in einem Schlage komplett auszusterben. Man verhindert dies nun indem man in einer Cor-Evolution keine Eliten züchtet, die Selektierungsfunktion also auf Robustheit einstellt. Im Falle einer Stagnation einer Eliten-Evolution injeziert man über einen Gentransfer->Individuenaustasuch wiederum neue Erbmasse in diese Populationen.

Du siehst das es mehrere Ansatzpunkte gibt:

1.) die Kodierung der Gene in Funktionsgruppen wie Allele und Chromosomen und das Berücksichtigen dieser Kodierungsmerkmale bei der Rekombination/Vererbung
2.) die Selektierungsfunktion
3.) die Evolution über Co-Populationen und Eliten

Soweit das was ich von damals noch über GAs gelernt habe (immerhin schon wieder 15 Jahre her ;) )

Gruß Hagen

negaH 21. Jul 2006 01:56

Re: [Artikel] Simulierte Evolution
 
Achso noch was ganz ganz Wichtiges!

Die Redundanz in den Genen:

Oben sprach ich als Beispiel eine Formel-GA an. Wir hatten

1. Gen -> Typus (binary Operator wie +,- oder trinary Operator wie Power(), oder Konstante, oder Variable)
2. Gen -> 1. Data (bei Konstanten/Variablen usw.)
3. Gen -> 2. Data (bei trinary Operator)

definiert. Nun die Redundanz besteht darin das zb. der Typus erweitert wird durch "inaktiv". D.h. dieses komplette Allel ist garnicht aktiv und kein Bestandteil der sich ergebenden Formel. Aber! es ist als Genkette im Individuuem und wird auch weiter vererbt, das ist wichtig. Es ist also quasi Müll-DNA oder eben redundant.

Das gleiche gilt für die Gene 2. und 3. in unserem Allel, nämlich immer dann wenn zb. nur ein unary Operator im Allel kodiert wurde und somit das Gen 3. garnicht benötigt wird für eine sinnvolle Formel. Wird vererben und auch mutieren denoch diese Gene immer mit.

Denn in einer spärteren Population in einem späten Nachfahre könnte diese Allel durch Mutation wieder aktiviert werden und komplett neue und unbekannte Formeln erzeugen. Diese damasl noch aktiven Allele könnten nämlich ein Bestandteil eines Individuums gewesen sein das sehr sehr potent, also sehr gut gewesen wäre aber auf Grund anderer Gene/Allele nur durchschnittlich gut gewesen ist. Durch die Mutation auf inaktiv geht diese Erbmasse nicht verloren und führt dann in der späteren Evolution nach Aktivierung im Zusammenhang mit nun anderen Genen in einem Individuum dazu das dies besonder gut/potent wird. Wir erzeugen somit quasi in unserer Kodierung übr diese Gene ein Gedächtniss der Evolution innerhalb der Erbmasse.

Es ist also wichtig das du nicht versuchst in deinen GAs solche Dinge "weg zu optimieren" weil du es "gut" meinst ;)

Ergo zu den obigen 3 Punkten kommt noch einer hinzu:

1.) die Kodierung der Gene in Funktionsgruppen wie Allele und Chromosomen und das Berücksichtigen dieser Kodierungsmerkmale bei der Rekombination/Vererbung
2.) die Selektierungsfunktion
3.) die Evolution über Co-Populationen und Eliten
4.) Redundanz und inaktive Müll-Gene

Gruß Hagen

Tubos 21. Jul 2006 09:41

Re: [Artikel] Simulierte Evolution
 
Zitat:

In deinem Sinne ist es eben die Frage wie man sicherstellt das ein so erzeugtes "Program" auch wirklich syntaktisch korrekt ist.
Also das habe ich eigentlich nicht gemeint. Ich habe dabei schon angenommen, dass eine Sprache konstruiert wird, bei der Syntaxfehler unmöglich sind ODER dass beim Mutieren darauf geachtet wird, dass das Programm syntaktisch korrekt bleibt.
Mit "Algorithmus zerstören" meinte ich vielmehr, dass der neue evolvierte Algorithmus nicht mehr die Aufgabe erfüllt.
Man nehme zwei Programme, die beide einer Wand folgen können. Dann nimmt man einen Teil des ersten Programms und einen Teil ds zweiten, fügt sie zusammen - und plötzlich kann das Programm überhaupt nichts mehr.
Deine Antwort war aber trotzdem hilfreich, danke!

Zitat:

unary, (hm welches Wort gibts dafür im Deutschen?)
unär!

Zitat:

Konstanten und Variablen sind unary, (hm welches Wort gibts dafür im Deutschen?) sie sind also nur Eins.
Operatoren sind immer binary oder größer, sie benötigen also immer mindestens zwei formale Seiten.
Soweit bin ich auch schon gekommen. Das kann man dann als binären Baum darstellen:
Code:
Baum:
           +
          / \
         a  *
            / \
           b  c
(Quelle: http://www.cs.ucl.ac.uk/research/gen...q/gp2faq2.html)
Man kann das natürlich mit Operatoren und Befehlen erweitern und somit nicht nur bei den GAs, sondern auch beim EP anwenden.


Ich sehe also, es gibt viele Möglichkeiten zur Vermehrung und wenn ich das mal selber machen möchte (ich werde wohl mit diesem Baum-Interpreter anfangen), werde ich ein wenig experimentieren müssen.

Go2EITS 21. Jul 2006 11:04

Re: [Artikel] Simulierte Evolution
 
@Alle
Frage zum Thema, ohne gleich ein neuen Thread eröffnen zu müssen:

Es gab ein Programm, es ist ca. 10 Jahre her, ich sah es in einem Buch (wohl noch älter) für "Künstliche Intelligenz" in dem ein Wissenschaftler/Autor ein Programm geschrieben hat, dass "genetische" Programme erzeugt. Unter anderen durften Programme begrenze Schreib- und Leserechte nutzen, soweit ich weiss, Zugriff auf bestimmte Programmbefehle und hatten begrenzten Ramspeicher für sich zur Verfügung. Die Programme wurden im Laufe der Zeit "intelligenter" und überfluteten letztendlich den Rechner des Wissenschaftlers. - naja, die Zielvorgabe ist für solche Programme meines Erachtens das allererste Kriterium für ein 'genetic programming' und die in einem Pool zur Verfügung gestellten Resourcen, auf die alle Populationen/Programme zugreifen können und und in einem vom Menschen definierten Wertebereich zusätzlich optimieren.

Hat da jemand zu dem Buch noch Informationen darüber? Vielleicht ein Link etc.?

Grüße an die DP!
Go2EITS

negaH 21. Jul 2006 12:00

Re: [Artikel] Simulierte Evolution
 
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

Go2EITS 21. Jul 2006 13:13

Re: [Artikel] Simulierte Evolution
 
@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

Boombuler 21. Jul 2006 14:28

Re: [Artikel] Simulierte Evolution
 
Offtopic:

Zitat:

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...

negaH 21. Jul 2006 14:34

Re: [Artikel] Simulierte Evolution
 
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

Neutral General 21. Jul 2006 15:49

Re: [Artikel] Simulierte Evolution
 
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

negaH 21. Jul 2006 16:20

Re: [Artikel] Simulierte Evolution
 
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

Boombuler 24. Jul 2006 09:54

Re: [Artikel] Simulierte Evolution
 
BTW: Man könnte ja mal n DP internes Tunier für CoreWar anstreben ;)

Neutral General 24. Jul 2006 12:20

Re: [Artikel] Simulierte Evolution
 
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...

Go2EITS 25. Jul 2006 09:02

Re: [Artikel] Simulierte Evolution
 
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 :)

TurboMartin 25. Jul 2006 10:04

Re: [Artikel] Simulierte Evolution
 
Liste der Anhänge anzeigen (Anzahl: 1)
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. :mrgreen:
Ich versuch es dann mal zu übersetzen.

[edit]WinProblem herausgefunden: PRobots unterstütz nur Rechner mit bis 200 MHz[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr.
Seite 1 von 2  1 2      

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