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

NetLogo开发求助:家庭智能体选房逻辑加防占条件后报错

NetLogo模型错误修正与功能实现

需求说明

  • 让家庭智能体(households)检查满足以下条件的地块(patch):①is-home? = true;②cost ≤ 家庭的money
  • 将首个符合条件的地块ID赋值给家庭的my-home变量
  • 将家庭ID传入地块的patch-owner变量
  • 家庭移动到该地块
  • 若未找到符合条件的地块,家庭智能体死亡,number-displaced计数器加1

问题现状

添加and not any? households-here条件避免多家庭抢占同一地块后,点击Go按钮触发错误:MOVE-TO expected input to be an agent but got NOBODY instead.

当前代码

错误原因与修正方案

核心问题

  1. 重复筛选导致的不一致:原代码先判断是否存在符合条件的地块,再重新筛选一次,两次筛选间隔中可能已有其他家庭抢占了地块,导致第二次筛选返回NOBODY,触发MOVE-TO错误。
  2. 错误的代理调用:单个家庭执行choose-house时,使用ask households会让所有家庭同时执行移动逻辑,加剧地块竞争且逻辑混乱。
  3. 变量作用域错误:set occupied? TRUE和set patch-owner households-here让家庭智能体执行,但这些变量属于地块,会引发错误。

修正后的代码

重点修改setup和choose-house过程:

关键优化点

  • 将符合条件的地块提前存储为变量available-homes,确保判断和使用的是同一批地块,避免竞争导致的NOBODY问题。
  • 去掉不必要的ask households,直接让当前家庭执行操作,逻辑更清晰。
  • 使用ask target-home让目标地块更新自身的occupied?和patch-owner变量,修正作用域错误。
  • 在setup中初始化number-displaced为0,避免首次计数时的未定义错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:39:21