使用代码示例"多个区域示例"过程中的过程时出现 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 no esta mas que o iqual a cero. 卖家 31 运行项目时出错 由过程调用 保持区域 由过程调用 调整 由过程 GO 调用 被博顿称为"去">

您收到的错误("-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 开始的实际区域进行编号,但我不记得我是否主动决定反对它或只是没有想到它。

最新更新