Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
qbay
Anmeldungsdatum: 08.06.2008 Beiträge: 84
|
Verfasst am: 25.06.2009, 11:53 Titel: Evolution auf dem Computer |
|
|
hallo leute
ich hab mal wieder eine frage
ich habe mal in einem magazin gelesen das jemand ein programm geschrieben hat in dem das Darwinsche Prinzip der Evolution simuliert worden ist.
also in dem Programm wurden kleine "Bakterien" erschaffen die sich dann fortpflanzten und ihren code dabei immer etwas veränderten.
so das die Bakterien irgentwann sich aus dem Programm heraus entwickelten und auf dem rechner des Programmiers unsinn trieben.
meine frage nun
wie könnte so ein Programm in Freebasic aussehen??
hat das vielleicht schonmal ener von euch programmiert?
gruss ich freu mich schon auf eure antworten |
|
Nach oben |
|
 |
jensma

Anmeldungsdatum: 16.05.2005 Beiträge: 85 Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!
|
Verfasst am: 25.06.2009, 12:42 Titel: |
|
|
Ein paar Spielerein zur Evolution:
http://members.shaw.ca/omjhooge/VB/Evolve/progevolve.htm
Allerdings keine Bakterien oder soetwas in der Art... ich erinnere mich, dass ich mal einen Screensaver hatte, indem sich Bakterien bekämpft haben. Stärkere konnten dann ihre Merkmale fortpflanzen.
Wiederfinden konnte ich den nicht, ist auch sicherlich schon 'ne Dekade her
Ansonsten, wie es in Freebasic aussehen würde: Jede Menge Types. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 25.06.2009, 13:02 Titel: |
|
|
John Conway's Game of Life !
Mein Spezialgebiet  |
|
Nach oben |
|
 |
jensma

Anmeldungsdatum: 16.05.2005 Beiträge: 85 Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!
|
Verfasst am: 25.06.2009, 13:07 Titel: |
|
|
OneCypher hat Folgendes geschrieben: | John Conway's Game of Life !
Mein Spezialgebiet  |
Daran habe ich auch zunächst gedacht; allerdings hat Conway nichts mit Darwin zu tun...  |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 25.06.2009, 13:31 Titel: |
|
|
Ach wirklich nicht? ... Sterben und überleben die Strukturen nicht? .. klar, sie reproduzieren sich meistens nicht.. aber auch dafür gibts beispiele. Ein klassisches fortpflanzen->anpassen->fortpflanzen->anpassen ... gibts dabei nicht.. aber immerhin bekommt man einen eindruck von dem was überlebt und was nicht... wie haralsch lesch mal sagte: Es gibt keine fliegenden Elefanten, denn, wenn es sie mal gegeben hatte, wären sie abgestürzt und wären ausgestorben. |
|
Nach oben |
|
 |
tim.vogt

Anmeldungsdatum: 01.03.2009 Beiträge: 56
|
Verfasst am: 25.06.2009, 16:14 Titel: Re: Evolution auf dem Computer |
|
|
qbay hat Folgendes geschrieben: |
ich habe mal in einem magazin gelesen das jemand ein programm geschrieben hat in dem das Darwinsche Prinzip der Evolution simuliert worden ist.
also in dem Programm wurden kleine "Bakterien" erschaffen die sich dann fortpflanzten und ihren code dabei immer etwas veränderten.
so das die Bakterien irgentwann sich aus dem Programm heraus entwickelten und auf dem rechner des Programmiers unsinn trieben. |
Mhh... die sich weiterentwickelten und auf dem Rechner des Programmieres Unsinn trieben? Dürfte schwer machbar sein, wenn überhaupt nicht realisierbar, da der Unsinn maximal sinnlose Zufallshandlungen sein könnten. Selbst das weiterentwickeln dürfte problematisch werden... zufällige Veränderung eines Codes um eine Veränderung hervorzurufen? Also den Quellcode öffnen (nebenbei müsste der in jeder Bakterie nochmal vorliegen), zufällig verändern, und kompillieren und automatisch starten, die alte Datei löschen? _________________ "Nichts ist wahrhaftig und alles ist erlaubt." |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 25.06.2009, 17:20 Titel: |
|
|
GANZ so schwer is das nicht wie man sich vorstellen mag. Das Prinzip ist sogar relativ einfach. Das problem liegt eher darin das Programm entsprechend zu designen (Sub / Func aufbau). Man kan nicht einfach ne routine schreiben, die "vermehre mich" heist, oder sowas. Hinzu kommt, das man sich intensiv mit "Strukturierter InSystem Modifikaation" und "Laufzeit Übersetzung und Interpretation" auskennen sollte. Da solche Techniken jedoch NOCH Brisanter sind, wie mein letztes Projekt (HiddenData) werd ich mich mal nur auf die Theoretische Beschreibung beziehen.
Als guter Ansatzpunkt zum Verständniss der Modifizierung von Quellcode zur Laufzeit findet man bei AVR Prozessoren. Viele Typen unterstützen die Modifizierung von Qullcode zur Laufzeit. Hier kann man erste erfahrungen sammeln, was dies betrifft.
Was die Evolotion angeht .. Hier kann man sich mal unter dem Thema "Evolotionärer Algorythmuss" (Hab auch erst kürzlich diese Bezeichnung erfahren) Informieren. Sie besschreibt auf den ersten Blick wohl eher Biogenetik, ist jedoch auch in die Computertechnik übersetzbar. Die 3 Grundprinzipien der Mutation, Auslese und Optimierung finden auch in deinem "Bakterien-Projekt" Verwendung.
Was uns zum 3ten Ansatzpunkt bringt. Du Musst also dein program so designen, das es fehig ist neuen Quellcode zu erzeugen, Passende "Funktionen" auswählen und diese optimieren und in das bestehende System einbauen.
Hast du wirklich vor, sowas mal zu coden, dann kannst du dich bei der Entwicklung erstmal auf optimierung von Dynamischen Speicherbereichen und Zugriffsmethoden beschränken. Das verhindert auch im ersten Schritt zugriffe auf die Festplatte und dessen Löschung.
Damit das auch nciht auser rand und band läuft, solltest du in deine Implementierungsfunktion neuer einzupflegender Quellcodeelemente Virenscanner ähnliche suchmethoden verwenden um nach schädlichen Programmteilen zu suchen (Heuristik). Dabei suchst du im grunde nur nach einfachen Kommandos wie "Kill, Open, Put, usw.". Finden sich solche Kommandos dann kannst du bei Speicheroptimierungsprozessen davon ausgehen, das die Mutation des Codes wohl in die falsche richtung, bzw in eine Richtung geht, die gefährlich für dein System wirken kann.
Als Vorsichtsmassnahme ist auserdem zu empfehlen ein Computer zu nutzen, den du relativ schnell neu aufsetzen kannst (SSD Platte), da solche Methoden sehr schnell zu Systemschäden führen.
Aber, solche "Erstexperimente" sind hier auf einem AVR sinvoller, da sie deutlich schneller zu Flashen sind, und Preis-Leistnustechnisch vollkommen ausreichen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
tim.vogt

Anmeldungsdatum: 01.03.2009 Beiträge: 56
|
Verfasst am: 25.06.2009, 18:08 Titel: |
|
|
ThePuppetMaster hat Folgendes geschrieben: | GANZ so schwer is das nicht wie man sich vorstellen mag. |
Na... eine sinnvolle Modifikation an einem Programm vorzunehmen, so dass es eigenständig handelt und "so das die Bakterien irgentwann sich aus dem Programm heraus entwickelten und auf dem rechner des Programmiers unsinn trieben" ist nicht machbar. Jedenfalls nicht mit evolutionärer Entwicklung. Man könnte ja dem Programm mögliche Entwicklunsweisen geben und schauen, welche genommen wird. _________________ "Nichts ist wahrhaftig und alles ist erlaubt." |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 25.06.2009, 18:22 Titel: |
|
|
tim.vogt hat Folgendes geschrieben: | Na... eine sinnvolle Modifikation an einem Programm vorzunehmen, so dass es eigenständig handelt und "so das die Bakterien irgentwann sich aus dem Programm heraus entwickelten und auf dem rechner des Programmiers unsinn trieben" ist nicht machbar. |
Warum nicht? .. Ein Programm ist im eigentlichen nur eine Liste von befehlen, die das Programm selbst auch bearbeiten udn abändern kann.
tim.vogt hat Folgendes geschrieben: | Jedenfalls nicht mit evolutionärer Entwicklung. |
Gerade damit, da diese Technik viel Potenzial hat, was die strukturierung von Mutation (Dynamische und Chaotische Kombination), Auswahl (suche nach geeigneten Codes, welche hohes potenzial zur umsetzung der geforderten aufgaben haben) und Kombination (Integierung in bestehende Programm-"Liste") betrifft.
tim.vogt hat Folgendes geschrieben: | Man könnte ja dem Programm mögliche Entwicklunsweisen geben und schauen, welche genommen wird. |
Das ist die einfachste Variante, und die wohl unevolotionärste.
Sieht man sich einmal den Genetischen Verlauf von "Versuch und Irtum" bzw. im Biologischen Sinne von "Mutation udn Überleben" an, erkennt man eigentlich schnell, das es im grunde nur eine Überlebensstrategie ist. Im eigentlichen sinne ist Evolution nichts anderes als eine variable abänderung bestehender Beschreibungslisten, die bei hohem potenzial automatisch länger bestehen als varianten zuvor.
Das Problem bei de umsetzung in ein Computerprogramm ist im grunde nur die "überlebensfehigkeit" zu "definieren", bzw zu "erkennen".
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 25.06.2009, 18:27 Titel: |
|
|
Und wenn du ganz auf nummer sicher gehen willst, geb den "Bakterien" eine auswahl von funktionen / befehlen vor die sie nutzen dürfen um sich zu optimieren. Damit begrenzt du zwar die Evolution, aber du verhinderst das sich viren entwickeln.
Auch die Speicherbelegung der Bakterien solltest du begrenzen, bzw eine bakterie entwickeln die andere mit zu großen speicherbedarf "frisst", um bei evolution zu bleiben. _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.06.2009, 18:50 Titel: |
|
|
Das entspricht aber nicht wirklich dem Begriff Evolution... Wenn ein Parameter nicht passt, überleben die Dinger normalerweise eh nicht. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 25.06.2009, 19:09 Titel: |
|
|
Dann bleibt wohl nix anderes übrig als das auch nem extra system oder in ner sandbox / nem chroot zu machen...
wollte nur vorschläge machen. _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
tim.vogt

Anmeldungsdatum: 01.03.2009 Beiträge: 56
|
Verfasst am: 25.06.2009, 19:49 Titel: |
|
|
Zitat: | Warum nicht? .. Ein Programm ist im eigentlichen nur eine Liste von befehlen, die das Programm selbst auch bearbeiten udn abändern kann. |
Da steht: sich aus dem Programm heraus entwickeln. _________________ "Nichts ist wahrhaftig und alles ist erlaubt." |
|
Nach oben |
|
 |
jensma

Anmeldungsdatum: 16.05.2005 Beiträge: 85 Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!
|
Verfasst am: 25.06.2009, 20:18 Titel: |
|
|
tim.vogt hat Folgendes geschrieben: | Zitat: | Warum nicht? .. Ein Programm ist im eigentlichen nur eine Liste von befehlen, die das Programm selbst auch bearbeiten udn abändern kann. |
Da steht: sich aus dem Programm heraus entwickeln. |
Uff,... das klingt ja verrückt. Unsinn treiben hört sich für mich nach einem schadhaften Verhalten an. Also denkst du an intelligente Computerviren, die sich an die Gegebenheiten des Systems anpassen, eine Verbreitungsmethode suchen und diese beim nächsten Infekt wieder erneut probieren?
Hui.. für solche Sachen bin ich nicht zu haben.. oder hab ich was falsch verstanden? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 25.06.2009, 20:33 Titel: |
|
|
Wieso sollte es sich nicth "herausentwickeln" können? .. wie schon zuvor gesagt ist es nur eien liste von befehlen ... wenn ein befehl sagt, "kopie rmich", is das schon ein klonen .. bzw zellteilung. ... wenn man beim kopiervorgang noch etwas mutation einbaut, is das schon quasi evolution.
und, ich muss jojo voll zustimmen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 25.06.2009, 21:13 Titel: |
|
|
jensma hat Folgendes geschrieben: | Uff,... das klingt ja verrückt. Unsinn treiben hört sich für mich nach einem schadhaften Verhalten an. Also denkst du an intelligente Computerviren, die sich an die Gegebenheiten des Systems anpassen, eine Verbreitungsmethode suchen und diese beim nächsten Infekt wieder erneut probieren?
Hui.. für solche Sachen bin ich nicht zu haben.. oder hab ich was falsch verstanden? |
Wenn man den gedanken ein bisschen weiter spinnt endet man da, wo "Ghost in the Shell" Anfängt: bei einer Hackenden KI.
Naja, weg vom Sci-Fi zur wirklichkeit:
Nen Groß-experiment mit nem in sich geschlossenem netzwerk auf windows-hosts und nen paar von solchen virtuellen Bakterien wäre sicher interessant zu beobachten. Einmal ob und wie sich die codes entwickeln und ob sie sich auf "unbewohnte" computer per netzwerk verbreiten (und wie). _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 26.06.2009, 12:07 Titel: |
|
|
Gibts sowas wie ne Fork-Bombe in FB? Angeblich gibts sowas ja in jeder Sprache... Ist auch evolution wenn mein PC dann noch funktioniert oder? XD |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 26.06.2009, 15:16 Titel: |
|
|
Forkbombe: Prozess der sich in einer endlos-schleife immer wieder selbst startet. Sowas kann man auch in FB machen. Sogar mit bash und batch geht das. _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 27.06.2009, 23:54 Titel: |
|
|
Dank WE hab ich mich mal hin gehockt und n bissi was zusammen geschrieben.
http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=859
Das Evolutionäre Ziel dieses Systems ist das auffinden einer zuvor zufällig generierten Anzahl zufälliger Zahlen.
Der Code ist nicht bis ins detail ebschrieben, führt dokumentarisch jedoch auf die techniken hin.
Es gibt bei der Mutation 3 Varianten. Die erste ist eine Zufällige varianz der anzahl und werte von zahlen. Zweitere ist die reguläre Evolutionäre variante die sich anhand von bestehenden genomen in einem gewissen mutationsfehigem bereich bewegt und die optimierte, welche sich ausschliesslich auf die minimalsten parameter der mutation bezieht.
Für einige sieht das wohl nicht nach Evolution aus, jedoch darf man nicht vergessen, das ein klar definiertes ziel existiert, das programm eine extrem kleine aufgabe hat, die variationsmöglichkeiten massiv eingeschränkt wurde und somit der gesammte Lebenszyklus durchgerechnet werden kann.
Würde man die fehigkeiten auf andere bereiche erweitern, müsste man einige änderungen bei der mutation, selektion und optimierung vornehmen. bzw. diese entsprechend dem neuen evolutionärem ziel anpassen.
abgesehen davon, soll das nur n kleines beispiel sein.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Zuletzt bearbeitet von ThePuppetMaster am 28.06.2009, 10:26, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
qbay
Anmeldungsdatum: 08.06.2008 Beiträge: 84
|
Verfasst am: 28.06.2009, 00:05 Titel: |
|
|
hey leute vielen dank erstmal für die vielen antworten
ich verstehe schon das dies doch ein wenig kompliziert ist
aber ich werde natürlich trotzdem versuchen so ein programm zu schreiben bis ich es dann habe
und tut mir leid wenn meine ausdrucksweise für verwirrung gesorgt hat
so habe ich es ja nur gelesen
allerdings war das aus einem rein wissenschaftlichen magazin und nich aus der "c´t" oder so
vielen dank nochmals:D |
|
Nach oben |
|
 |
|