Leben auf Partikeln

Hallo allerseits! Heute werde ich über meine Experimente mit Partikelsystemen sprechen. Das Hauptziel war es, einfache Regeln zu finden, die interessantes Verhalten erzeugen.

Ein klassisches Beispiel für ein System mit einfachen Regeln und komplexem Verhalten sind zellulare Automaten, auf die ich mich konzentrierte, um die Regeln zu finden. Natürlich sind die Regeln für zellulare Automaten in den meisten Fällen einfacher. Aber Partikel können schöner sein!

Unter dem Schnitt viele Megabyte Gifs.


Zellsuppe


Zuerst bin ich in die Fußstapfen des "Leben" -Spiels getreten: Jedes Teilchen hat einen "Überbevölkerungs" -Zähler, der gleich der Summe der inversen Quadrate der Abstände zu anderen Teilchen ist. Wenn dieser Zähler unter einer bestimmten Grenze liegt, dh es gibt nur wenige Nachbarn, wird das Partikel von anderen Partikeln angezogen, und wenn es viele Nachbarn gibt, wird es abgestoßen. Wenn sich die Partikel schneiden, werden sie auf jeden Fall abgestoßen, um sich nicht gegenseitig zu durchdringen.

Wir streuen zufällig Partikel über das Feld und sehen, was passiert.



Interessanterweise sieht es ähnlich aus wie Zellen und sieht schon ziemlich lebhaft aus. Sie können beispielsweise weitere Partikeltypen hinzufügen. Lassen Sie verschiedene Partikel die Anzahl der Nachbarn auf unterschiedliche Weise erhöhen, und einige können sie sogar reduzieren.



Jetzt sind unsere „Zellen“ vielschichtig geworden.

Der Nachteil solcher Regeln ist, dass sie eher chaotische, nicht sehr stabile Strukturen erzeugen.

Deshalb gehen wir weiter.

Aufholspiel


Wir ändern die Spielregeln. Wir werden die Nachbarn nicht mehr zählen. Lassen Sie die Partikel je nach Typ einfach anziehen oder abstoßen. Wenn alle Partikel vom gleichen Typ sind, gibt es nur zwei Möglichkeiten: Sie stoßen sich entweder alle ab oder ziehen sich an.



Wenn es mehr Arten von Partikeln gibt, können Sie hier kombinieren, welche davon angezogen werden und welche abgestoßen werden sollen.

Versteckter Text
Zusätzlich zur Anziehung / Abstoßung könnte man zum Beispiel andere Optionen hinzufügen, so dass die Partikel in keiner Weise miteinander reagieren, oder Koeffizienten zur Einflusskraft hinzufügen, aber ich konnte darin kein interessantes Verhalten finden.

Jede solche Regel kann in Form einer Matrix N * N dargestellt werden, wobei N die Anzahl der Partikeltypen ist und in jeder Zelle entweder Anziehung oder Abstoßung vorliegt. Die Anziehung wird mit 0 bezeichnet, und die Abstoßung wird mit 1 bezeichnet. Dann entspricht jede Matrix einer bestimmten Zahl, beispielsweise der Matrix \ begin {bmatrix} 1 & 0 \\ 1 & 0 \ end {bmatrix} bedeutet 0101, d. h. 5 (die letzte Ziffer in binärer Form ist die erste in der Matrix). Die Anzahl der verschiedenen Matrizen für die Regeln beträgt 2N2. Für zwei Arten von Partikeln erhalten Sie beispielsweise 16 Regeln.



Es mag scheinen, dass Regel 3 mit Regel 7 identisch ist, aber wenn Sie sie in Matrizen übersetzen, erhalten Sie \ begin {bmatrix} 1 & 1 \\ 0 & 0 \ end {bmatrix} und \ begin {bmatrix} 1 & 1 \\ 1 & 0 \ end {bmatrix} , was bedeutet, dass in Regel 7 nur Beige voneinander angezogen werden. Während in Regel 3 Beige auch von Rot angezogen wird. Aufgrund der geringen Dichte der Rottöne wirkt sich dies jedoch subtil aus. Tatsächlich können dieselben Regeln beispielsweise als 3 und 12 bezeichnet werden, da das gesamte Verhalten der Partikel identisch ist und nur die Farben die Stellen geändert haben. Wenn wir nur die Regeln mit eindeutigem Verhalten belassen, haben wir von 16 Regeln 10. Für drei Arten von Partikeln aus 512 möglichen Kombinationen bleiben 104 eindeutige übrig, und für vier - 3044 von 65536 wird die Sequenz 2, 10, 104, 3044 erhalten.

Aber zurück zu unseren zehn Regeln.



Regel 9, die Matrix, fällt auf \ begin {bmatrix} 1 & 0 \\ 0 & 1 \ end {bmatrix} , wo die gleichen sich gegenseitig abstoßen und sich gegenseitig anziehen. Zufällig verstreute Partikel bilden schnell „Fäden“ und gefrieren darauf.

Die Regeln 1 und 15 frieren ebenfalls ein: Sie entsprechen zwei einzelnen Regeln für einen Partikeltyp (vorheriges animiertes GIF). Normalerweise sind alle Regeln festgelegt, deren Matrizen symmetrisch sind. Es gibt auch Regeln 2, 3, 5 und 11 mit asymmetrischen Matrizen. Dies bedeutet, dass ein Partikeltyp vom zweiten angezogen wird und der zweite vom ersten abgestoßen wird. Der Aufholprozess beginnt.



Regel 3 ist zu stabil, da die „Aufholjagden“ irgendwann aufhören und wenn sie wieder aufgenommen werden, dann selten und nicht lange. Regel 11 ist zu chaotisch. Bleib 2 und 5.

Sie können sie irgendwie kombinieren, um es noch interessanter zu machen. Ich habe Regel 105 für drei Farben aufgenommen, d. H. Eine Matrix \ begin {bmatrix} 1 & 0 & 0 \\ 1 & 0 & 1 \\ 1 & 0 & 0 \ end {bmatrix} und das ist das Verhalten:



Es sieht alles lebhaft aus, aber instabil. Aber was ist mit bestimmten wiederholten "lebenden" Kreaturen? Wie suche ich nach Oszillatoren und Segelflugzeugen? Wir müssen die Regeln wieder ändern!

Schwimmendes Leben


Wir werden die Regeln nicht viel ändern. Fügen Sie stattdessen eine neue Funktion hinzu. Jetzt bilden die Partikel in kurzer Entfernung Bindungen. Wenn die Partikel gebunden sind, werden sie ständig voneinander angezogen. Diese Anziehungskraft schwächt sich nicht mit der Entfernung ab. Wenn der Abstand jedoch über einem bestimmten Schwellenwert liegt, wird die Verbindung unterbrochen.

Ich habe verschiedene Optionen mit drei Farben ausprobiert und mich dafür entschieden, wo Rot nur eine Verbindung bilden kann, Beige - drei und Blau - zwei, dh Sie können die maximale Verbindung im Formular festlegen  beginbmatrix132 endbmatrix.

Gleichzeitig können Rotweine nicht an andere Rotweine binden, Beige und Blau dürfen nicht mehr als zwei Bindungen mit Partikeln ihrer eigenen Farbe und nicht mehr als eine Bindung mit Partikeln jeder anderen Farbe aufweisen. Dies ist alles in Form einer Matrix: \ begin {bmatrix} 0 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \ end {bmatrix}



Ich habe mit verschiedenen Pull / Push-Regeln herumgespielt und es hat mir gefallen \ begin {bmatrix} 1 & 1 & 0 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \ end {bmatrix} Das heißt, die roten werden von den blauen angezogen, und in allen anderen Fällen werden alle abgestoßen.



Es scheint, als ob diese Kreaturen in einer Flüssigkeit schweben oder mit den Flügeln schlagen.





Ein Paar Oszillatoren und ein Paar Segelflugzeuge.

Feste Zahlen sind leicht zu erhalten: Sie müssen nur nicht Rot und Blau zusammen verwenden, da dies in diesen Regeln die einzige Kombination mit Anziehung ist.





Aber manchmal tritt die Bewegung mit solchen Farben auf. Einige Figuren beginnen sich zu drehen, ausgehend von anderen werden „Zahnräder“ erhalten.



Fazit


In Zukunft wäre es interessant, die erhaltenen Zahlen zu vergleichen, um Statistiken über die Häufigkeit ihres Auftretens zu sammeln.

Sie können diese Regeln auch als Grundlage für die Erstellung komplexerer Kreaturen mit Nahrung, Fortpflanzung und Evolution verwenden.

Sie können daraus logische Schaltkreise erstellen, einen Taschenrechner erstellen, ein Prozessor ist besser nicht erforderlich.

Zu spielen


JS-Implementierung von v1vendi

Quellcode


Java-Code

Ähnlich cooles Zeug


Kosmos
Teilchenleben
Cluster

Source: https://habr.com/ru/post/de442128/


All Articles