NetLogo运行报错:patch未指定turtle无法访问turtle变量如何解决
NetLogo细胞patch着色报错修复方案
错误根源
- 报错出现在
make-membrane过程的判断逻辑中:你在patch执行的代码里调用了[who] of myself,who是turtle专属变量,patch没有该属性,因此触发变量访问错误。 - 此时
myself指代当前运行代码的patch,你实际要对比的是相邻patch与当前patch的CellID是否一致,不需要关联turtle的who变量。
修复代码
将make-membrane过程替换为以下内容即可:
to make-membrane ask patches with [pcolor != black] [ ; 原逻辑错误调用了turtle专属的who变量,改为直接对比patch自身的CellID ifelse not any? neighbors with [ CellID = [CellID] of myself ] [ set patch-state "I" ] [ set patch-state "M" ] ] ask patches with [ patch-state = "M" ] [ set pcolor pcolor - 1 ] trim end
逻辑验证说明
你之前的代码已经给每个细胞对应的所有patch设置了相同的CellID(值为所属turtle的who+1),判断细胞边缘只需要检查某个patch有没有和自己同CellID的邻居即可:没有同ID邻居的就是细胞最外层的膜patch,标记为M并调深颜色,其余为内部patch标记为I,完全符合你区分细胞内外层的需求。
内容的提问来源于stack exchange,提问作者Liam Mason
相关产品推荐
相关产品推荐

