2016-06-23 11 views
2

Ich würde gerne fragen, wie ich Patches einrichten kann.Netlogo-Patch von Entfernung von einem bestimmten Patch betroffen

Ausgangszustand ist ein roter Fleck an einem bestimmten Punkt. Die anderen Patches werden von einer Entfernung vom roten Patch betroffen sein. Mit der Entfernung wird die Wirkung größer sein.

Es könnte nicht einfach als Anfänger sein. bitte hilf mir!

+0

Siehe http://stackoverflow.com/questions/37856220/in-netlogo-can-i-ask-agents-to-die-along-a-gradient-from-a-central-patch für eine sehr ähnliche Frage und antworte. –

Antwort

1

Herausgegeben Nicholas' beglückwünscht

to example 

    let red-patch one-of patches with [pcolor = red] 

    ask red-patch [ 
    ask other patches [ 
     if random-float 1 > (distance red-patch/(max [distance red-patch] of patches)) 
     [set pcolor blue] 
    ] 
    ] 
end 

Dies würde es sein, einen Farbverlauf enthalten, so dass sie eher zu blauen je näher sie an den roten Flecken sind. Das Umdrehen der> auf eine < invertiert einfach den Effekt.

+2

Es gibt einen kleinen Fehler in diesem Code: nur das erste Auftreten von 'myself' bezieht sich auf den roten Patch. Der zweite 'selbst', der sich in einem' of' Block befindet, bezieht sich auf den aktuellen Patch aus dem 'ask other patches' Block. Es funktioniert trotzdem, denn wenn der Weltumbruch eingeschaltet ist, ist der maximale Abstand zwischen zwei Patches gleich. Wenn das World-Wrapping deaktiviert ist, variiert die maximale Entfernung von Patches von Patch zu Patch. Ich würde vorschlagen, mit "red-patch one-of patches mit [pcolor = red]" zu beginnen und explizit auf den roten Patch zu verweisen. 'selbst' ist knifflig! –

+0

Gah, danke. Dummer Fehler. –

+1

Nein, nicht so dumm; Es ist sehr leicht zu übersehen, dass ein "of" -Block den Kontext ändert, auf den "myself" bezogen ist. –