Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1920:zweiter_gruppentermin_28.11.2019

Was wir heute gemacht haben:

- Nagel-Schreckenberg-Modell(1D Zellularautomat) in Python coden:

Das Nagel-SChreckenberg-Modell ist eine Stausimulation. Wir haben die vier Grundregeln auf eine Anfangskonfiguration angewandt und eine Endkonfiguration nach einem Zeitschritt bekommen.

Ziele für den nächsten Termin:

- Code optimieren (Programm in Funktion implementieren, evtl graphisch darstellen, evtl periodischen Randbedingungen ausprobieren)

import numpy as np
import random
import matplotlib.pyplot as plt

p=0.15
t=10

#fahrtrichtung rechts
#naechstes mal zeitliche implementierung

a=np.array([0,0,0,0,3,0,0,0,0,4,0,0,0,2,0,0,0,0,5])
b=np.array([0,0,0,0,3,0,0,0,0,4,0,0,0,2,0,0,0,0,5])
c=np.array([0,0,0,0,3,0,0,0,0,4,0,0,0,2,0,0,0,0,5])
g=np.array([0,0,0,0,3,0,0,0,0,4,0,0,0,2,0,0,0,0,5])
e=np.array([0,0,0,0,3,0,0,0,0,4,0,0,0,2,0,0,0,0,5])

print(a)
for k in range(t):

    a=e
    #erster zwischenschritt: 
    for i in range(len(a)):
        if a[i]>0 and a[i]<5:
            b[i]=a[i]+1


    #zweiter zwischenschritt:
    #plan für jede stelle
    #zahl mit differenz vergleichen
    #falls differenz kleiner als zahl 
    #zahl=differenz

    for i in range(len(a)):
        if b[i]>=1:
            #differenzmessen
            d=1
            while b[(i+d)%len(a)]==0:
                d=d+1

            if b[i]>=d:
                c[i]=d-1
            else:
                c[i]=b[i]




    #dritter zwischenschritt: 

    for i in range(len(a)):
        if c[i]<=1:
            continue
        else:
            if random.random() < p:
                g[i]=c[i]-1
            else:
                g[i]=c[i]



    #vierter zwischenschritt: 
    #

    for i in range(len(a)):
        if g[i]>0:
            e[i]=0
            e[(i+g[i])%len(a)]=g[i]
    
    print(e)



#print(b)
#print(c)
#print(g)

#zeile
ws1920/zweiter_gruppentermin_28.11.2019.txt · Zuletzt geändert: 2020/01/09 17:16 von hannariegel