Anylogic:测量处理时间而不考虑晚上的等待时间

Anylogic: Measuring process time without considering waiting time during evening

我已经为我们的生产流程创建了一个离散模拟模型,其中应该模拟来年的产能、产量等。该模型有效,但我在测量处理时间时遇到问题。我们的作品仅从 7 a.m 起有效。到 3 p.m。有没有办法设置 TimeMeasureStart 和 TimeMeasureEnd 块,以便仅在轮班期间测量时间?

作为具有 TimeMeasureStart、服务和 TimeMeasureEnd 块的简化示例:

代理在 2:30 p.m 传递 TimeMeasureStart。并立即进入服务区。服务时间为2小时。工作人员启动服务并在 3:00 p.m 回家。代理在 3:00 p.m 的服务块中等待。至 7:00 a.m。在 7 a.m。工作人员继续服务(直到 8:30 a.m。)。一旦完成,代理就会传递 TimeMeasureEnd 块。结果是目前的处理时间为 18 小时。但是,我只想测量工作的时间,所以我得到 2 小时作为处理时间。

是否可以相应地设置/编程 TimeMeasureStart / TimeMeasureEnd 块,以便不包括等待时间?

我的第一个建议是确保您确实需要日历时间,为什么不 运行 以小时为单位的模型,每个小时都是一个工作时间...那么您就不需要改变时间表.

但通常为了报告或在您的模型中有不同的班次模式需要您需要日历时间作为基础。

这里有一个简单的解决方案:通过自己的局部变量记录资源被占用的时间。

你需要给你的agent添加两个double变量,1为上次启动时间,1为累计时间 previousServiceStartcummServiceTime

然后使用On seizeOn release代码将时间保存在资源池中

我使用 (MyAgent)agent 代码将代理转换为我的自定义代理,以便我可以访问变量