Komplexität steigern

SRMeister

Registriertes Mitglied
Hallo,
angenommen ich hätte ein beliebiges Programm (Simulation) in der sich Objekte selbstständig weiterentwickeln können.
In der realen Welt ist es ja so, dass irgendwann die Komplexität immer weiter zugenommen hat.
Welche Eigenschaften müsste ein Programm haben, damit es genug Spielraum bietet, dass sich eigene Komplexität entwickelt? Vor allem soll es nicht so sein, dass sich die Objekte immer nur an die Welt anpassen, sondern an sich gegenseitig. So dass sich nach jedem kompletten Neustart eine andere Welt entwickelt, also quasi unvorhersehbar.
Wie komplex müsste das Programm selbst sein? Reichen ganz einfache Randbedingungen, oder muss es bspw. ein Periodensystem mit 100 Elementen geben?
Wie könnten konkrete Randbedingungen aussehen? Es geht nicht darum unsere Physik nachzubilden, sondern nur darum dass sich etwas Komplexes entwickeln kann.

Meine Ideen wären:
- Objekte entstehen aus Genen. Reproduktion mit Mutation, so dass ein Zufallselement eingebracht wird.
- natürliche Selektion (aus den Umweltbedingungen heraus), also keine Selektion durch Programmierer. Diese Umweltbedingungen sollen flexibel sein bzw erst in der Simulation selbst entstehen
- es sollte wohl eine Art Raum geben (2D oder 3D oder sogar höher? oder komplett anders?)
- es sollte eine Art Energie geben "um die gekämpft wird"

Würde mich freuen, mehr Input zu bekommen. Auch bereits vorhandene Projekte dieser Art sind in der Diskussion willkommen. Allerdings habe ich selbst keine derartigen gefunden.
 

SRMeister

Registriertes Mitglied
Das war für mich eher ein Gegenbeispiel, denn zB. alle Objekte aus dem Video sind künstlich erzeugt. Von alleine entsteht da wenig brauchbares. Besser gesagt die Muster wiederholen sich irgendwann einfach. Die maximale Komplexität ist nach paar Schritten erreicht und steigt nicht weiter; die Regeln sind zu einfach, als dass etwas wirklich Komplexes entstehen könnte.
Trotzdem danke für den Link, da bin ich auf die Stanford Complexity Group gestoßen und hab jetzt erstmal etwas zum schauen: http://www.youtube.com/user/StanfordComplexity/videos
 

Alex74

Registriertes Mitglied
Das ist so nicht ganz richtig: wenn Du eine beliebig große Fläche nimmst und von einem Zufallsmuster ausgehst werden auch die entsprechenden Figuren erzeugt werden, ganz ohne geplante Konstruktion.

Wie komplex es werden kann hängt vor allem davon ab ob die mathematischen Grundfunktionen AND, OR und NOT abgebildet werden können. Ist das der Fall, steht der Komplexität nach oben hin nichts im Weg.
 

SRMeister

Registriertes Mitglied
kannst du darauf näher eingehen, zb ein Beispiel bringen, wie du das meinst mit den Grundfunktionen?

Der erste Satz hört sich für mich irgendwie danach an, dass in einem unendlich großen Zufallsgebilde irgendwann alles mal vorkommt(Wie war das mit der Bibel und Pi oder so). Was ja dann auf ein Programm nicht anzuwenden wäre, da es nur endlich groß sein kann. Oder verstehe ich das falsch?
 

Alex74

Registriertes Mitglied
Zu ersterem: genau das meinte ich; ich meine daß das Programm nicht allzu komplex sein muß, es muß nur genug Raum bieten um Entwicklungen zulassen zu können.
Ein Computerprogramm ist schon recht vergleichbar mit unserem Universum: das Programm stellt quasi die Naturgesetze dar, die Daten die vom Programm manipuliert werden den Inhalt des Universums.

Automationen wie Game of Life haben nur eine große Schwäche; Objekte können sich nicht bewegen und daher nicht direkt miteinander interagieren. Eine Zelle die entsteht ist da wo sie ist bis sie stirbt.
Solche Bewegungen einzuprogrammieren bedarf wieder eine ganze Ecke mehr Programm.

Die mathematischen Grundfunktionen sind praktisch die, die in jedem Computerchip grundlegend für das Abarbeiten von Programmcode sind; das ist vergleichbar wie die chemischen Grundfunktionen rund um die DNS, die den Aufbau verschiedener Moleküle (und damit sehr komplexer Lebewesen) durch Kommandoketten vollziehen.

Wenn also in einer Welt der Bau von "Apparaten" möglich ist, die durch wenige Kommandos (AND, OR, NOT oder bei der DNS eben die Gene) Dinge als Output haben die komplexer sind als sie selbst, wäre glaube ich Deine Bedingung an eine solche Struktur erfüllt.

Ein Automaton wie Game of Life, das solche Strukturen bilden kann, wäre also hinreichend komplex, oder?
 

SRMeister

Registriertes Mitglied
Ein Automaton wie Game of Life, das solche Strukturen bilden kann, wäre also hinreichend komplex, oder?

Wahrscheinlich schon, ja. Das Problem ist dann aber immernoch, dass man aufgrund der Einfachheit einen sehr großen Raum simulieren müsste um irgendwo etwas komplexes zu finden. Auch soll natürlich die Evolution eine Rolle spielen, da scheiden dann zb Fraktale erstmal aus, obwohl sie auch unendlich komplexe Muster erzeugen. Das simulierte Objekt soll also schon ansich etwas mehr können als nur seine Nachbarn abzuzählen und darauf zu reagieren. Es hat wohl auch damit zu tun, dass ich mir vorstelle, man bräuchte simuliertes Leben um ein komplexes Gebilde zu bekommen. Also sowas wie Energietransfer, Mutation, Reproduktion... Ich finde bei Game of Life fehlt das. Es kann natürlich sein, dass sich sowas im Game of Life selbst entwickelt. Nur wie groß müssten der Computer sein um es herauszufinden? Deshalb, denke ich, müsste man gleich auf einer höheren Ebene ansetzen.
 

SRMeister

Registriertes Mitglied
OK ich mache mal ein konkretes Beispiel, vielleicht kann man sich dann eher was vorstellen.

Karl Sims, einer der Vorreiter auf dem Gebiet, hatte 1994 eine weit bekannte Arbeit veröffentlicht. Es geht um eine simulierte physikalische Umgebung in der Roboterähnliche gegeneinander kämpfen. Also eine Art rundenbasierter Kampf. Dies passiert dann viele tausend Male und durch Evolution verändern sich diese Objekte. Wirklich sehr schön anzuschauen hier http://www.youtube.com/watch?v=JBgG_VSP7f8

Mein Fazit: Was mir daran gut gefällt, sind die physikalischen Regeln. Alles erscheint irgendwie realistisch. Auch dass es viele verschiedene Strategien hervorgebracht hat, um ein gegebenes Ziel zu erreichen. Das zeigt schon Komplexität, so wie ich es mir vorstelle.
Schlecht finde ich, dass es keine Population gibt, sondern dass alles nur 1 gegen 1 ausgetragen wird. So passiert ja eigentlich immer nur eine Koevolution von 2 Spezies. Eine echte Umgebung gibt es nicht.
Da das auf Hardware von 94 ausgetragen wurde, denke ich, man könnte es heutzutage in diesem Sinne erweitern.

Was denkt ihr?
 

Dgoe

Gesperrt
Würde mich freuen, mehr Input zu bekommen. Auch bereits vorhandene Projekte dieser Art sind in der Diskussion willkommen. Allerdings habe ich selbst keine derartigen gefunden.
Hallo SRMeister,

mir ist auch noch ein Input dazu eingefallen, der viel damit zu tun hat, das Buch von Stephen Wolfram, dem Macher von Mathematica, das er hier vorstellt (woran er 10 Jahre geschrieben hat):
A New Kind of Science - Stephen Wolfram - YouTube (Präsentation)
Stephen Wolfram: A New Kind of Science | Online - Table of Contents (Online kostenlos lesbar, download gegen Emailregistrierung)

Gruß,
Dgoe
 

joeydee

Registriertes Mitglied
Schlecht finde ich, dass es keine Population gibt, sondern dass alles nur 1 gegen 1 ausgetragen wird. So passiert ja eigentlich immer nur eine Koevolution von 2 Spezies. Eine echte Umgebung gibt es nicht.
Da das auf Hardware von 94 ausgetragen wurde, denke ich, man könnte es heutzutage in diesem Sinne erweitern.
Was denkt ihr?
Klar kann man das.

Dieses Rundenbasierte Lernen und Verbessern ist einfach nur zu Beobachtungszwecken besser, wenn man mit solchen Dingen spielt. Daher ist so ein Setting bis heute quasi der Standard-Laborversuch.

Stichworte für einen Anfang wären auf jeden fall "genetic algorithm" und dann als Grundlage für mögliche anpassbare Steuermechanismen vielleicht "neuronal network".
Hier ein recht einfacher Einstieg in beide Themen:
http://www.ai-junkie.com/ga/intro/de-gat1.html
http://www.ai-junkie.com/ann/evolved/nnt1.html

Erwarte dabei bitte nicht zu viel von neuronalen Netzwerken (NN). Auch mit noch so vielen Neuronen können die kein Gehirn ausbilden, nichtmal annähernd.
Du kennst vielleicht diese einfachen Bots, die einer schwarzen Linie folgen können? Links und rechts eine Fotodiode auf den Boden, zwei Motoren mit Rädern. Geht die linke Diode aus (schwarze Linie), bleibt der linke Motor stehen...
Sieh ein NN als eine universelle Schaltplatine mit solchen Ein- und Ausgängen (Sensoren, Motoren), wo erstmal alle Eingänge mit allen Ausgängen über mehrere Zwischenschalter verdrahtet sind und duch "Nullen" der nicht benötigten Schalter theoretisch jede beliebige spezialisierte Schaltung parametrisiert nachgebildet werden kann ohne sie im Programm explizit abbilden zu müssen (siehe auch "And, OR, NOT..." in den Posts oben).
Dadurch (durch die Parametrisierung) kann ein genetischer Algorithmus eine zufällige (sinnlose) Ausgangsschaltung für ein bestimmtes Problem optimieren, wenn er irgendeine Wertungsrückmeldung über den Erfolg der Schaltung und mehrere (viele) Versuche bekommt - diese Wertung wird in den oben genannten "Wettbewerbsrunden" meist one-on-one oder in einer zeitlich limitierten Population ermittelt.
Also auch in einer Population lernen geht: http://www.ai-junkie.com/ann/evolved/nnt5.html
Für ein neues Problem Dazulernen geht mit einem reinen NN nicht: ändert sich das Problem, wird die gesamte Schaltung auf dieses zugeschnitten, für das alte Problem müsste wieder in mehreren Runden gelernt werden.
Was du also noch brauchst wäre so etwas wie Erinnerung, Assoziation, Steuerungshierarchien,... unter anderem.

Am Wichtigsten aber ist wohl erstmal eine Umgebung mit Ressourcen und Regeln (Physik), ohne die wird sich auch kein Verhalten und Komplexität ausbilden. Das zweite ist eine vollkommen parametrisierte BlackBox-Schaltung, die die Umwelt lesen und auf sie einwirken kann (im einfachsten Fall ein NN, wobei man die Sensoren und Motoren ebenso parametrisieren müsste), und drittens muss es auf Grund der Physik irgendeinen Auslesemechanismus geben (Wirken kostet Energie, Konkurrenz, Erreichbarkeit von Ressourcen), damit es überhaupt einen Grund zum Optimieren der BlackBox gibt. Gegenbeispiel: Organismen in einer stets gleichmäßig gefüllten Ressourcensuppe haben keinen Grund sich zu bewegen oder zu entwickeln.
"Konkurrierende" Mechanismen (wie z.B. Bewegung kostet Energie) sind übrigens auch in einfacheren Modellen oft Auslöser für Komplexität. Du findest das auch versteckt z.B. in den Regeln von Game of Life (genug Nachbarn: Zelle füllt sich; mehr als X Nachbarn: Zelle stirbt - mit nicht-konkurrierenden Regeln entstehen keine so komplexen Muster), oder Gleichungen zum deterministischen Chaos (Das Bild vom "Teig Kneten": Ausrollen und Falten sind konkurrierend).

Viertens brauchst du noch eine Null-Erwartung für dich selbst. Geh nicht davon aus, dass sich bekanntes Verhalten wie z.B. Neugier ausbildet, wenn es die Welt nicht erfordert/ermöglicht oder die Genetik zufällig nicht darauf kommt. Und wenn du als Programmierer auf keinen Fall "Hints" einprogrammieren willst um alles in eine bestimmte Richtung zu treiben, dann gestehe deinem Programm auch mindestens so viele Freiheitsgrade wie in der realen Physik zu und soviele Individuen und Populationsrunden wie der Natur in ihrer Evolution - und soviele Programmneustarts wie Planeten im Universum ;-)

Themenbezogene Projekte die ich kenne (aber schon älter):
http://www.framsticks.com/
http://boxcar2d.com/
 

SRMeister

Registriertes Mitglied
Hallo Dgoe,
danke für den Link. Ich habe mir das Video angeschaut und finde das sehr interessant.

Hallo joeydee,
Stichworte für einen Anfang wären auf jeden fall "genetic algorithm" und dann als Grundlage für mögliche anpassbare Steuermechanismen vielleicht "neuronal network".
Ich habe mich schon in mehreren Projekten mit den beiden Themen auseinandergesetzt. Ich hatte mal ein Programm geschrieben, welches mit genetic algorithm eine Funktion findet, wenn man beliebig viele Punkte vorgibt, so dass die Punkte Lösungen der Funktion darstellen. Das war ein ganz einfaches Programm aber man bekommt ein bisschen ein Gefühl dafür, wie so etwas funktionieren kann. Mit Neuronalen Netzen kombiniert mit G.A. hatte ich mal ein kleines Programm geschrieben, welches Aktien Kauf oder Verkaufs-Tipps geben kann und anhand historischer Aktienkurse lernt diese Signale korrekt zu geben. Das ist ja heute an den Börsen ein ganz großes Thema. Ich bin dann da gescheitert, als es darum ging, ein Interface zum Broker zu finden: Es gibt in Deutschland keinen Broker für Privat, der Automatisiertes Handeln erlauben würde. Wer an den Quellcodes interessiert ist, kann mir gern eine Nachricht schicken. Noch interessanter finde ich aber mein "Projekt Leben", worauf ich gleich eingehe.

Am Wichtigsten aber ist wohl erstmal eine Umgebung mit Ressourcen und Regeln (Physik), ohne die wird sich auch kein Verhalten und Komplexität ausbilden.
Ich habe mich mal umgeschaut und mehrere fertige Lösungen gefunden. Besonders geeignet scheint mir "Bullet" zu sein: Eine Physik Engine, die schon in vielen kommerziellen Spielen Verwendung fand und relativ einfach aufgebaut ist.

Das zweite ist eine vollkommen parametrisierte BlackBox-Schaltung, die die Umwelt lesen und auf sie einwirken kann (im einfachsten Fall ein NN, wobei man die Sensoren und Motoren ebenso parametrisieren müsste)
Da kommen wir dann zu den technischen Details wie das "Lebewesen" selbst aufgebaut sein soll. Ein Beispiel: Ich hatte wie gesagt mal ein "Projekt Leben" versucht. Da ging es mir darum, mithilfe von Lindenmayer-Systemen Pflanzenwachstum zu simulieren. Ich war soweit dass man sich mithilfe von OpenGL diese einfachen Pflanzen darstellen konnte.
86b9.jpg

2obc.JPG

und drittens muss es auf Grund der Physik irgendeinen Auslesemechanismus geben (Wirken kostet Energie, Konkurrenz, Erreichbarkeit von Ressourcen), damit es überhaupt einen Grund zum Optimieren der BlackBox gibt. Gegenbeispiel: Organismen in einer stets gleichmäßig gefüllten Ressourcensuppe haben keinen Grund sich zu bewegen oder zu entwickeln.
Um mal bei meinem Beispiel mit den Pflanzen zu bleiben: Man müsste also mithilfe von Raytracing berechnen, wieviel Sonne jedes Blatt bekommt. Dann müssen auch noch die Nährstoffe in der Erde berücksichtigt werden. Letztendlich üben dann die Organismen gegenseitig Druck auf sich aus, da alle Ressourcen begrenzt vorhanden sind.

Viertens brauchst du noch eine Null-Erwartung für dich selbst.
Was ich mir halt wünschen würde, also wie es im Idealfall sein sollte: Es entstehen verschiedene Arten und man kann das komplexe Zusammenspiel dazwischen verfolgen, also wie jede Art sich an seine Nische anpasst oder neue Nischen/Lösungen findet. Halt ein kleines Ökosystem :)
Lustig wäre später dann, wenn man sein Ökosystem übers Internet an andere Ökosysteme irgendwie anschließen könnte, also dass ein Genaustausch stattfinden kann. Das wäre dann der Einfluss, den der User haben kann. Dass er vielleicht auch aus einer Datenbank sich Organismen aussuchen kann und in sein Ökosystem einsetzen kann oder so...
Wie eingangs erwähnt bin ich ja momentan nur in der Ideenphase. Ob es Pflanzen oder Roboterartige sind, soviel Gedanken habe ich mir noch garnicht gemacht. Am besten wäre natürlich wenn aus einem Grundkonzept sich beides ergeben kann. Das ist halt mit den L-Systemen nicht so machbar.

Grüße
 
Zuletzt bearbeitet:

joeydee

Registriertes Mitglied
Hey, da hast du ja schon einige Erfahrung auf dem Gebiet sammeln können :) Ich hatte bisher eher so auf dem Gebiet Bots und Steuerverhalten "geforscht", vor allem auch in schwerelosen 3D-Räumen (Hobbyprogrammierer, beruflich hab ich damit nichts zu tun, entsprechend selten sitze ich an sowas).
Was mir noch ein wenig schleierhaft ist: wie ein Bot für neue Situationen dazulernen kann, statt umzulernen. Also irgendwie Situationen klassifizieren und später assoziieren.
Und weiter, wie man am besten zeitliches Verhalten verwirklicht, also nicht auf einen bestimmten Input sofort einen Output generiert, sondern erstmal in einen zeitlichen Zusammenhang bringt und Situationen ggf. extrapoliert um einen günstigen Zeitpunkt für Reaktion(en) zu erlernen.
Klar könnte man das direkt programmieren und z.B. vor ein NN vorschalten, oder mit mehreren NN auf verschiedenen Ebenen lösen. Aber das Entwickeln dieser Ebenen müsste eigentlich mit in die BlackBox und ebenfalls empirisch ermittelt werden.

Mit "Physik" meinte ich nicht unbedingt ein fertiges Physikpaket, sodern allgemein die Naturgesetze der Simulation. Das kann auch nur sein: Wachstum braucht Energie, Licht liefert Energie. "Physik" kann auch auf höherer Ebene (fertige spezialisierte Zellen mit fest definierter Interaktionsmöglichkeit) oder abstrakter (zelluläre Automaten) definiert sein und beinhaltet natürlich je nach Interpretation der Simulation auch Chemie.
In der Simulation ist "Physik" also die Summe aller Möglichkeiten und gleichzeitig die Grenze, unter welcher nichts mehr umgestaltet werden kann. Je tiefer diese in Richtung Naturgesetze liegt, desto freier kann sich die Simulation zwar entwickeln, desto wahrscheinlicher ist aber auch, dass sie sich zu gar nichts entwickelt. Je höher, desto enger und vorhersehbarer sind die Grenzen der Weiterentwicklung.

Mit der Null-Erwartung meine ich vor allem: es kann sein dass eine Art eine "günstige" Lösung findet, ohne dass sie für unsere Maßstäbe sinnvoll, interessant oder nachvollziehbar scheint. Selbstausrottung ist so gesehen auch eine gültige Lösung, aber ich glaube nicht dass ein leerer Bildschirm akzeptabel wäre.

L-Systeme sind ja eher eine aufgesetzte Schablone, aus Beobachtungen heraus abgeleitete Muster und Regeln, um dann an den Parametern zu drehen bis etwas Bekanntes, den ursprünglichen Beobachtungen (z.B. Pflanzen) ähnliches herauskommt.
Es ist wie die Simulation eines Automotors mit einer einfachen Regel: trete aufs Gaspedal, und er läuft schneller. Gas*f=Drehzal. Mit Parametern/Leistungskurven kann man sich damit sicher näher an das Verhalten von Verbrennungsmotoren herantasten, aber spezifisches Verhalten wie Vorglühen eines Diesels oder abwürgen unter Last ergibt sich dadurch nicht von selbst, da muss man das Dazwischenliegende auf niedrigerer Ebene simulieren oder ein Extra-Paket dazwischenprogrammieren, das den gewollten Sonderfall abfängt.
Die Erwartung steuert in diesen Fällen also eigentlich das Ergebnis, und Steigerung der Komplexität ist nur durch bewusstes Zuprogrammieren erreichbar. Die Physik dieser Simulationen wäre also denkbar hoch und eng angelegt.

Wie gesagt, ich denke, mit ausreichend niedrig angesetzten komplexen "Natur"gesetzen und ausreichend Versuchen könnte auch eine einigermaßen (aus unserer beschränkten Sicht) interessante Simulation entstehen. Irgendwann. Nach Stunden? Jahren? Jahrmillionen? Oder auch gar nicht, siehe oben, Selbstausrottung als Extrembeispiel.

Man muss also irgendwie einen Kombination schaffen aus genügend solchen bewusst programmierten "Extrapaketen" die sich so und nicht anders verhalten (überraschende Komplexität und Weiterentwicklung auf dieser Ebene ausgeschlossen) und einer lernwilligen Umgebung, die ausprobiert, wie diese Pakete am besten zu benutzen, kombinieren etc. sind.

Mein Rat läuft daher also auf etwas ähnliches wie die Bramsticks hinaus, wobei man sich nach einiger spielerisch gesammelter Erfahrung mal Gedanken machen kann, ob man alle bis dahin benötigten spezialisierten Zellen zu einer "Stammzelle" verallgemeinern und parametrisieren kann um zu provozieren, dass sich solche Zellen von selbst (weiter)entwickeln und evtl. auch bisher nicht programmierte Spezialisierungen ausbilden. Die Physik also vorsichtig und kontrolliert von einer bewusst hohen auf eine niedrigere Ebene bringen.
 

SRMeister

Registriertes Mitglied
Was mir noch ein wenig schleierhaft ist: wie ein Bot für neue Situationen dazulernen kann, statt umzulernen. Also irgendwie Situationen klassifizieren und später assoziieren.
Das bedeutet, der Bot hat nicht nur ein vorgegebenes NN, sondern kann das NN auch selbst "Trainieren"? Wenn du einen Bot selbst kreirst, ist das sicher nicht so einfach. Ich denke per Evolution wird das wohl so ablaufen, dass bei einfachen Organismen zunächst das komplette NN genetisch vorgegeben ist und nicht lernfähig ist. Ich denke da an Würmer, Instekten etc. Ich glaube nicht dass die großartig lernen können? Dann in der nächsten Stufe bilden sich irgendwie "frei programmierbare Neuronen" aber trotzdem bleibt ein Großteil des NN fest Verdrahtet (per Gen-Info). Das kann sich ja per Evolution selbst entwickeln, wenn man die Möglichkeit für beide Varianten gibt, der frei programmierbare Anteil aber energetisch ungünstiger also teurer ist.

Und weiter, wie man am besten zeitliches Verhalten verwirklicht, also nicht auf einen bestimmten Input sofort einen Output generiert, sondern erstmal in einen zeitlichen Zusammenhang bringt und Situationen ggf. extrapoliert um einen günstigen Zeitpunkt für Reaktion(en) zu erlernen.
Wie gesagt, wenn man nicht vorgibt wie das NN konkret aufgebaut ist, dann kann sich sowas denke ich selbst entwickeln. Für die zeitliche Verschiebung wäre es nur notwendig, dass das NN nicht nur in eine Richtung verdrahtet ist, sondern dass sich auch rückwirkende Schleifen bilden können, so dass die dann als Zwischenspeicher dienen und den nächsten Schritt beeinflussen können.

Klar könnte man das direkt programmieren und z.B. vor ein NN vorschalten, oder mit mehreren NN auf verschiedenen Ebenen lösen. Aber das Entwickeln dieser Ebenen müsste eigentlich mit in die BlackBox und ebenfalls empirisch ermittelt werden.
Genau und das Gute ist, man muss sich keine Gedanken machen sondern nur abwarten, wann es von selbst passiert :)


Je tiefer diese in Richtung Naturgesetze liegt, desto freier kann sich die Simulation zwar entwickeln, desto wahrscheinlicher ist aber auch, dass sie sich zu gar nichts entwickelt. Je höher, desto enger und vorhersehbarer sind die Grenzen der Weiterentwicklung.
Bin da auch deiner Meinung. Natürlich wäre es toll, wenn man selbst im PC ein Quantenuniversum simulieren könnte. Das sollte also möglichst das angestrebte Ziel sein. Man muss also das Niveau soviel anheben, dass ein Kompromiss mit der Rechenleistung entsteht. Dabei ist also ständig zu hinterfragen, ob nicht zwei oder mehr angedachte Regeln nicht durch eine einzige, universelle Regel ersetzt werden kann, die dann zwar mehr Rechenaufwand bedeutet, aber den Freiheitsgrad erhöht.

L-Systeme sind ja eher eine aufgesetzte Schablone, aus Beobachtungen heraus abgeleitete Muster und Regeln, um dann an den Parametern zu drehen bis etwas Bekanntes, den ursprünglichen Beobachtungen (z.B. Pflanzen) ähnliches herauskommt.
Ja das stimmt leider und deswegen bin ich mit diesem Ansatz auch nicht weiter gekommen. Trotzdem ist die Grundidee die dahinter steckt sehr brauchbar für das hier und deswegen will ich darüber noch etwas sagen. Das L-System besteht ja aus einfachen Regeln wie A->B und Anfangsbedingungen. Die Regeln stelle ich mir dabei als Gene vor und die Anfangsbedinungen als Samen.
Mein Rat läuft daher also auf etwas ähnliches wie die Bramsticks hinaus, wobei man sich nach einiger spielerisch gesammelter Erfahrung mal Gedanken machen kann, ob man alle bis dahin benötigten spezialisierten Zellen zu einer "Stammzelle" verallgemeinern und parametrisieren kann
Die Bramsticks gefallen mir auch sehr, wobei da wohl noch etwas fehlt. So wie ich sehe sind wir bis hierher ziemlich einer Meinung und deswegen schlage ich vor, lass uns doch nun eine Stufe konkreter werden und über die mögliche Physik reden.

1. Die Grundeinheiten/Zellen
Wenn man die einfachen Regeln von LSystemen weiter verallgemeinert, kommt da meiner Ansicht nach ein Sprachkonzept heraus, welches hier brauchbar wäre. Diese Erweiterung ist in der Literatur als Parametrische LS beschrieben. Und obwohl da wohl immernoch einiges fehlt, gefällt mir der Ansatz. Die Regeln sind dann nämlich einfach die Regeln, die jeder Zelle mitteilen, wie sie sich verhalten soll, zb. "benutze 30% der verfügbaren Energie für Wachstum" oder "Leite 20% an Nachbarn X und 25% an Nachbarn Y weiter, speichere den Rest", oder "Sende Information X an Nachbarn Y", oder "bei überschreiten der gespeicherten Energiemenge über X, führe eine Teilung aus, die Tochterobjekte sollen so und so angeordnet sein".
Genau aus diesen einfachen Regeln bildet sich dann aus kleinen Einheiten ein komplexer Organismus, traditionell Pflanzen. Das ist mit etwas Erweiterung aber genauso für Tiere relevant, da wäre dann eine Möglichkeit z.B. "Nutze X Menge Energie für die Fortbewegung" was auf Zellniveau nur bedeuten muss, entweder eine Streckung/Kontraktion oder ein Verdrehen. Also ganz einfache Möglichkeiten, für jede Zelle. Was der Organismus mit diesen Möglichkeiten anstellt, bleibt ihm überlassen. Insbesondere gibt es bei diesem Ansatz also eine dezentrale Informatiuns-u.-Energieverarbeitung. Das Verhalten des Organismus entsteht also aus dem Verhalten der einzelnen Zellen. Da kommen wir aber zum Problem, ob denn nun jede Zelle ein NN oder wenigstens ein Neuron haben soll, was eigentlich logischer und grundlegender wäre, oder ob der Organismus auf einer virtuellen Ebene ein NN enthalten soll, welches dann durch Eingangs- u. Ausgangsneuronen mit bestimmten Zellen des Organismus verknüpft ist. Das wäre dann der Bramsticks ansatz.

2. Die Umgebung
Leider glaube ich nicht, dass es möglich wäre, ein gutes Konzept zu finden, so dass man die Zellen aus 1. auch gleichzeitig als Umgebung verwendet. Man ist also glaube ich aus Rechenaufwands-gründen dazu gezwungen, hier eine weitere Ebene einzubauen. Die Ebene stellt Energie zur Verfügung sowie einen Grund auf dem sich alles abspielt, außerdem die von mir bereits erwähnte Physik-Simulation (zB eben Bullet). Die erachte ich als zwingend, da so ein Kontakt zwischen den Organismen und auch innerhalb einzelner Organismen zwischen den Zellen, gegeben ist.
Ich will die Umgebung nicht zu komplex gestallten, wie zb Himmel mit Wolken, Tageszeiten usw.. Das bläht das Projekt nur unnötig auf.

Edit: Bramsticks: damit meinte ich eigentlich Framsticks, siehe hier
 
Zuletzt bearbeitet:

Wirbelwind

Registriertes Mitglied
Das Problem ist dann aber immernoch, dass man aufgrund der Einfachheit einen sehr großen Raum simulieren müsste um irgendwo etwas komplexes zu finden.

Das ist aber in der Realität vermutlich ebenso. Überleg mal wie klein bereits die Elementarteilchen im Standardmodell sind. Ganz zu schweigen von Modellen wie der Loop-Quantengravitation, wo von Strukturen in der Größenordnung der Plancklänge ausgegangen wird.

Wenn ich mich recht erinnere hat Stephen Wolfram sogar mal die These aufgestellt, dass das Universum selbst eine Art zellulärer Automat sein könnte - die Größenordnung der Zellen müsste sich dann aber vermutlich ebenfalls im Bereich der Plancklänge bewegen.

Viele Grüße
Wirbelwind
 
Oben