Netlogo 指定代理时出现问题';s位置和发芽命令

Netlogo 指定代理时出现问题';s位置和发芽命令,netlogo,agent,Netlogo,Agent,我的子模型的目标是模拟狼特工如何避免人类密度超过狼的耐受阈值的斑块。在运行我的模型时,sprout命令并没有像我预期的那样在城市补丁中生成人类代理的数量。在城市斑块中创建人类的代码是: 询问补丁[如果self=城市补丁[发芽人类初始数量人类]] 以下是“我的界面”选项卡的图像: 灰色被编码为我的城市斑块,棕色是草地斑块,绿色是森林斑块。为什么我的人类代理没有出现在灰色(城市)斑块中,代理的数量反映了人类的初始数量 以下是创建人工代理的代码: 我已指定人类代理的xy坐标位于城市(灰色)面片中,但在

我的子模型的目标是模拟狼特工如何避免人类密度超过狼的耐受阈值的斑块。在运行我的模型时,sprout命令并没有像我预期的那样在城市补丁中生成人类代理的数量。在城市斑块中创建人类的代码是:

询问补丁[如果self=城市补丁[发芽人类初始数量人类]]

以下是“我的界面”选项卡的图像:

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

以下是创建人工代理的代码:


我已指定人类代理的xy坐标位于城市(灰色)面片中,但在运行模型时仅显示一个人类代理。如何正确地编码与sprout命令连接的初始人数?

正如我认为您现在已经发现的,在一组补丁中随机分配一定数量的海龟的最简单方法是使用
创建海龟
,而不是
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

请注意,对
xcor
ycor
的调整是因为
sprout
移动到
始终将海龟放在斑块的中心,并且没有用于在特定斑块上随机放置的原语。

城市斑块是一个斑块集,还是一个由斑块拥有的变量,或者是什么还有吗?你好,詹布。我自己解决了这个问题,将人类代理硬编码为xcor和ycor,它们对应于城市补丁。因此,我的“萌芽”命令现在没有意义了。为了回答您的问题,城市斑块被列为全局。我不知道这是否是创建补丁类型的正确方法,但我认为它是有效的?谢谢你的示例代码和解释。我选择不使用sprout命令,而只是使用move to并让随机浮点对其位置进行轻微更改。