Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1314:cellulaere_automaten

Zelluläre Automaten

1 Wie alles begann

  1.0 Gruppenmitglieder
  1.1 Wohin?
  1.2 Forschungsbeginn
  1.3 Erwartungen, Ziele

2 Forschungsarbeit

  2.1 A new kind of thinking
      2.1.1 Zelluläre Automaten
      2.1.2 Game of life
  2.2 Grundlagenforschung
  2.3 Matplotlib Erfahrungen
  2.4 Probleme
  

3 Erkenntnisse

  3.1 Grundlagenforschung
  3.2 

1 Wie alles begann

1.0 Gruppenmitglieder Nico unnötig, aber Diamant 5 Josh treibende Kraft Bruno zeitlich begrenzte Mitgliedschaft Konstantin Babo in curve fever Jasper

1.1 Wohin? Unsere Gruppe fand sich über das Mitglieder-übergreifende Interesse an Zellulären Automaten und die damit verbundene Forschungsarbeit in der Mikrobiologie, Chemie aber auch Gebäude und Stadtplanung. Wir waren doch anfangs nicht dazu in der Lage unserer tatsächlich angepeiltes Ziel in eine eindeutige prägnante Form zu bringen, was letztlich zu unserem Verhängnis im Fortschritt unserer Arbeit wurde. Es blieb also vorerst bei einer weitgehend diffusen Idee und bei einem Brainstorming, welches in seiner 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 -Verkehrssimulationsmodelle -Chaos -Mustererkennung -Symetrie -Diffs

(die Textbausteine wurden direkt aus den Googledocs kopiert)

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. 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.3 Anfang und Ende stellten wir uns in folgender Form vor: 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 (Kopie aus den Googledocs) Wie hier noch mal eindeutig zu erkennen ist waren wir nicht in der Lage uns auf ein spezielles Thema zu beschränken sondern holten mehr oder weniger zum wissenschaftlichen Rundumschlag aus. Wie gewöhnlich bei einem Start in ein Projekt, ins unbekannte machten wir uns viele Hoffnungen und dachten die Neugier würde uns schon dazu treiben genug Zeit in unser Projekt zu stecken, doch ließ das übrige Studium uns wenig Freiraum und das Labor geriet in den sekundären Wichtigkeitsbereich. Unsere Erwartungen waren überschwänglich und färbten auf die Zielsetzung maßgeblich ab. Das ließ unser Projekt in eine Art Utopie mutieren, welche wir erst vor kurzem (Stand Januar 22, 2014) endlich ablegen konnten. Unsere jetzigen Ziele und Hoffnungen liegen hauptsächlich in der Diffusion, doch stehen immer noch viele grundsätzliche programmiertechnische Probleme im Wege.

2 Forschungsarbeit

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.

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()
ws1314/cellulaere_automaten.txt · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)