2017-10-02 4 views
0

Siehe unten stehenden Code zur Bestimmung der Anzahl der besiedelten Schildkrötenhaufen (Rote und graue Schildkröten) aus einer Reihe von zufällig verteilten Sesshafte Schildkröten (schwarz), sowie die maximale, minimale und mittlere Clustergröße (radiale Ausdehnung) in einer Netlogowelt/Schnittstelle.Ermitteln der maximalen, minimalen und mittleren Schildkrötenhaufengröße sowie der Anzahl der Schildkrötenhaufen in Netlogo

globals[ cluster-size cluster-count cluster-size-growth cluster-count-growth ] 

to setup 
    clear-all 
    ask patches [ set pcolor white ] 
    create-turtles 1000 [ 
    set color black 
    set label-color blue 
    setxy random-xcor random-ycor 
    set cluster-size 1 
    ] 
    ask n-of 5 turtles [ 
    ask turtles in-radius one-of [1 2 3] [ 
     set color one-of [red grey] 
    ] 
    ] 
end 

to cluster-collect 
    let base-settlers turtles with [ color = red ] 
    let consp-settlers turtles with [ color = grey ] 
    ask base-settlers [ 
    set cluster-count count consp-settlers in-radius cluster-size 
    set cluster-size-growth cluster-size + 1 
    set cluster-count-growth count consp-settlers in-radius cluster-size-growth 
    if cluster-count >= 1 [ 
     ifelse (cluster-count-growth - cluster-count != 0) [ 
     set cluster-size cluster-size + 1 
     ][ 
     print count base-settlers with [ count turtles with [ color = grey ] >= 1 ] 
     ] 
    ] 
    ] 
    print [ max cluster-size-growth ] of base-settlers 
    print [ max cluster-count-growth ] of base-settlers 
    print [ mean cluster-size-growth ] of base-settlers 
    print [ mean cluster-count-growth ] of base-settlers 
    print [ min cluster-size-growth ] of base-settlers 
    print [ min cluster-count-growth ] of base-settlers 
    print [ standard-deviation cluster-size-growth ] of base-settlers 
    print [ standard-deviation cluster-count-growth ] of base-settlers 
    print [ variance cluster-size-growth ] of base-settlers 
    print [ variance cluster-count-growth ] of base-settlers 
end 

Der Fehler, den ich bekommen ist folgende: MAX expected input to be a list but got the number 10 instead. ich darauf wetten würde für die mittlere und min-Funktionen als auch das gleiche tun, weil es nicht basen Siedler erkennt als ein Mittel eingestellt. Irgendwelche Gedanken darüber, wie man diesen Code umwandeln kann, um die maximale, minimale und mittlere Clustergröße (radiales Ausmaß) und die Anzahl der gesetzten (roten und grauen) Schildkröten zu erhalten?

Antwort

3

Wenn Sie den Code ausführen, markiert NetLogo die Zeile, die den Fehler generiert. Die Problemlinie ist print max cluster-size-growth. Wenn Sie früher schauen, haben Sie vorher let cluster-size-growth cluster-size + 1 und let cluster-size 1. Also cluster-size-growth ist 1 + 1, oder die Nummer 2. Die Variable cluster-count-growth ist auch eine Nummer.

Ich denke (aber bin mir nicht sicher), dass Sie versuchen, diese beiden Variablen für jede Schildkröte zu berechnen und dann die Max/Mittelwert/min über die Schildkröten des gleichen Typs zu nehmen. Wenn dies der Fall ist, müssen Sie zuerst die Variable für alle Schildkröten erstellen (also die ask []-Anweisung beenden) und dann so etwas wie print max cluster-size-growth of base-settlers machen. Sie müssen möglicherweise auch turtle-own Variablen für diese festlegen, da die lokalen Variablenwerte am Ende des ask [] Blocks verloren gehen.

+0

Ich mache die Cluster-Variablen global, aber es scheint Netlogo hat immer noch ein Problem mit der 'print max Cluster-Größe-Wachstum von Basis-Siedler 'auch außerhalb der' ask [] 'Befehl. Der Fehler, den ich bekomme, ist 'MAX erwarteter Eingang, um eine Liste zu sein, aber erhielt die Zahl 11 stattdessen. ' – nigus21

+2

Das ist, weil Sie das' max' innerhalb des [] haben. Probieren Sie 'print max [cluster-size-growth] von Basis-Siedlern aus. Entschuldigung, ich habe in meinem ursprünglichen Kommentar keine korrekte Syntax verwendet. – JenB

Verwandte Themen