Ich habe Patches mit 3 Farben (gelb, grün und rot). Die grünen haben einen Rangwert. Ich möchte eine gegebene Anzahl ('n-Zellen') von entweder gelben oder grünen Flecken ('Kandidaten-Zellen') fragen, um rot zu werden. Ich bin mir bewusst, was ich tun kann, dass zufällig die primitive mit ‚n-of‘, wie folgt aus:Wie fügt man dem Primit 'n-of' in NetLogo 'Prioritäten' hinzu?
let candidate-cells (patches with [ pcolor = yellow or pcolor = green ])
ask n-of n-cells candidate-cells [ set pcolor red ]
Aber ich würde zu den Patches wie Prioritäten hinzufügen, die gerötet wird. Erstens möchte ich, dass gelbe Flecken rot werden (zufällig), aber wenn es immer noch Flecken gibt, die rot werden, nachdem alle Flecken gelb sind, möchte ich grüne Flecken mit dem höchsten Rangwert rot werden lassen, bis die Anzahl der gedrehten Flecken erreicht ist die Nummer der 'n-Zellen'. Ich denken dieses Stück Code, bis auf seine letzte Zeile funktionieren sollte:
let candidate-yellow-cells (pcolor = yellow)
let candidate-green-cells (pcolor = green)
ask n-of n-cells candidate-yellow-cells [ set pcolor red ]
if n-cells > candidate-yellow-cells [
let left-cells (n-cells - candidate-yellow-cells)
ask n-of left-cells candidate-green-cells [ set pcolor red ]
Aber noch bin ich mit ‚n-of‘ wieder für die grünen Zellen, frage ich mich, wie konnte ich ersetzen, die durch etwas, das würde die "linken Zellen" als die grünen Flecken mit dem höchsten "Rang" -Wert auswählen. Vielen Dank im Voraus.
Danke, Alan, erneut gespeichert Sie den Tag. Könnte doch irgendjemand bitte erklären, warum wir das 'min' brauchen: 'lasst _n min (list (n-cells - _ny) _ng)'? –
@ThalesWest Sie können nicht mehr Patches anfordern, als es gibt, also wenn Sie nach zu vielen fragen, fragt das nur alle, die es gibt. Eine Alternative besteht darin, in Betracht zu ziehen, dass zu viele ein Fehler sind, aber hier ging ich davon aus, dass das Programm weiterlaufen sollte. – Alan