从代码示例中使用过程时出现Netlogo错误许多区域示例过程

时间:2018-04-20 12:19:57

标签: netlogo

我是Netlogo的新手。我正在尝试使用库的多区域示例中包含的代码。但是我在这个程序中遇到一个错误

 to keep-in-region [ which-region  ] 
 if region != which-region [
 let region-min-pxcor first item (which-region - 1) region-boundaries
 let region-max-pxcor last item (which-region - 1) region-boundaries
 let region-width (region-max-pxcor - region-min-pxcor) + 1
 ifelse xcor < region-min-pxcor [ 
 set xcor xcor + region-width      ]
 [if xcor > region-max-pxcor [   
 set xcor xcor - region-width
  ]
 ]
 ]

我得到的错误是....任何建议?提前致谢

-1没有esta mas que o等于cero。 卖家31运行ITEM时出错   由程序KEEP-IN-REGION调用   由程序ADJUST调用   由程序GO调用   由Botón'go'呼叫

1 个答案:

答案 0 :(得分:2)

你得到的错误(“-1不大于或等于零。”,一旦翻译成英文)是由于传递-1作为item原语的索引。

代码中有两行使用item

let region-min-pxcor first item (which-region - 1) region-boundaries
let region-max-pxcor last item (which-region - 1) region-boundaries

正如您所看到的,(which-region - 1)是传递给item的表达式作为索引。如果您收到-1,则必须是因为which-region = 0

在“多个区域示例”模型中,区域0保留用于不属于任何区域的修补程序,即用作区域边界的修补程序。区域本身编号为1。

在代码中查找调用keep-in-region的位置,并确保使用的区域编号介于1和您拥有的区域数之间(包括)。

免责声明:我最初编写了“多区域”代码示例。也许我可以使用像nobody之类的值来获取任何区域之外的补丁,并将实际区域从0开始而不是从1开始编号,但我不记得我是否主动决定反对它或者只是没想到它的。