2016-05-18 6 views
0

Ich habe eine Box gebundene Welt in Netlogo und meine Schildkröten bewegen sich so, wie ich will, aber einige bleiben an der Wand hängen, die andere zieht (ich benutze das Flocking-Modell als Rückgrat), bis alle Schildkröten an einer Wand kleben und sich nicht mehr bewegen. Ich habe versucht, in Go einen "wall_jump" einzubauen, aber es hilft nicht, wenn zu viele Flockkameraden an der Wand stehen, also habe ich einen weiteren Block eingebaut, um Flockmates von der Wand abprallen zu lassen, aber das schien keine Wirkung zu haben. Wenn Sie das gesamte Problem neu erstellen möchten, öffnen Sie das Beflockungsmodell und schließen Sie die Weltgrenzen in.Wie schleppe ich Schildkröten von der Weltgrenze in Netlogo

Wie haben andere dieses Problem gelöst?

to wall_jump 
    ifelse any? flockmates 
    [ 
    if ycor >= max-pycor * 0.95 [set heading (random-normal 180 2)] 
    if xcor >= max-pxcor * 0.95 [set heading (random-normal 270 2)] 
    if xcor <= min-pxcor * 0.95 [set heading (random-normal 90 2)]   
    if ycor <= min-pycor * 0.95 [set heading (random-normal 0 2)]   
    ] 

    [if ycor >= max-pycor * 0.95 [set heading (random-normal 180 2)] 
    if xcor >= max-pxcor * 0.95 [set heading (random-normal 270 2)] 
    if xcor <= min-pxcor * 0.95 [set heading (random-normal 90 2)]   
    if ycor <= min-pycor * 0.95 [set heading (random-normal 0 2)]   
    ] 
    end 
+0

Was ist der Unterschied zwischen Ihrer if-Anweisung und Ihrer else-Anweisung? – mattsap

+0

Flockmates ist eine Übertragung aus dem "Beflockungs" -Modell, dem ich zugrunde lege, es gehört den Schildkröten. Grundsätzlich identifizieren sie Schildkröten in der Nähe von ihnen als Flockkameraden, dann bestimmen sie ihre neue Überschrift basierend auf dem durchschnittlichen Kurs ihrer Schwarmkameraden. Mit dieser Aussage wollte ich nur sagen, ob du irgendwelche Schwarmkameraden in der Nähe hast oder nicht, entscheide dich für eine neue Überschrift auf die gleiche Weise, weil du an einer Wand festgeklebt bist. Es funktioniert nicht obwohl – Jesse001

Antwort

2

Dieses Problem wird in dem Zufall Ball Modell (in der NetLogo Modellen Bibliothek) gelöst: http://ccl.northwestern.edu/netlogo/models/RandomBalls

Obwohl nicht direkt mit Ihrem Problem zu tun hat, es scheint, dass Sie es interessant, wie gut finden könnten, betrachten das Heroes and Cowards-Modell, das Wall-Clustering (im Cowards-Modus) erzeugt: http://ccl.northwestern.edu/netlogo/models/HeroesandCowards

+0

Danke für das Zeigen von mir auf diese Modelle Alan. Ich passte mein Modell an die Anforderungen ihrer Lösungen an, die einfach auf gesetzt wurden, wenn abs pxcor = max-pxcor [eingestellte Überschrift (- Überschrift)] wenn abs pycor = max-pycor [eingestellte Überschrift (180 - Überschrift)] ' was funktioniert, aber nur, wenn Ihre Herkunft in der Mitte ist (meins war an einer Ecke). Am Ende habe ich meinen Schildkröten gesagt, dass sie am linken Rand spawnen sollten, durch eine sekundäre Funktion, die ich teilen kann, wenn sie jemand braucht – Jesse001