2016-04-13 6 views
0

Ich versuche ein archäologisches Modell zu erstellen, in dem Jäger Bilder in Schutzräumen machen, abhängig von ihrer Qualität.Variablen in verschiedenen Rassen

breed [shelters shelter] 
breed [hunters hunter] 
shelters-own [quality paintings] 

Der Wert jeder Schlupf Qualität wird in der Einrichtung (mit einem Schieberegler für die tatsächliche Anzahl von Unterstell) eingestellt.

create-shelters number-shelters [set quality random 100] 

Die Wirkung der Malerei-oder-nicht durch zufällige definiert wird dann gegen die Qualität der einzelnen Unterschlupf:

to make-painting 
    ask shelters [ 
    if any? hunters-on patch-here [ 
     if random 100 < quality [set paintings paintings + 1] 
    ] 
    ] 
end 

Nun würde Ich mag es complexify ein bisschen mehr: die Qualität wouldn‘ Nicht durch den Unterschlupf selbst definiert (und somit für jeden Jäger derselbe), sondern von den Jägern: jeder von ihnen würde für jeden Unterschlupf eine andere Qualität angeben. Die Aktion von Malen oder Nicht wäre immer noch ein Test gegen Zufall, aber mit dieser neuen Variable, definiert durch jeden einzelnen Jäger ...

Aber ich kann keinen Weg finden, es richtig zu kodieren.

Hat jemand einen Vorschlag?

+0

Bewegen sich Jäger in verschiedene Unterstände? Willst du, dass ein bestimmter Jäger einem bestimmten Tierheim immer die gleiche Qualität zuweist? Wenn Sie möchten, dass die Bewertung beibehalten wird, müssen Sie sie speichern, wenn sie eine zufällige Komponente enthält. (Leider können Tabellen Patches nicht als Schlüssel verwenden, aber Sie können den Patch-Ort als Liste von ganzen Zahlen eingeben.) – Alan

+0

Jäger bewegen sich zufällig und besuchen verschiedene Unterstände (ich habe das Modell gemacht, um zu stoppen, wenn ein Unterstand 100 Gemälde bekommt). In der Tat ist die Idee, dass, wenn es zum Beispiel 10 Unterstände gibt, jeder Jäger eine andere Variable von 10 Qualitätswerten haben würde, die vom Aufbau persistent sind. Wie speichern und rufen Sie diese Werte aus Patches ab? – gvanhavre

+0

Warum sollte man dann nicht jedem Jäger ein "Shelter" -Attribut geben, das eine Liste der Länge 10 (oder wie viele Unterstände man auch immer hat) und die Qualität jedes Tierheims in der Liste speichert. Um die Buchhaltung zu vereinfachen, könnten Sie jedem Unterstand einen Unterschlupfindex (z. B. 0 bis 9) zuweisen und diesen zum Indexieren der Liste verwenden. – Alan

Antwort

0

Ich denke, ich habe es richtig gemacht. Grundsätzlich hatte ich jeden Jäger eine Matrix mit Zufallszahlen zu erstellen. Die Größe ist 33x33, also geht es überall auf der Welt (musste es in einer Ecke beginnen, oder es werden negative Koordinaten).

create-hunters number-hunters [ 
    set color white 
    set size 1 
    setxy random-xcor random-ycor 
    set hunter-matrix matrix:make-constant 33 33 random 10 
] 
ask n-of number-shelters patches [ 
    sprout-shelters 1 [ 
    set color one-of base-colors 
    set size 1 
    set xpatch xcor set ypatch ycor 
] 

Dann, wenn sie einen Unterschlupf erreichen würden, ist der Wert in dieser Patch Stelle entsprechend würde extrahiert und verwendet werden, um Lack-oder-nicht.

ask patches [ 
    ask hunters-here [set quality matrix:get hunter-matrix xpatch ypatch] 
    let paintings-here sum [paintings] of shelters-here 
    if any? hunters-here and any? shelters-here [ 
    if random 10 < quality [ 
     ask shelters-here [ 
     set paintings paintings + 1] 
    ] 
    ] 
] 

Ich bin noch nicht ganz sicher, dass es tatsächlich tut, was ich denke, es tut, tho.

Verwandte Themen