You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的Go Procedure中citizen-movement触发runtime error?

问题分析与解决

错误原因

这个错误的核心是:当编号33的市民海龟走到NetLogo世界的边缘时,patch-ahead 1会返回NOBODY(无对应补丁),此时执行[pcolor] of NOBODY就会触发类型不匹配错误。

员工移动过程没报错只是巧合——要么员工还没走到世界边缘,要么员工的移动逻辑刚好避开了边缘场景,但实际上employee-movement代码同样存在这个潜在问题。

修复方案

方案1:先检查补丁有效性再判断颜色

修改citizen-movement(建议同步修改employee-movement避免后续报错),先确认前方存在有效补丁,再进行颜色判断:

any? patch-ahead 1会先判断前方是否存在有效补丁,避免对NOBODY执行of操作。

方案2:开启世界边缘环绕

如果模型逻辑允许海龟从世界一侧穿到另一侧,可以在NetLogo的Settings面板中勾选“Wrap world edges”选项。这样海龟走到边缘时会自动从对侧出现,patch-ahead 1永远不会返回NOBODY,从根源解决问题。

内容的提问来源于stack exchange,提问作者premiumcopypaper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:00:47