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

如何在AnyLogic中将智能体及其参数存储到二维集合中

集合选型与元素定义方案

1. 集合类型选择

优先选择动态数组类型的集合,以常用的多智能体仿真平台AnyLogic(你提到的enter块为该平台标准流程组件)为例,首推ArrayList,核心原因:

  • 支持按智能体进入顺序线性存取,遍历、按索引访问的效率最高,资源开销远低于Map、Set类集合
  • 支持动态扩容,不需要提前预估智能体进入的总数量
  • 若后续需要基于location参数做空间查询,可搭配平台内置的SpatialCollection或GIS空间索引使用,不影响现有存储逻辑
    如果是其他开发/仿真环境,对应选型即可:Python选list、Java选ArrayList<T>、C#选List<T>。

2. 集合元素定义

分为两种场景,按需选择:

场景1:需要保留智能体全量属性

直接将集合的泛型指定为你的智能体类型即可,不需要额外定义元素结构:

// 集合定义,Product为你的单个智能体的类型名
ArrayList<Product> productsCollection = new ArrayList<>();
// enter块的On enter动作中写入存入逻辑
productsCollection.add(agent);

后续读取参数的方式:

  • 读取amount:productsCollection.get(索引值).amount
  • 读取location:productsCollection.get(索引值).location

场景2:仅需要存储amount和location两个参数

可以自定义轻量数据类存储,避免冗余保存智能体的其他无用属性:

// 先自定义存储用的数据结构,GISPoint替换为你实际使用的GIS位置类名
public static class ProductStorageItem {
    public int amount;
    public GISPoint location;
    public ProductStorageItem(int amount, GISPoint location) {
        this.amount = amount;
        this.location = location;
    }
}
// 集合定义
ArrayList<ProductStorageItem> productItems = new ArrayList<>();
// enter块存入逻辑
productItems.add(new ProductStorageItem(agent.amount, agent.location));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:24:03