Netlogo: запрашивать патчи в радиусе, но не центральный патч - PullRequest
0 голосов
/ 09 октября 2019

Я хотел бы сделать вещи с патчами в радиусе, но исключая патч с самим агентом, центральным патчем, поэтому я изменяю пример Myself из библиотеки моделей:

to splotch
  ask turtles [
    ask one-of patches in-radius 2 with [not any? turtles-here] [
      set pcolor [ color ] of myself
    ]
  ]
  tick
end

, но этот кодтакже исключает другие патчи с черепахами, так что это должно быть что-то вроде

to splotch
  ask turtles [
    ask one-of patches in-radius 2 [not self][
      set pcolor [ color ] of myself
    ]
  ]
  tick
end

Но этот код не работает, и я не понимаю, как это должно быть.

1 Ответ

2 голосов
/ 09 октября 2019

Вам нужен other примитив. Однако other исключает агентов одного типа, и вы хотите, чтобы черепаха исключила патч. Итак, вам нужно получить соответствующий патч для ask патчей other. Вот один из подходов:

to testme
  clear-all
  create-turtles 3 [setxy random-xcor random-ycor]
  splotch
end

to splotch
  ask turtles
  [ let mycolor color
    ask patch-here
    [ ask other patches in-radius 4
      [ set pcolor mycolor
      ]
    ]
  ]
end

Если вы хотите что-то более похожее на то, как вы это делали, вы можете создать локальную переменную для хранения патча и затем исключить ее следующим образом:

to splotch
  ask turtles
  [ let mypatch patch-here
    ask patches in-radius 4 with [self != mypatch]
    [ set pcolor [color] of myself
    ]
  ]
end
...