Dies ist mein erster Versuch, etwas „ernst“ in Netlogo zu tun, und ich versuche, die folgenden zu tun:Verwaltung Zeiträume in NetLogo
nach einem gewissen tick, mein Schildkröten Kauf Sachen beginnen und sie füllen eine Liste der Preise, die sie bezahlt haben (die Liste ist individuell). Ich möchte, dass sie aufhören zu kaufen, wenn der Mittelwert der Liste für eine bestimmte Anzahl von Ticks unter einem bestimmten Schwellenwert bleibt.
Meine Frage ist: Wie kann ich zählen Ticks in einem solchen Fall? Diese
ist, was ich dachte:
ifelse mean exePriceList < exePrice [set exitList lput who exitList]
[set exitList []]
if length exitList > exitTime [set buy false set sell false set pass
true]
Im Grunde das ist, was ich tue: Ich füge ein Element (I der Länge der Liste nur Pflege) auf eine andere Liste Ausgangslisten (die aufgerufen wird, nicht eine globale Variable aber es ist eine Schildkröten-eigene, und ich leere die Liste, wenn der Mittelwert höher als die Schwelle wird. Wenn die Liste länger als die gewünschte Anzahl von Ticks ist, stoppt die Schildkröte.
Es funktioniert nicht, da die exitList nicht ordnungsgemäß ausgefüllt ist. Was kann ich tun? Gibt es eine klügere Möglichkeit, die Zeit zu verwalten? Dies ist der Code des gesamten Verfahrens:
to bull-strategy
ask turtles with [bull = true] [
set color green
if ticks >= HFAentranceTime + startChecking [
if mean exePriceList > exePrice + (exePrice * stopLossBull) [set buy false
set sell false set pass true]
ifelse mean exePriceList < exePrice [set exitList lput who exitList] [set
exitList []]
if length exitList > exitTime [set buy false set sell false set pass
true]
]
]
end
Sie verwenden eine Liste als Turtle-Variable zum Überprüfen der Uhrzeit. Aber warum? Möchten Sie die Liste später für etwas anderes verwenden? Denn sonst könntest du einfach eine normale Counter-Variable verwenden, wie ifselse ... [set turtle-exit-time (turtle-exit-time + 1)] [set turtle-exit-time 0] – Tyr
Danke Tyr. Ich benutze jetzt eine Variable anstelle einer Liste, aber mein Problem bleibt: Die Variable wächst unglaublich schnell, es ist wie wenn alle Schildkröten auf der gleichen Variablen zählen und schreiben, deren Wert für alle Schildkröten gleich ist. – sato
exePriceList ist schildkrötenspezifisch und für jede Schildkröte anders (sie kaufen nicht unbedingt bei jedem Tick und sie kaufen zu unterschiedlichen Preisen). Daher sollte der Mittelwert der Liste für jede Schildkröte unterschiedlich sein, und sie sollten ihren eigenen Zähler einzeln erhöhen. – sato