Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren

Ich habe den Code geschrieben, um die Entwicklung des eindimensionalen Zellautomaten in Python zu zeichnen. Schließlich wird das Ergebnis der Ausführung mit einigen Regeln veröffentlicht.

Zellenautomat

Der Zellularautomat entwickelt den Zustand einer Zelle nach einer lokalen Regel, bei der es sich um einen Physiker [Stephen Wolfram] handelt (https://ja.wikipedia.org/wiki/%E3%). 82% B9% E3% 83% 86% E3% 82% A3% E3% 83% BC% E3% 83% 96% E3% 83% B3% E3% 83% BB% E3% 82% A6% E3% 83% AB% E3% 83% 95% E3% 83% A9% E3% 83% A0) und Mathematiker [John Horton Conway](https://ja.wikipedia.org/wiki/%E3%82%B8%E3% 83% A7% E3% 83% B3% E3% 83% BB% E3% 83% 9B% E3% 83% BC% E3% 83% 88% E3% 83% B3% E3% 83% BB% E3% 82% Seine Eigenschaften wurden von B3% E3% 83% B3% E3% 82% A6% E3% 82% A7% E3% 82% A4) et al. Durch Ändern der Regeln können verschiedene Naturphänomene nachgeahmt werden, und das zweidimensionale wird als "Lebensspiel" bezeichnet.

Regel

Untitled Diagram.png

Die Regeln für eindimensionale Zellautomaten sind nummeriert. Zum Beispiel ist die Regel, die als Regel 214 bezeichnet wird, wie in der obigen Abbildung gezeigt. Wenn Sie sich nicht sicher sind, lesen Sie bitte diesen Artikel für Details.

In Python implementiert

Lassen Sie uns die obige Regel implementieren.

1d_ca.py


import matplotlib.pyplot as plt

def cellautomaton(l_bit, rule, pattern=False, padding=0):
    # pattern:Periodische Randbedingung, padding:Wert der Zellen außerhalb des Rahmens
    l_bit_new = []
    if not pattern:
        l_bit = [padding] + l_bit
        l_bit.append(padding)
    else:
        l_bit = [l_bit[-1]] + l_bit
        l_bit.append(l_bit[1])
    for i in range(1, len(l_bit)-1):
        l_bit_new.append(next_state(l_bit[i-1],l_bit[i],l_bit[i+1], rule))
    return l_bit_new

def next_state(l, x, r, rule):
    #Bestimmen Sie den Status der nächsten Zelle
    bin_str = format(rule, '08b')
    bin_num = int(str(l)+str(x)+str(r), 2)
    return int(bin_str[-(bin_num+1)])

def main():
    result = []
    loop = 200
    rule = 110 #Regelnummer(0~255)

    ##Geben Sie den Anfangszustand in Liste x an
    x = [0]*200
    x[-1] = 1
    result.append(x)
    for i in range(loop):
        x = cellautomaton(x, rule, pattern=False)
        result.append(x)
    plt.figure()
    plt.title("rule{}".format(rule))
    plt.imshow(result, cmap="binary")
    plt.show()

main()

Standardmäßig ist es 100 lang und nur die Zelle ganz rechts ist ein eindimensionales Array mit 1 und 0. Es ist interessant, damit herumzuspielen und es zu ändern. Verwenden wir zum Schluss diesen Code, um ein Beispiel mit einigen Regeln zu sehen.

Regel 30

[Stephen Wolfram](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82%A3%E3%83%BC%E3%83%96%E3% 83% B3% E3% 83% BB% E3% 82% A6% E3% 83% AB% E3% 83% 95% E3% 83% A9% E3% 83% A0) hat vier Verhaltensweisen eines eindimensionalen Zellautomaten Es ist in Klassen eingeteilt. Einfach ausgedrückt sieht es so aus:

Regel 30 ist eine chaotische Regel der Klasse 3. rule30.png

Sie können sehen, dass das Muster kompliziert ist und keine Periodizität aufweist.

Regel 90

Regel 90 ist eine Regel der Klasse 3, die eine fraktale Figur zeichnet, die als Sylpinsky-Dichtung bezeichnet wird. rule90.png Eine fraktale Figur ist eine Figur, bei der eine ähnliche Form auftritt, wenn sie vergrößert / verkleinert wird.

Regel 110

Regel 110 ist eine Regel der Klasse 4, die einen Zwischenzustand zwischen periodisch und chaotisch einnimmt.

rule110.png

Sie können sehen, dass es Periodizität hat und nach einer Weile bricht. Es ist bekannt, dass die Dynamik zwischen dieser Ordnung und dem Chaos häufig in natürlichen Phänomenen zu finden ist, und es ist möglich, eine Steuermaschine zu imitieren, indem die reichhaltige Dynamik in solchen Bereichen verwendet wird.

das ist alles. Es gibt viele andere Regelformen, wie z. B. dieser Artikel. Als praktisches Beispiel scheint es, dass es manchmal in Verkehrssimulationen wie [diesem Artikel] verwendet wird (https://qiita.com/gushwell/items/767112fcf1c725632113).

Verweise

[Illustriertes Trivia-Komplex-System (Natsume, Norio Konno)](https://hb.afl.rakuten.co.jp/ichiba/1bc63814.31bba873.1bc63815.5874eb3b/?pc=https%3A%2F%2Fitem.rakuten. co.jp% 2Fcomicset% 2F4816323899% 2F & link_type = hybrid_url & ut = eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjB9)

Recommended Posts

Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, ein missverstandenes Gefangenendilemma in Python zu implementieren
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Ich habe versucht, Trumps Kartenspiel in Python zu implementieren
Ich habe versucht, Drakues Poker in Python zu implementieren
Ich habe versucht, GA (genetischer Algorithmus) in Python zu implementieren
Ich habe versucht, ein scheinbar Windows-Snipper-Tool mit Python zu implementieren
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, das Blackjack of Trump-Spiel mit Python zu implementieren
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Implementieren Sie einen deterministischen endlichen Automaten in Python, um Vielfache von 3 zu bestimmen
Ich möchte mit Python ein Fenster erstellen
Ich habe versucht, mit Python ein Tippspiel zu spielen
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Ich habe versucht, die Bayes'sche lineare Regression durch Gibbs-Sampling in Python zu implementieren
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, StarGAN (1) zu implementieren.
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich möchte eine Variable in einen Python-String einbetten
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Ich möchte eine Datei mit Python zufällig testen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich möchte mit einem Roboter in Python arbeiten.
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich habe versucht, die Zusammenführungssortierung in Python mit möglichst wenigen Zeilen zu implementieren
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren
Ich habe versucht, das grundlegende Modell des wiederkehrenden neuronalen Netzwerks zu implementieren
Ich habe versucht, Deep VQE zu implementieren
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Ich habe versucht, Python zu berühren (Installation)
[Markov-Kette] Ich habe versucht, die Zitate in Python einzulesen.
Ich habe versucht, eine kontroverse Validierung zu implementieren
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe eine Klasse in Python erstellt und versucht, Enten zu tippen
Ich habe versucht, Realness GAN zu implementieren
Eine Geschichte über den Versuch, private Variablen in Python zu implementieren.
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich habe Line Benachrichtigung in Python versucht
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Ich habe versucht, "ein Herz, auch wenn es getrennt ist" mithilfe eines genetischen Algorithmus in Python zu automatisieren
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".