Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
in-radius在Netlogo 6.1.0中的工作原理与以前版本不同_Netlogo - Fatal编程技术网

in-radius在Netlogo 6.1.0中的工作原理与以前版本不同

in-radius在Netlogo 6.1.0中的工作原理与以前版本不同,netlogo,Netlogo,我有下面的代码,它创建了一个代理网格,并在两个代理之间放置链接(如果它们处于干扰距离内) breed [ readers reader ] undirected-link-breed [ rris rri ] globals [ interf-rri-radius num-readers distance-var-x distance-var-y readers-per-row readers-per-column num-checkouts ] to setu

我有下面的代码,它创建了一个代理网格,并在两个代理之间放置链接(如果它们处于干扰距离内)

breed [ readers reader ]
undirected-link-breed [ rris rri ]

globals [
  interf-rri-radius
  num-readers
  distance-var-x
  distance-var-y
  readers-per-row
  readers-per-column
  num-checkouts
]


to setup
  ca
  setup-globals
  ask patches [ set pcolor blue - 3 ]
  spawn-by-row-col
  reset-ticks
end

to setup-globals
  set  interf-rri-radius 1005
  set num-readers 40
  set distance-var-x 12
  set distance-var-y 22
  set readers-per-row 8
  set readers-per-column 5
  set num-checkouts 0
end

to spawn-by-row-col
  let half-step 0.5 * distance-var-x
  let d-vals ( range ( min-pxcor + half-step ) ( min-pxcor + (readers-per-row * distance-var-x)) distance-var-x )

  let dc-vals ( range ( min-pxcor + half-step ) ( min-pycor + (readers-per-column * distance-var-y)) distance-var-y )
  show dc-vals
  ; Create an empty list to build into
  let possible-coords []

  ; For each possible vertical value, map all horizontal values in order and
  ; combine these into an ordered list starting at the lowest px and py coords

  foreach dc-vals [
    d ->
    set possible-coords ( sentence possible-coords map [ i -> (list i d) ] d-vals )
  ]

  show (word "possible-coords = " possible-coords)
  ; Use the number of readers to sublist the possible coordinates, and
  ; create a turtle at each of the coordinate combinations left.
  let max-positions length possible-coords
  if max-positions > (num-readers + num-checkouts) [ set max-positions (num-readers + num-checkouts) ]
  let use-coords sublist possible-coords num-checkouts max-positions
  foreach use-coords [
    coords ->
    create-readers 1 [
      setxy item 0 coords item 1 coords
      set shape "square 2"
      set size 2
      set color 15
    ]
  ]
  ask readers [ create-rris-with other readers in-radius (interf-rri-radius / 10) ]
end
读取器0的邻居是

show [sort [who] of rri-neighbors] of reader 0
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39]
然而,读取器0和读取器39之间的距离为

show [distance reader 0] of reader 39
121.6552506059644
连接半径为1005/10=100.5,因此它们不应与
rri
链路连接

请注意,我使用的是以原点为中心的世界,在X和Y维度中为-50到50

我已经在以前的Netlogo版本6.0.4中测试了代码,读卡器39不是读卡器0的邻居。
我不知道会有什么问题。我相信是新版本,但我想确定一下。

如果其他人遇到这种情况,NetLogo 6.1.0版本中radius中的
存在已确认的bug,详细信息见

当在非包裹世界中使用时,该问题仅影响半径中的
,仅当在海龟身上使用时,以及仅当半径为世界宽度的显著%时,该问题才影响。如果您使用的是带换行的世界,或在半径中使用带面片的
,或使用相对于世界大小的小半径,那么您的数据将是正确的,并且不需要以下解决方法

如果您的模型受到影响,可以在模型中使用简单的用户定义的NetLogo过程作为解决方法,直到发布修复程序。如果您让海龟在半径范围内计算每个刻度多次,速度不会很快,但是如果您的海龟很少,或者只是在安装过程中使用,则应该可以:

to-report temp-in-radius [agentset r]
  report agentset with [ distance myself <= r ]
end
报告半径范围内的温度[agentset r]

报告代理设置为[distance Own其中是代码中计算的1005/10的连接半径?@JenB我在radius中使用过(接口rri radius/10)在第一组代码的末尾。@JenB我必须添加世界维度是一个x和y为-50到50的非环形世界。在6.1.0中,半径为
原语进行了优化,因此可能在那里引入了一个bug。您愿意在这里发布完整的代码,还是通过电子邮件发送副本和解释到bugs@ccl.northwestern.edu?NetLogo团队可以查看并尝试查找根本原因。@Jasper是的。我不知道电子邮件地址。我将报告代码。谢谢。