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:35]
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
Zeile 35: 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 47: Zeile 47:
 -Diffs -Diffs
  
- 
-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)
Zeile 84: 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.1390502141.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)