1

因此,对于我在工业工程领域的项目,我正在使用 Anylogic 软件制作仓库模拟和优化模型。我想知道我的选择器在忙碌(即移动)上花费的时间,所以我遇到了这个内置函数“timeInState”。这有助于我确定选择器“忙碌”的总时间。

我面临的问题是,在调用此函数时,我没有得到任何值(0),但我的选择器显然在模型中移动。也许我给出的参数不是正确的方法。我在想是否有熟悉这个的人可以帮助我?. 为明确该函数,其含义及参数初始化如下:

double timeInState(ResourceUsageState state) - 返回设备到目前为止在给定“使用状态”中花费的时间。参数:state - 状态(ResourceUsageState.USAGE_IDLE 或 ResourceUsageState.USAGE_BUSY)

谢谢你的帮助 !

4

2 回答 2

0

timeInState功能与状态图无关,但记录资源的持续时间。不幸的是,它被命名为...

没有内置的方法来测量状态持续时间(有充分的理由;-))。

最简单的解决方案:

  1. 创建一个双变量timer和另一个timeInStateX
  2. 进入你的状态 X,设置timer=time()
  3. 在您的状态 X 退出时,将持续时间添加为timeInStateX += (time()-timer

不过,请确保不要意外覆盖其他地方的计时器

于 2020-02-03T19:02:15.323 回答
0

timeInState功能确实可以捕获忙碌的时间,因此您必须遇到另一个问题。您应该以类似于<resource reference>.timeInState(ResourceUsageState.USAGE_BUSY)or (指定时间单位)的方式调用它<resource reference>.timeInState(ResourceUsageState.USAGE_BUSY, TimeUnits.MINUTE)

您需要提供更多上下文以了解为什么它不适合您。

您也在 ResourcePool 中将这些代理作为资源获取和释放,对吗?

于 2020-02-05T21:57:26.683 回答