Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1314:cellulaere_automaten

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1314:cellulaere_automaten [2014/01/23 19:32]
jasper.felix
ws1314:cellulaere_automaten [2016/05/10 14:46] (aktuell)
Zeile 22: Zeile 22:
  
 1.0 Gruppenmitglieder 1.0 Gruppenmitglieder
-    Nico unnötig, aber Platin 1 +__Nico__ ​unnötig, aber Diamant 5 
-    ​Josh ​treibende Kraft +__Josh__ ​treibende Kraft 
-    ​Bruno ​zeitlich begrenzte Mitgliedschaft +__Bruno__ ​zeitlich begrenzte Mitgliedschaft 
-    ​Konstantin ​Babo in curve fever +__Konstantin__ ​Babo in curve fever 
-    ​Jasper ​+__Jasper__  
 1.1 Wohin? 1.1 Wohin?
 Unsere Gruppe fand sich über das Mitglieder-übergreifende Interesse an Zellulären Automaten Unsere Gruppe fand sich über das Mitglieder-übergreifende Interesse an Zellulären Automaten
Zeile 34: Zeile 35:
 was letztlich zu unserem Verhängnis im Fortschritt unserer Arbeit wurde. was letztlich zu unserem Verhängnis im Fortschritt unserer Arbeit wurde.
 Es blieb also vorerst bei einer weitgehend diffusen Idee und bei einem Brainstorming,​ Es blieb also vorerst bei einer weitgehend diffusen Idee und bei einem Brainstorming,​
-welches in seiner ​Erstes Brainstorming:+welches in seiner ​Vielfältigkeit jedweden Rahmen sprengte. Es folgen unsere anfänglichen Gedanken in Stichworten zusammengefasst:
  
 -Erstellung eines “(erzeuger)-Interaktiven” Programmes -Erstellung eines “(erzeuger)-Interaktiven” Programmes
Zeile 45: Zeile 46:
 -Symetrie -Symetrie
 -Diffs -Diffs
-http://​www.chaos.org.uk/​~eddy/​craft/​weblife.html 
  
-Anfang:  
--Zum allgemeinen Verständnis zeitlich befristete Beschäftigung mit Conways ​  game of life als     ​einfachstes Prinzip des zellulären Automaten, Analyse eines vorgegebenen Quelllcodes ​ 
-Ziele:  
--Verständnis des Prinzips der Visualisierung des zellulären Automaten, Darstellungsmöglichkeiten zur Simulation von Verkehr, Population, mathematischen Prinzipien entwickeln, graphische Darstellungsmöglichkeiten,​ siehe Brainstorming Vielfältigkeit jedweden Rahmen sprengte. Es folgen unsere anfänglichen Gedanken in Stichworten zusammengefasst:​ 
- 
--Erstellung eines “(erzeuger)-Interaktiven” Programmes 
--Arbeit mit zellulärem Automaten ​ 
--beispielsweise game of life, shelling model 
--gegebenenfalls,​ wenn möglich Analyse echter Daten oder an Bildverarbeitung gekoppelt 
--Verkehrssimulation-Modelle 
--Chaos 
--Mustererkennung 
--Symmetrie 
--Diffusion 
--Differentialleichungen 
  
 (die Textbausteine wurden direkt aus den Googledocs kopiert) (die Textbausteine wurden direkt aus den Googledocs kopiert)
  
-1.3+1.2
 Tatsächlich begannen wir auch mit dem Versuch Zelluläre Automaten erst ein mal grundsätzlich zu verstehen und uns mit typischen Quellcodes vertraut zu machen. Beispielsweise mit dem Conways Game of Life, welches auch später noch nähere Erwähnung findet. Tatsächlich begannen wir auch mit dem Versuch Zelluläre Automaten erst ein mal grundsätzlich zu verstehen und uns mit typischen Quellcodes vertraut zu machen. Beispielsweise mit dem Conways Game of Life, welches auch später noch nähere Erwähnung findet.
 Zu dem Oberthema Zelluläre Automaten fand sich eine Umfassende Anzahl an Informationen im Netz und wir wurden von Stefan mit verschiedenen Ausführungen des Game of Life langsam zu unserem Thema hingeleitet. Zu dem Oberthema Zelluläre Automaten fand sich eine Umfassende Anzahl an Informationen im Netz und wir wurden von Stefan mit verschiedenen Ausführungen des Game of Life langsam zu unserem Thema hingeleitet.
-1.4+ 
 +1.3
 Anfang und Ende stellten wir uns in folgender Form vor: Anfang und Ende stellten wir uns in folgender Form vor:
 Anfang:  Anfang:
Zeile 82: Zeile 68:
 2 Forschungsarbeit 2 Forschungsarbeit
  
-2.2 A new kind of thinking+2.2 A new kind of science 
 + 
 +Echtzeit Forschungsfortschritt:​ 
 +06.02.2014:​ 
 +Animation des eindimensioalen Zellulären Autmaten 
 +Diskussion über Entropie, dissipative Systeme und Alterung 
 +Entdeckung einer zocker Bar, Berlusov skzxabotzinski 
 + 
 +Zielvorstellungen:​ die richtige Regel,  
 + 
 +der untenstehende Code ist der Grundbaustein zur Forschungsreihe an unserem "​finalen"​ Automaten. 
 +Wir haben uns, inspiriert vom Artikel "​Emergence of Macro Spatial Structures in Dissipative Cellular Automata"​ von Andrea Rolli und Franco Zambonelli, dazu entschieden uns mit sogenannten "​Dissipativen Zellulären Automaten"​ zu beschäftigen. 
 +Diese bieten sich an, da 
 +(1) wir uns im Vorfeld, durch Implementierung von "Game of Life" technisch gut auf diese Klasse von Zweidimensionalen CA's vorbereitet haben und (2) wir durch die diskussion der Berlusov-Zhabotinski-Reaktion und anderer "​dissipativer Strukturen"​ auch theoretische Grundlagen haben. 
 + 
 +Wir möchten speziell vollkommen diskrete DCA's erforschen, da für uns einer der faszinierensten Aspekte von CA's es ist aus der vermeintlichen einfachheit von 1 und 0 nahezu unbegränzte Komplexität emergieren zu lassen. 
 + 
 +Wie wir bisher die Struktur diskreter DCA's verstanden haben und implementieren wollen, ist die folgende: 
 + 
 +eine 2-dimensionale Welt wird durch zufälliges Anordnen von '​lebenden'​ und '​toten'​ diskreten Zellen erzeugt. 
 + 
 +Nun gibt es ein '​innere'​ Verhaltensweise (UpdateRegel) der Zellen, die asynchron pro diskretem Zeitschritt,​ eine einzelne Zelle updated. Diese Regel wird, ungestört, zu einem equilibralen Zustand der Welt führen. 
 + 
 +Weiterhin gibt es einen zweiten '​äußeren'​ Einfluss (UpdateRegel) der '​Umwelt',​ der durch paralleles, ebenfalls asynchrones updaten einzelner Zellen, die '​innere'​ Regel stört und so das System vom Equilibrium '​fernhält'​. 
 + 
 +Wir interessieren uns insbesondere für das Verhältniss der beiden parallelen updatefunktionen und deren Einfluss auf die räumliche Anordnung der Zellen des Systems. 
 + 
 +     
 +<code python>​ 
 +import numpy as np 
 +import matplotlib.pyplot as plt 
 +  
 +x = 50 
 +y = 50 
 +  
 +def setup(x,​y):​ 
 +    Z = np.random.randint(2,​ size = (x,y)) 
 +    return Z 
 +  
 +  
 +def deamon(x,​y):​ 
 +    return (np.random.randint(x),​np.random.randint(y)) 
 +  
 +def updateB(Z):​ 
 +    i,j = deamon(x,​y) 
 +    k = (Z[(i-1)%x,​(j-1)%y]+Z[(i-1)%x,​j]+Z[(i-1)%x,​(j+1)%y]\ 
 +        +Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+\ 
 +        Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y])+Z[(i+2)%x,​j]+\ 
 +        +Z[(i-2)%x,​j]+Z[i,​(j+2)%y]+Z[i,​(j-2)%y] 
 +    if Z[i,j] == 1: 
 +        if (k < 3 or k > 6): 
 +            Z[i,j] = 0 
 +    else: 
 +        if k == 6: 
 +            Z[i,j] = 1 
 +    return Z 
 + 
 +def updateA(Z):​ 
 +    i,j = deamon(x,​y) 
 +    k = (Z[(i-1)%x,​(j-1)%y]+Z[(i-1)%x,​j]+Z[(i-1)%x,​(j+1)%y]+Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y]) 
 +    if Z[i,j] == 1: 
 +        if (k > 3) or (k < 2): 
 +            Z[i,j] = 0 
 +    else: 
 +        if k == 3: 
 +            Z[i,j] = 1 
 +    return Z 
 + 
 +A = setup(x,​y) 
 + 
 +plt.ion() 
 + 
 +im=plt.imshow(A,​interpolation='​nearest',​ cmap = plt.cm.gray_r) 
 +plt.xticks([]),​plt.yticks([]) 
 + 
 +for s in range(10000000):​ 
 + A = updateB(A) 
 + if s%100 == 0: 
 + im.set_data(A) 
 + plt.draw() 
 + 
 +plt.ioff() 
 +plt.show() 
 + 
 + 
 +#für josh!: 
 +#codezeilen die du wolltest 
 +#viel spaß 
 +import numpy as np 
 +import matplotlib.pyplot as plt 
 +  
 +x = 100 
 +y = 100 
 +  
 +def setup(x,​y):​ 
 +    #'''​Erstellung der Welt mit Zuflliger An/Aus Verteilung ​ '''​ 
 + Z = np.random.randint(2,​ size = (x,y)) 
 + return Z 
 +  
 +  
 +def deamon(x,​y):​ 
 + #'''​Whlt zufllige Zelle fr asynchrones Update aus '''​ 
 + return (np.random.randint(x),​np.random.randint(y)) 
 +  
 +def intrinsic(Z,​ rule, mode): 
 + i,j = deamon(x,​y) 
 + if mode == '​2-radial':​ 
 + k = (Z[(i-1)%x,​(j-1)%y]+Z[(i-1)%x,​j]+Z[(i-1)%x,​(j+1)%y]\ 
 + +Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+\ 
 + Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y])+Z[(i+2)%x,​j]+\ 
 + +Z[(i-2)%x,​j]+Z[i,​(j+2)%y]+Z[i,​(j-2)%y] 
 + if mode == '​Moore':​ 
 + k =(Z[(i-1)%x,​(j-1)%y]+Z[(i-1)%x,​j]+Z[(i-1)%x,​(j+1)%y]\ 
 + +Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+\ 
 + Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y]) 
 + if rule=='​Diagonal':​ 
 + if Z[i,j] == 1: 
 + if (k < 3 or k > 6): 
 + Z[i,j] = 0 
 + else: 
 + if k == 6: 
 + Z[i,j] = 1 
 + if rule=='​Life':​ 
 + if Z[i,j] == 1: 
 + if (k > 3) or (k < 2): 
 + Z[i,j] = 0 
 + else: 
 + if k == 3: 
 + Z[i,j] = 1 
 + if rule == '​Striche':​ 
 + if Z[i,j] ==1: 
 + if k > 2: 
 + Z[i,j] = 0 
 + else: 
 + if k == 2: 
 + Z[i,j] = 1 
 + return Z 
 + 
 + 
 +def environment(Z):​ 
 + i,j = deamon(x,​y) 
 + Z[i,j] = 1 
 + return Z 
 + 
 + 
 +A = setup(x,​y) 
 +stoer = (True, 21) 
 +plt.ion() 
 + 
 +im=plt.imshow(A,​interpolation='​nearest',​ cmap = plt.cm.gray_r) 
 +plt.xticks([]),​plt.yticks([]) 
 + 
 +for s in range(10000000):​ 
 + A = intrinsic(A,​ '​Diagonal',​ '​2-radial'​) 
 + if stoer[0] == True: 
 + if s%stoer[1] == 0: 
 + A = environment(A) 
 + if s%100 == 0: 
 + im.set_data(A) 
 + plt.draw() 
 + 
 +plt.ioff() 
 +plt.show() 
  
 +</​code>​
ws1314/cellulaere_automaten.1390501966.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)