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

AnyLogic如何按泊松时间批量生成同创建时间Agent并单独操作

AnyLogic 泊松触发批量生成同时间戳Agent实现方案

你提到的两种实现路径都可落地,核心是修正配置误区,以下是可直接复用的操作方法,完全满足「泊松间隔触发、同批次Agent创建时间完全一致、支持单Agent独立操作」三个要求:

方案1:使用Source模块实现(流程建模场景推荐)

你之前遇到的种群关联问题是配置项选择错误导致的,不需要预先初始化固定规模的Agent种群:

  • 拖入Source模块,到达模式选择Arrivals per arrival
  • 到达间隔设置为poisson(你的期望间隔lambda值),单次到达数量填入你需要的批次规模(支持固定值、随机分布值、动态计算值)
  • Agent类型选择你自定义的Agent类,下方Add agents to下拉选项直接选择你预先创建的初始规模为0的空Agent种群,不要选择Specific字段,该字段用于指定自定义Agent容器,不是用来绑定顶层种群的
  • 配置完成后运行,同一批次生成的Agent会自动归入你绑定的种群,所有Agent的内置创建时间getTime()返回值完全一致,你可以通过yourPopulation.get(index)的方式单独操作任意一个Agent。

方案2:事件触发+动态创建Agent实现(无流程库依赖场景推荐)

如果不需要走流程建模逻辑,可以直接用事件+循环动态生成,不需要预加载任何Agent:

  • 第一步:在Main画布上创建你自定义Agent类型的种群,将种群初始规模设为0,比如命名为batchAgents
  • 第二步:添加一个Event事件,触发模式设为Cyclic,首次触发时间、重复触发间隔均设置为poisson(你的期望间隔lambda值),时间单位和模型全局单位保持一致
  • 第三步:在事件的Action编辑区写入批量生成代码,参考如下:
// 自定义当前批次生成数量,可替换为任意整数计算逻辑
int currentBatchSize = 10;
// 提前固定当前批次的创建时间,避免浮点误差导致时间戳不一致
double batchBirthTime = time();
for (int i = 0; i < currentBatchSize; i++) {
    // 动态向种群中添加新Agent
    CustomAgent newAgent = add_batchAgents();
    // 给当前批次Agent赋统一的创建时间属性
    newAgent.birthTime = batchBirthTime;
    // 此处可添加每个Agent的独立逻辑,比如差异化参数赋值、状态触发等
    newAgent.individualAttribute = uniform(1, 100);
}
  • 运行后事件会按照泊松间隔触发,单次触发下循环生成的所有Agent都属于同一批次,时间戳完全统一,所有Agent自动存入batchAgents种群,支持单独遍历、操作。

注意:不建议在生成循环内每次调用time()给Agent赋值,虽然同一事件执行时模型时间不会推进,但提前将时间存为固定变量是更稳妥的写法,可彻底规避极端情况下的浮点精度误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:48:30