“如何修复”;没有名字吗?已被定义为;NetLogo 6.0.4中的错误

“如何修复”;没有名字吗?已被定义为;NetLogo 6.0.4中的错误,netlogo,Netlogo,我下载了修改后的随机簇代码,用于使用NetLogo建模共享空间中米林顿版本的修改后的随机簇方法生成中性景观模型。当我单击“生成横向”按钮时,代码中的“填充横向”过程会导致“未命名?已定义”错误 当我创建附加的界面映像并尝试运行下面的相邻代码时。问题似乎与“事件”报告功能中的问号有关。reduce功能未按预期工作。这有什么办法吗?请参见界面,然后参见下面的代码: 假设代码使用Saura和Martinez Millan(2000)开发的改进随机聚类方法生成中性景观模型。但是,错误“Nothing n

我下载了修改后的随机簇代码,用于使用NetLogo建模共享空间中米林顿版本的修改后的随机簇方法生成中性景观模型。当我单击“生成横向”按钮时,代码中的“填充横向”过程会导致“未命名?已定义”错误

当我创建附加的界面映像并尝试运行下面的相邻代码时。问题似乎与“事件”报告功能中的问号有关。reduce功能未按预期工作。这有什么办法吗?请参见界面,然后参见下面的代码:


假设代码使用Saura和Martinez Millan(2000)开发的改进随机聚类方法生成中性景观模型。但是,错误“Nothing named”(未命名)被定义为“错误代码无法顺利运行”。期待着想……

NetLogo 5.x中的旧
语法被NetLogo 6中的新
->
语法所取代。看

例如,在NetLogo 5中,您可以写:

foreach [0 1 2 3] [
  print ?
]
在NetLogo 6中,您可以编写:

foreach [0 1 2 3] [ x ->
  print x
]

结合Bryan的答案(第一个步骤)和NetLogo字典(第二个步骤),您可以了解以下内容。注释表示新的位。没有测试

ifelse ( any? neighbours with [ cluster != nobody ] )
[ let covers []
  ask neighbours with [ cluster != nobody ]
  [ set covers fput cover covers
  ]
  let unique-covers remove-duplicates covers
  let max-cover-count - 1  ; added a space around subtraction
  let max-cover - 1        ; more spacing
  ifelse(length unique-covers > 1)
  [ foreach unique-covers
    [ this-cover ->                  ; here's the new bit, calling ? 'this-cover'
      let occ occurrences this-cover covers ; passes to the occurrences procedure
      ifelse(occ > max-cover-count)
      [ set max-cover this-cover     ; using the name this-cover again
        set max-cover-count occ
对于出现的情况,您可以直接从NetLogo Dictionary
reduce
示例中获取该过程

to-report occurrences [#x #the-list]
  report reduce
    [ [occurrence-count next-item] -> ifelse-value (next-item = #x)
        [occurrence-count + 1] [occurrence-count] ] (fput 0 #the-list)
end

那么,如果我可以问的话,您将如何在我的代码中用“?”重写这些部分?请编辑您的问题,以便只显示相关的过程shown@JenB我已对问题进行了编辑,只留下相关程序。我期待着你的想法。我还是看不见。对不起。我可以看到“事件”过程需要修改,但我看不到长过程中的任何内容。你可以只做需要的部分吗?@JenB我已经删除了“填充景观”过程中没有“?”的部分,以便只显示与“?”直接相关的行。我期待着您的想法。
to-report occurrences [#x #the-list]
  report reduce
    [ [occurrence-count next-item] -> ifelse-value (next-item = #x)
        [occurrence-count + 1] [occurrence-count] ] (fput 0 #the-list)
end