使用 AnyLogic 的 Batch block 可以将代理分组处理,但是在后续的模拟过程中,访问这些分组中的代理可能会遇到问题。
解决方法是在 Batch block 后面连接一个 Agent Set Filter block,将 Batch block 中的代理筛选出来,并将其保存到一个 Agent Set 变量中,然后在模拟过程中访问这个 Agent Set 变量。
示例代码:
// 创建 Agent Set 变量
AgentSet
// 连接 Batch block 和 Agent Set Filter block,并将代理保存到 myAgents 变量中 batchBlock. agentSet(). filter(myAgent -> myAgent instanceof MyAgent). setOutput(myAgents);
// 在模拟过程中访问 myAgents 变量 for (MyAgent agent : myAgents) { // 访问分组后的代理 }