首页 > 解决方案 > netlogo:最小补丁坐标单元和监控可用性?

问题描述

我想将补丁空间的最小坐标单位(设置为每个补丁空间仅存在一只乌龟)更改为小于一,并对其进行监视。我们希望将最小空间单位设置为与 tick-advance 中相同的刻度大小 n(例如 n=0.1)。这是一段代码,但它不起作用。谁能帮我?提前致谢。

globals [n] ; n<=1 i.e. n=0.1
; omitted
ask turtles [forward n]
tick-advance n

标签: coordinatesnetlogopatch

解决方案


我发现自己和 Matteo 站在同一条船上——我不知道你想做的事情在 NetLogo 的背景下是可能的/有意义的。补丁的坐标是固定的(即,一个补丁是一个单位)但是任意的(Netlogo 中的 1 可以表示 1 m 或 1 km,取决于型号)。换句话说,补丁的坐标是离散的,而海龟可以在连续的空间中移动。所以你当然可以让乌龟以 1/10 的步长四处游荡:

globals [n]

to setup
  ca
  set n 0.1
  crt 10
  reset-ticks
end

to go
  ask turtles [
    forward n
  ]
  tick-advance n  
end

在上面的一次运行之后go,您可以想象在坐标处有一只海龟[xcor = 0.1, ycor = 0.1],尽管它仍然会打开,patch 0 0因为pxcor值是整数。

看来您实际上需要做的并不是按需要做的-您可以编辑您的问题以提供更多详细信息/上下文吗?也许了解您需要以这种方式建模的原因将有助于提问者将您指向正确的方向。我个人很好奇:

  • 为什么你使用tick-advance而不是仅仅tick
  • 你是如何实现你的每个补丁一个乌龟的限制 - 换句话说,你能展示一个最小的可重现示例吗?这可能会提示其他方法来接近你所追求的。

这是一个时间与刻度相关的示例世界:

globals [ seconds ]

to setup
  ca
  set seconds 0
  resize-world 0 50 0 50
  ask patches with [ 
    floor (pxcor / 10) mod 2 + floor (pycor / 10) mod 2 = 1
  ] [
    set pcolor white
  ]
  crt 10
  reset-ticks
end

to go
  ask turtles [
    fd 1
  ]
  set seconds precision (seconds + 0.1) 2
  if seconds mod 1 = 0 [print ( word "It has been " seconds " seconds.")]
  tick
end

推荐阅读