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

NetLogo中Distance原语结合GIS栅格使用报NOBODY错误

报错根因

你触发DISTANCE expected input to be an agent but got NOBODY instead错误的核心原因有两个,优先级从高到低:

  1. 主流程漏调用栅格加载逻辑:你的setup初始化过程中,没有调用setup-map过程,直接执行了set-houses。这意味着draw-lake从未运行,所有斑块的tota变量都没有被赋值为1,patches with [tota = 1]是一个空的斑块集合,对空集合执行min-one-of会直接返回nobody,传给distance就会触发你看到的报错。
  2. 代码本身存在多处语法、变量定义、逻辑错误,就算补上setup-map调用也会触发其他报错,具体问题点列在下面。
代码现存问题清单
  • 语法错误:draw-tota过程中gis:raster-sample worldself漏写空格,正确写法是gis:raster-sample world self,否则会直接触发语法错误。
  • 变量定义缺失:patches-own块中没有声明代码里用到的elevation、dano_suelo、distance-lake三个斑块变量,运行时会报变量未定义错误。
  • 变量作用域错误:你把water定义成了全局变量,但draw-lake中是逐斑块给water赋值,全局变量只能存单个值,无法存储每个斑块的采样结果,应该把water挪到patches-own中。
  • 变量初始化缺失:非湖体斑块的tota没有设置默认值0,仅给湖体斑块设置了tota=1,未赋值的变量在筛选时会出现不可预期的结果。
  • 冗余逻辑:draw-tota中if (elevation <= 0) or (elevation >= 0)是恒真判断,所有高程值都会满足这个条件,这段判断没有实际作用。
修复方案
  1. 补全所有缺失的斑块变量声明,调整water的作用域到斑块自有变量
  2. 初始化所有斑块的tota默认值为0,湖体斑块再覆盖为1
  3. 修复gis:raster-sample的空格语法错误
  4. 删除恒真的冗余判断
  5. 在setup流程中,执行set-houses之前调用setup-map,保证栅格采样、湖体标识赋值完成后再计算距离
  6. 距离计算逻辑增加空判断,避免栅格加载失败时重复触发nobody错误
修复后完整代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:45:35