NetLogo - черепаха, чтобы перейти к ближайшей концентрации черепах - PullRequest
0 голосов
/ 13 февраля 2019

Я бы хотел, чтобы черепаха шла к ближайшим участкам с большинством черепах, если порог заданной переменной достигнут за 5 тиков.

Мой код:

to move
  let count-tick 5
  if var >= 9.5 [
    set count-tick count-tick - 1
    if count-tick = 0 [
      ask turtle [
        let nearest-group min-one-of (patches with [sum turtles >= 3] in-radius 3 ) [ distance myself ]
        move-to nearest-group ;; go to the biggest crowd near you
        ask turtle [ ;; once there do the following
          set shape "star"
          set color red
        ]
      ]
    ]
  ]  
end

у меня проблема в том, что а) я не уверен, как сказать the patch with >= 3 turtles closest to you at the given range of 3 (попытка кода выше) и б) как сказать once there, change your shape.

1 Ответ

0 голосов
/ 14 февраля 2019

Я думаю, это то, что вы хотите:

to move
  let count-tick 5
  if var >= 9.5 [
    set count-tick count-tick - 1
    if count-tick = 0 [
      let nearest-group min-one-of (patches with [count turtles >= 3] in-radius 3 ) [ distance myself ]
      move-to nearest-group ;; go to the biggest crowd near you
      set shape "star"
      set color red
    ]
  ] 
end

Во-первых, вы уже находитесь в блоке кода ask turtles из процедуры, вызывающей эту процедуру перемещения.Таким образом, вам не нужны дополнительные ask turtles.Посмотрите ask в словаре NetLogo, он просматривает черепах, выполняя весь код для каждой черепахи по очереди.

Во-вторых, вам нужно count turtles вместо sum turtles, поскольку sum означаетсуммируйте значения.

Обратите внимание, что при этом нет проверки ошибок, у вас могут возникнуть проблемы, если в радиусе 3 нет патчей, у которых есть как минимум 3 черепахи.

...