0

我正在为一个城市的交付系统建模。交付分支代理的位置基于真实世界坐标。如何制作一个更小的 netlogo 世界,可以清楚地显示定义区域中的所有代理(min-x:113.783131,max-x:114.42618;min-y:22.476584,max-y:22.809712)?当前的 netlogo 世界太大了,无法让每个代理都可见(它们都聚集在一个小点上)

4

1 回答 1

2

您需要做的就是编写一个函数,将您的 x 和 y 坐标重新缩放到 NetLogo 范围内。然后,只要您参考真实世界坐标,只需调用该函数即可。有关与您的世界中的补丁数量无关的功能,请参见下文。如果您想更接近或远离边缘,您可能想要摆弄函数中的最大值和最小值。另外,我会添加一个错误检查(因此,如果您不小心尝试询问超出预定义的最大值和最小值的坐标,该函数会打印一条有意义的消息)。

运行 testme 看看它做了什么。

to testme
  clear-all
  create-turtles 1
  [ setxy fix-x 113.8 fix-y 22.6 ]
  create-turtles 1
  [ setxy fix-x 114.49 fix-y 22.8 ]
end

to-report fix-x [#x]
  let minx 113.5
  let maxx 114.5
  report ((#x - minx) / (maxx - minx)) * (max-pxcor - min-pxcor) + min-pxcor
end

to-report fix-y [#y]
  let miny 22.45
  let maxy 22.82
  report ((#y - miny) / (maxy - miny)) * (max-pycor - min-pycor) + min-pycor
end

来自评论的更新:如果您实际上有一个 GIS 数据集,只需使用 GIS 扩展将其加载到 NetLogo 中并设置信封。世界会调整。

于 2018-12-26T09:48:18.890 回答