如何在Netlogo中分配海龟和补丁之间的不同距离

时间:2014-12-12 15:47:36

标签: netlogo

我对Netlogo很新。我尝试创建一个交换意见的模型,以便找到一个适合不受欢迎的设施选址的位置。该模型包含三个具有不同意见的品种。

我导入了一个带有四种不同土地利用类别(建筑物,农业,森林,水)的GIS栅格图层。所有品种被随机分配到土地使用类“建筑物”。通过每个滴答的两个代理之间的随机配对连接来进行交互。关于某个位置的适用程度的默认意见值应该基于特定距离内的土地利用类别。距离应该分为近(< = 20),中(21-50)和远(&50)。如果要求乌龟给出关于某个补丁的意见,则应该自动计算乌龟彼此之间的距离。

但是,我确实遇到了一个问题,即找到一个代码,为每只乌龟定义近距离,中距离或远距离。到目前为止,我有两个主要的想法,但我写的代码没有提供令人满意的结果。

第一次尝试就是这样:

calc-distance
  ask turtles [
  if (distancexy pxcor pycor) <= 20
  [set location near]
  if (distancexy pxcor pycor) > 20 and (distancexy pxcor pycor) <= 50
  [set location middle]
   if (distancexy pxcor pycor) > 50
  [set location far]]
end

第二次尝试就是这样:

Turtels位于a 补丁位于b 自动计算a和b之间的距离

  if ab <= 20
  [set location near]
  if ab > 20 and ab <= 50
  [set location ...}
end

如果有人能为这个问题提供任何解决方案,我会很高兴。提前谢谢!

1 个答案:

答案 0 :(得分:1)

您正在尝试将品种变量名称作为参数传递。这是一个语法错误。 使用distancexy时,预期值为数字。您可以使用loop检查要检查的所有职位。但是我认为你的海龟应该有变量来存储每个地方的意见。

calc-distance
  ask turtles [
  if (distancexy point1-pxcor point1-pycor) <= 20
  [set point1-location "near"]
  if (distancexy point1-pxcor point1-pycor) > 20 and (distancexy point1-pxcor point1-pycor) <= 50
  [set point1-location "middle"]
   if (distancexy point1-pxcor point1-pycor) > 50
  [set point1-location "far"]
  ]
  . . . continue with all other locations OR use loop.
end