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

NetLogo囚徒困境模型代理出生死亡时交互历史列表运行报错求助

问题原因与修复方案

错误根源

  • NetLogo的turtle全局编号who为自增不回收规则:代理死亡后who编号不会被新孵化的代理复用,新代理who编号只会持续增大,和当前存活代理总数无直接关联
  • 你当前的交互历史列表partner-history-com长度按当前存活代理总数生成,当新代理孵化后who编号超过列表最大索引,调用item/replace-item访问对应who的历史记录时就会触发索引越界报错
  • 额外问题:你在hatch新代理时没有初始化partner-history-com属性,新代理的历史列表为空也会直接报错

修复方案

这里提供两种可直接落地的修改方式,推荐优先使用第一种:

方案1:使用Table扩展存储交互历史(推荐)

该方案无需关心索引边界,性能更稳定:

  1. 代码首行添加扩展声明:
  1. 修改setup-history-lists-com过程:
  1. 修改策略读取历史的逻辑(以tit-for-tat-com为例,unforgiving-com同步修改):
  1. 修改历史更新逻辑(以tit-for-tat-com-history-update为例,unforgiving-com-history-update同步修改):

方案2:调整列表长度适配who编号

如果你不想使用扩展,可直接修改列表生成逻辑:
修改setup-history-lists-com过程的重复次数为当前最大who号+1,保证所有存活代理的who号都在索引范围内:

同时补充新孵化代理的属性初始化,在birth-die-com的hatch代码块添加历史列表初始化:

额外优化建议

  • 你当前每tick都会重置所有代理的交互历史,相当于之前的交互记录全部失效,不符合以牙还牙、零容忍策略的设计逻辑,可根据需求调整为仅给新出生的代理初始化空历史,存量代理保留历史记录
  • 资源计算逻辑中不要在策略过程里重复ask同范围的patches和companies,避免重复计算消耗性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:54:07