当前位置: 首页 > 知识库问答 >
问题:

Anylogic:测量过程时间而不考虑晚上的等待时间

秦永望
2023-03-14

我已经为我们的生产过程创建了一个离散模拟模型,其中应模拟来年的产能、产量等。该模型可行,但我在测量过程时间方面有问题。我们的生产时间仅为上午7点至下午3点。是否有办法设置TimeMeasureStart和TimeMeasureEnd块,以便仅在轮班期间测量时间?

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

代理在下午2:30通过TimeMeasureStart,并立即进入服务区。保养时间为2小时。工作人员启动服务并在下午3:00回家。代理从下午3:00到上午7:00在服务区等待。工作人员继续服务(直到上午8:30)。完成后,代理将通过TimeMeasureEnd块。目前的处理时间为18小时。然而,我只想测量工作的时间,所以我得到2小时作为处理时间。

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

共有1个答案

邓翼
2023-03-14

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

但通常为了报告或在模型中具有不同的轮班模式,需要以日历时间为基础。

这里有一个简单的解决方案:只需记录通过您自己的局部变量捕获资源的时间。

您需要为代理添加两个双变量:1为上次启动,1为累计时间

然后使用捕获时的代码和释放时的代码将时间保存在资源池中

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

 类似资料:
  • 问题内容: 我找不到如何测量线程等待锁定的时间。我必须确定一个线程是否正在等待锁定超过1秒,如果需要,则运行另一个线程。谢谢! 问题答案: 试试这个:

  • 我希望你们都平安无事, 假设我有第一张照片中显示的这个系统。有2个源链接到2个不同的代理类型。他们从同样的延迟送达。 我的目标:是从第一个源找到代理的等待时间,从第二个源找到代理的等待时间。 我所做的:我首先使用了“timemeasureend”数据集。我运行了模拟,然后检查了日志中的datasets_Log。(见图二)。 我的问题是:我无法知道哪些代理来自源1,哪些来自源2。它只是给我基于FIF

  • 我正在尝试Flink对从CSV文件加载的(排序的)时间戳事件进行基本聚合。 我告诉Flink使用活动时间: 然后我在KeyedStream上使用一个时间窗口 问题是,将窗口更改为10分钟实际上会在该时间过后打印结果! 我的理解是,通过明确告诉Flink使用时间戳字段作为事件时间,操作将不依赖于机器上的实时性。我错过什么了吗?

  • 我观察到每次发出“编译”任务时,SBT都会编译所有源文件,而不管上次编译后的时间戳如何。以下是我的build.sbt文件: 以下是我的项目结构(忽略的项目和目标目录): 出于测试目的,这两个源文件只是空的对象定义。 当我输入“sbt编译”时,我得到了以下信息: 我可以在目标目录中找到新编译的类文件。 没有修改任何源文件,一分钟后,再次键入“sbt compile”,我得到了相同的信息和类文件,只是

  • 我们有一个限制实现,基本上可以归结为: 我想收集关于信号量对方法的整体响应时间的影响的指标。例如,我想知道等待获取的线程数量,等待的时间等等。我想,我正在寻找的是一种也能捕捉时间信息的量规。 如何测量Semphore统计数据?

  • 我在Git中有两个主要分支:和。 我的分支的结构如下: 在我执行合并之前,和在提交、和的master中有一个共同的父级 ,我删除了一些文件(比如和)当它们仍然存在于分支中的提交中时,它们不正确。 因此,当我通过创建提交来执行三方合并以加入和时,不再包含foo和bar!Git没有以任何方式通知我他们失踪的消息。 在我看来,因为,和只是在提交之后重新播放,因此和都消失了。 Git合并的这种行为对我来说