Anylogic中timeInState函数的使用

Posted

技术标签:

【中文标题】Anylogic中timeInState函数的使用【英文标题】:Usage of timeInState function in Anylogic 【发布时间】:2020-05-19 10:31:09 【问题描述】:

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

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

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

感谢您的帮助!

【问题讨论】:

【参考方案1】:

timeInState 函数与状态图无关,而是记录资源的持续时间。它的名字相当不幸......

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

最简单的解决方案:

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

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

【讨论】:

通常我认为将时间函数与时间单位一起使用是一种很好的做法,因为它允许您稍后更改时间单位而不会造成混乱:) 当然,我只是勾勒出最简单的开始设置 :-) 是的,但他并没有询问在状态图的状态下测量时间;他正在询问资源繁忙时间...... 是的,我问的是资源繁忙时间,即资源移动或正在使用的时间。 是否可以使用这种方法测量资源繁忙时间?通过创建状态图?【参考方案2】:

timeInState 函数确实可以捕捉时间繁忙,所以你肯定有另一个问题。您应该以类似于<resource reference>.timeInState(ResourceUsageState.USAGE_BUSY) 或(指定时间单位)<resource reference>.timeInState(ResourceUsageState.USAGE_BUSY, TimeUnits.MINUTE) 的方式调用它。

您需要提供更多背景信息才能理解为什么它不适合您。

您还可以将这些代理作为资源池中的资源来获取和释放,对吗?

【讨论】:

是指 ResourcePool 块的名称还是资源池代理的名称?抓取和释放也是由 rackstore 块完成的,所以我想这没关系。 此外,应该从“代理”选项卡或从流程建模库(“代理类型”或“资源类型”选项卡)创建代理。我相信他们两个是不同的。代理是指我们在 ResourcePool 选项卡中指定的代理。 它必须在资源池中的代理(而不是资源池本身)上调用,是的,资源池的代理类型需要通过资源类型元素(即与通过新建 --> 代理类型创建它并勾选“在流程图中使用”作为资源相同)。如果没有,则它没有可用的timeInState 方法。 我从资源类型元素创建的资源池的代理中调用了 。正如您所提到的,该功能应该列在菜单中,但它不存在。我之前能够看到该函数,因为我一直将资源引用作为资源池的名称。你知道为什么方法不可用吗?

以上是关于Anylogic中timeInState函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AnyLogic 8.4.0 中包含 JAXB 函数?

Java中等效的Anylogic函数“zidz”是啥?

Anylogic 的 Agent 人口和 SD 住房示例中的 Add_people() 函数

将 toDate 函数设置为到达时间 Anylogic

AnyLogic sims 的函数拟合和数据拟合

Anylogic - 停车延迟块