Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss19:mutationen_kreaturen_eineeigenschaft_leander

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
ss19:mutationen_kreaturen_eineeigenschaft_leander [2019/05/28 13:55]
leanderh angelegt
ss19:mutationen_kreaturen_eineeigenschaft_leander [2019/06/05 14:00] (aktuell)
leanderh
Zeile 1: Zeile 1:
-[code]+<code>
 import random import random
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt
Zeile 5: Zeile 5:
  
 def geschw(m,​w):​ def geschw(m,​w):​
-    a=random.choice(range(0,​10))+    a=random.choice(range(0,​10))  #a bestimmt, ob der Nachkomme von m und w mutiert(Wahrscheinlichkeit von 1/10)
     if a==0:     if a==0:
-        b=random.choice(range(-9,​10)) +        b=random.choice(range(-9,​10)) ​ #b bestimmt, um wie viel er mutiert 
-        x=(m+w)/​2+0.01*b*((m+w)/​2)+        x=(m+w)/​2+0.01*b*((m+w)/​2) ​    #neuer Wert setzt sich im Falle der Mutation aus m,w und b*((m+w)/​2),​ letzteres um zu verhindern, dass der Wert unter 0 fällt.
     else:     else:
         x=(m+w)/2         x=(m+w)/2
-    return x+    return x  #x wird als Wert der Eigenschaft für den Nachkommen zurückgegeben.
  
-v=1    +def werte(el1,​el2):​ 
-N=200 +    global ma  #der größte Wert innerhalb einer Generation 
-n=0 +    global mi  #der kleinste Wert innerhalb einer Generation 
-m=0 +    global du  #der addierte Wert aller Wesen einer Generation 
-M=1000 +    if el1<​el2: ​     #wenn el2 größer ist 
-liste1=[] +        if el2>​ma: ​  #​prüfe,​ ob es auch größer als das bisherige größte Element dieser Generation ist, 
-liste2=[] +            ma=el2 ​  #ist dies der Fall, setze el2 als neues ma ein 
-mage=[] +        if el1<​mi: ​  #​prüfe außerdem, ob el1 kleiner als das bisherige kleinste Element dieser Generation ist, 
-mige=[] +            mi=el1 ​  #ist dies der Fall, setze el1 als neues mi ein 
-duge=[] +    else:            #ist el1 größer als el2, prüfe das ganze andersrum 
-runde=[] +        if el1>​ma:​ 
-while n<N:+            ma=el1 
 +        if el2<​mi:​ 
 +            mi=el2 
 +    du=du+el1+el2 ​  #​addiere die beiden Werte der Wesen zu du hinzu 
 + 
 + 
 +v=1     #​Anfangswert der Eigenschaften für alle ürsprünglichen Wesen    
 +N=500  #Anzahl der männlichen und weiblichen Wesen 
 +n=0     #Zähler für erstellen der Liste von Kreaturen 
 +m=0     #Zähler für Runde 
 +M=1000 ​  #Anzahl der Runden 
 +liste1=[] ​ #​Liste der Wesen des Geschlechtes 1 
 +liste2=[] ​ #​Liste der Wesen des Geschlechtes 2 
 +mage=[] ​   #​Liste der Maximalgeschwindigkeit in jeder Runde 
 +mige=[] ​   #​Liste der Minimalgeschwindigkeit in jeder Runde 
 +duge=[] ​   #​Liste der durchschnittlichen Geschwindigkeit in jeder Runde 
 +runde=[] ​  #Liste der Runde 
 + 
 + 
 +while n<​N: ​ #​Erstellen von zwei gleichlangen Listen für die Eigenschaft v von den Wesen des Geschlechts 1 und 2
     liste1.append(v)     liste1.append(v)
     liste2.append(v)     liste2.append(v)
     n=n+1     n=n+1
 +    ​
 +
 while m<M: while m<M:
-    x=0 +    x=0          #​Zähler für das paaren aller Kreaturen beider Geschlechter ​ 
-    neuliste1=[] +    neuliste1=[] ​#Neue Liste der Wesen des Geschlechts 1 
-    neuliste2=[]+    neuliste2=[] ​#Neue Liste der Wesen des Geschlechts 2 
 +     
 +#Ab hier werden M Durchgänge lang zwei neue Listen erstellt, während die Kreaturen in den alten Listen sich jeweils zu zweit 
 +#paaren und ihre durchschnittlichen Eigenschaften an zwei Nachkommen weitergeben,​ welche in zwei Neue Listen gepackt werden
     while x<N:     while x<N:
-        l1=liste1[x] +        l1=liste1[x] ​  #l1 ist das x-te Element aus liste1 
-        l2=liste2[x] +        l2=liste2[x] ​  #l2 ist das x-te Element aus liste2 
-        neuliste1.append(geschw(l1,​l2)) +        neuliste1.append(geschw(l1,​l2)) ​ #​geschw paart zwei Kreaturen beider Geschlechter miteinander und lässt sie  
-        neuliste2.append(geschw(l1,​l2))  ​+        neuliste2.append(geschw(l1,​l2))  ​#einen Nachkommen zeugen, welcher zu einer der Listen hinzugefügt wird.
         x=x+1         x=x+1
-    ​ma=1 +         
-    mi=1 +    ​ma=v  #Das größte v eines Wesens einer Generation 
-    du=0 +    mi=v  #Das kleinste v eines Wesens einer Generation 
-    n=0+    du=0  #Den Wert aller Wesen einer Generation zusammenaddiert (zum späteren ermitteln des durchschnittlichen Wertes aller Wesen dieser Generation) 
 +    n=0   #Zähler 
 + 
 +#Nun werden die einzelnen Elemente der beiden neuen Listen auf das kleinste und größte Element untersucht und der Durchschnitt 
 +#aller Elemente gebildet
     while n<N:     while n<N:
-        el1=neuliste1[n] +        el1=neuliste1[n] ​#betrachte je das n-te Element von neulist1 
-        el2=neuliste2[n] +        el2=neuliste2[n] ​#und neulist2 
-        ​if el1<​el2:​ +        ​werte(el1,el2)   #​füre mit diesen werte aus
-            if el2>​ma:​ +
-                ma=el2 +
-            if el1<​mi:​ +
-                mi=el1 +
-        else: +
-            if el1>​ma:​ +
-                ma=el1 +
-            if el2<​mi:​ +
-                mi=el2 +
-        du=du+el1+el2+
         n=n+1         n=n+1
-    ​duge.append(du/​(2*N))+         
 +    ​duge.append(du/​(2*N)) ​ #​fülle die Listen mit den entsprechenden Elementen
     mage.append(ma)     mage.append(ma)
     mige.append(mi)     mige.append(mi)
     runde.append(m)     runde.append(m)
-    liste1=neuliste1 +    liste1=neuliste1 ​  #​überschreibe die listen der Elterngeneration 
-    liste2=neuliste2+    liste2=neuliste2 ​  #mit den Listen der Nachkommen
     m=m+1     m=m+1
 +    ​
 +    ​
 plt.plot(runde,​duge) plt.plot(runde,​duge)
 plt.plot(runde,​mage) plt.plot(runde,​mage)
 plt.plot(runde,​mige) plt.plot(runde,​mige)
-print(liste1) +#print(liste1) 
-print(liste2) +#print(liste2) 
-print(ma,​du/​(2*N),​mi)+print("​letzter Maximalwert:",​ma,"​letzter Durchschnittswert:"​,du/(2*N),"​letzter Minimalwert:"​,mi)
 plt.show plt.show
-[/code]+</code>
  
ss19/mutationen_kreaturen_eineeigenschaft_leander.1559044551.txt.gz · Zuletzt geändert: 2019/05/28 13:55 von leanderh