Q Anylogic:queue.get(0) +time in queue
Posted
技术标签:
【中文标题】Q Anylogic:queue.get(0) +time in queue【英文标题】:Q Anylogic : queue.get(0) +time in queue 【发布时间】:2016-09-06 16:49:00 【问题描述】:我不想计算队列的大小,而是想识别每个队列中的不同对象,以便将它们乘以它们的平均处理时间,然后得到队列中的时间。
我尝试使用 queue.get(index) 函数识别队列中的不同对象,但我无法确定该函数返回什么。我想知道队列中的实体来自哪个来源。
例如,我从源 1 =1 调用实体,但如果我这样做 queue.get(0)==1?0.2 :0.3 它不起作用。你有什么想法可以帮助我吗?
提前致谢,
【问题讨论】:
【参考方案1】:访问队列成员
请求queue.get(index)
将返回代理对象本身。
返回的代理类型将由延迟块的代理类型设置决定。这通常应自动设置为与 Source 的 Agent 类型相同的类型,否则会出现转换错误。
获取来源信息
您从代理名称中获取来源信息的想法行不通,因为该名称与它的来源没有任何联系。
为了识别代理来自哪个来源,最直观的选择是:
-
创建和使用自定义代理类型
在此代理类型中,您添加一个变量,您可以在其中保存有关其来源的信息。字段的类型可以是包含源 id 的字符串,也可以是直接包含 Source 对象的“Source”类型
此字段填写在每个来源的“退出时”字段中
当您想识别队列中的来源时,您可以使用该字段进行比较,例如。像这样:
queue.get(index).mySourceId.equals("Source1")?0.2 :0.3
【讨论】:
以上是关于Q Anylogic:queue.get(0) +time in queue的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AnyLogic 8.4.0 中包含 JAXB 函数?
如何处理dispatch_queue_t dispatch_get_local_queue dispatch_queue_create EXC BAD ACCESS?