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

如何在Mathematica的NLDoReport中使用多Reporter采集多属性数据?

解决Mathematica调用NetLogo多属性采集问题

方法1:NetLogo端打包多属性为列表返回

直接修改NLDoReport的第二个参数,用NetLogo的list命令把多个属性打包成复合列表,这样每个tick会返回包含两个目标属性的子列表,Mathematica最终会收集成一个二维列表。

执行命令:

data = NLDoReport["go", "list ([house_price] of location 1) ([population] of location 1)", 200]

后续可拆分数据分别提取两个属性:

housePrices = data[[All, 1]]
populations = data[[All, 2]]

方法2:手动循环采集并存储

如果不想在NetLogo端打包,也可以用NLDo配合Mathematica变量逐tick存储数据:

  1. 初始化空列表用于存储数据:
housePrices = {};
populations = {};
  1. 循环执行200次go,每次采集后追加数据:
NLDo[
  "go",
  AppendTo[housePrices, NLReport["[house_price] of location 1"]];
  AppendTo[populations, NLReport["[population] of location 1"]],
  200
]

这种方式更灵活,适合后续扩展更多属性的场景。

注意事项

  • 确保NetLogo中的location 1是合法代理对象,避免因对象不存在报错。
  • 若属性是全局变量而非代理属性,直接写变量名即可,无需of语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:56:28