Ich versuche, eine Schildkröte Suchfunktion zu codieren, wobei:Wie mache ich Schildkröten für Patches mit festgelegten Bedingungen in einem Satz suchen Radius
wenn sociability> = 0,5 und die lokale Patch-Dichte < Zieldichte
Suchen Sie dann im Umkreis Moves_per_tick nach einem Patch mit einer Differenz zwischen Dichte und Zieldichte, die kleiner ist als die Differenz zwischen der aktuellen Dichte und der Zieldichte.
Wenn eine existiert, dann gehe zu diesem Patch. Wenn keine existieren, dann mache eine zufällige Bewegung der Länge moves_per_tick
Aber ich bin nicht genug vertraut mit der NetLogo Sprache noch, um dies zu ermöglichen. Ich habe mir einige ähnliche Fragen angeschaut, aber keine von ihnen hat mich meinem Ziel nahe genug gebracht.
bin Abarbeiten ich zur Zeit diesen Code, die in vielerlei Hinsicht gebrochen:
to start_search_personality
let LD density
let AT (Target_density * sociability)
let C_D (AT - LD)
if sociability >= 0.5
[
ifelse C_D >= 0
[
let P any? one-of patches with (patches in-radius moves_per_tick with [density] > LD)
if [density] of P > LD
[face p move-to p]]
[move-to patch-here]
]
Dichte von Patches und definiert als die Anzahl der Schildkröten im Patch gehört. Schildkröten besitzen eine Soziabilität, die einen Wert zwischen 0 und 1 darstellt. Zieldichte wird von woanders eingegeben und ist eine Ganzzahl.
Ich bitte niemanden darum, diesen Code zu debuggen, aber lassen Sie mich zumindest wissen, ob ich auf dem richtigen Weg bin oder vorschlagen, wo ich hinschauen soll. Vielen Dank!
Sie sagen, dass ein Patch diese Funktion aufruft? Da Dichte eine Patch-Variable ist? Wenn ja, wie kann sich ein Patch bewegen? Scheint es, als würden Sie die Definition der Patch-Dichte und die Anzahl der Schildkröten auf dem Patch mischen? – mattsap