AnyLogic中创建每日定时循环事件移除所有Customer Agent的技术求助
AnyLogic定时清除Customers群体Agent解决方案
一、设置定时循环事件
- 从「流程建模」面板拖拽循环事件到主画布
- 在事件属性面板配置:
- 「首次触发时间」:输入目标特定时间,比如要早上8点触发就写
timeToDateTime(8, 0, 0) - 「重复间隔」:填写
24*60*60(AnyLogic以秒为时间单位,24小时对应86400秒)
- 「首次触发时间」:输入目标特定时间,比如要早上8点触发就写
二、编写正确的清除代码
你之前写的Object Customer=null;只是声明了一个空变量,完全没有执行移除Agent的逻辑,替换成以下代码:
// 倒序遍历Customers群体,避免索引错位 for (int i = customers.size() - 1; i >= 0; i--) { Person customer = customers.get(i); // 先移除流程图关联,确保Agent脱离流程 if (customer.getAgentFlow() != null) { customer.getAgentFlow().remove(customer); } // 从群体移除并销毁Agent customers.remove(customer); customer.destroy(); }
- 注意:把代码中的
customers替换成你实际的Customers群体变量名(如果你的群体名不同) - 倒序遍历的原因:正序遍历移除元素后,集合长度变化会导致后续索引越界
三、验证效果
运行模型后,到设定的触发时间,检查流程图和Customers群体的Agent数量,确认无残留
内容的提问来源于stack exchange,提问作者Umbez
相关产品推荐
相关产品推荐

