无法指定代理的位置和发芽命令

Trouble specifying agent's location and sprout command

我的子模型的 objective 是模拟狼代理人如何避开人类密度超过狼容忍阈值的斑块。当 运行 设置我的模型时,sprout 命令没有像我预期的那样在城市补丁中生成人类代理的数量。城市补丁创建人类的代码是:

询问补丁[ if self = urban-patches [sprout-humans initial-number-humans]]

这是我的界面选项卡的图像:NetLogo space

灰色是我的城市斑块,棕色是草地斑块,绿色是森林斑块。为什么我的人类代理人没有出现在代理人数量反映初始人数的灰色(城市)补丁中?

这里是创建人工代理的代码:code

我已经指定了位于城市(灰色)补丁中的人类代理的 xy 坐标,但是当我 运行 模型时只出现了一个人类代理。如何正确编码 initial-number-humans 以连接 sprout 命令?

正如我想您现在已经发现的那样,将一定数量的海龟随机分布在一组补丁中的最简单方法是使用 create-turtles 而不是 sprout。这是因为 sprout 在每个发芽的小块上创建了指定数量的海龟,因此您需要兼顾要创建的总数和小块的数量。但是,如果您想实现均匀分布而不是随机位置,则该选项很有用。这是同时执行这两项操作的代码。

globals [urban-patches n-humans]

to setup
  clear-all
  set urban-patches n-of 20 patches
  ask urban-patches [set pcolor gray]
  set n-humans 100
  make-humans-sprout
  make-humans-create
end

to make-humans-sprout
  ask urban-patches
  [ sprout n-humans / count urban-patches
    [ set color red
      set xcor xcor - 0.5 + random-float 1
      set ycor ycor - 0.5 + random-float 1
    ]
  ]
end

to make-humans-create
  create-turtles n-humans
  [ set color blue
    move-to one-of urban-patches
      set xcor xcor - 0.5 + random-float 1
      set ycor ycor - 0.5 + random-float 1
  ]
end

请注意,对 xcorycor 的调整是因为 sproutmove-to 始终将海龟放在补丁的中心并且没有原语放置在特定补丁的随机位置。