AnyLogic中实现每日9点自动释放Wait Block内所有智能体
每日上午9点精准释放Wait Block中所有智能体的AnyLogic方案
方案一:使用Event模块实现每日重复触发
- 拖拽一个
Event模块到模型画布,命名为dailyReleaseEvent - 配置触发规则:
- 触发类型选择**"At a specified time"**,点击时间配置按钮
- 设置时间为
9:00:00 AM,重复选项选择**"Every day"** - 在Event的
Action代码框中输入:yourWaitBlockName.releaseAll();(替换yourWaitBlockName为你实际的Wait Block模块名称)
方案二:动态事件递归触发(适合灵活控制场景)
如果需要更灵活的时间控制,可在模型启动时创建动态事件,自动递归生成次日的触发任务:
- 在Main模块的
on startup事件中添加以下代码:// 计算首个触发的9点时间 Date next9AM = getTime(); next9AM.setHours(9); next9AM.setMinutes(0); next9AM.setSeconds(0); if (getTime().after(next9AM)) { // 当前时间已过9点,触发时间设为次日9点 next9AM = addDays(next9AM, 1); } // 创建动态事件,触发后自动生成下一日的任务 createEvent(new Agent() { public void execute() { yourWaitBlockName.releaseAll(); // 计算次日9点并创建新事件 Date nextDay9AM = addDays(getTime(), 1); nextDay9AM.setHours(9); nextDay9AM.setMinutes(0); nextDay9AM.setSeconds(0); createEvent(this, nextDay9AM); } }, next9AM);
关键注意事项
- 确保Wait Block的
Wait condition设置为持续阻塞(比如设为true),这样releaseAll()方法才能正常释放所有等待的智能体 - 测试时可调整模型时间加速,验证触发的精准性
内容的提问来源于stack exchange,提问作者Aqeel Tariq
相关产品推荐
相关产品推荐

