Anylogic:如何仅对同一资源池的某些工作人员执行停机

Posted

技术标签:

【中文标题】Anylogic:如何仅对同一资源池的某些工作人员执行停机【英文标题】:Anylogic: How to execute a downtime for only some workers of a same resourcePool 【发布时间】:2021-12-04 21:27:44 【问题描述】:

我必须为一个任务建模,在一个简化的示例中,两个工作人员在他们拥有的对象队列上做一些工作。但他们的工作班次可能会有所不同,我的模型应该支持这一点。

有没有什么办法可以简单地做到这一点,即同一个资源池的每个单元都有不同的工作时间表?

我尝试了一个自行开发的解决方案,其中我使用了两个单独的资源池,每个资源池的容量为一个,并将两个资源池分配给服务块。但问题是新配置的输出率低于使用容量为 2 的单个资源池时的输出率。

在如下图所示的资源池系统中,两个工作人员同时在两个不同的部分上工作,经过 350 个时间单位后,5 个代理通过了服务块。

在容量为 2 的资源池上使用时 使用一个资源池时的模型。

本系统输出

使用两个容量为 1 的资源池时 使用两个资源池时的模型。

在新系统中输出

如上图所示,在使用两个资源池时,经过 350 个时间单位后,3 个代理已通过服务块。另一个区别是同时处理的零件数量。当我们使用一个资源池时,数量是两个,而当我们使用两个不同的资源池时,一次只处理一个部分。

有谁知道为什么会发生这种情况,有什么办法可以解决我的主要问题或我自己开发的方法的任何解决方案,以使处理速度相等?一种方式,当使用两个资源池时,同时处理的数量部分变成两个,就像以前的方式一样。

提前致谢。

【问题讨论】:

理想情况下,您应该编辑您的问题标题(鉴于已接受的答案),因为这(现在)实际上与仅对某些工人执行停机时间无关(顺便说一句,这并不容易,而且 ---在最粗略的水平上 --- 将通过拆分为具有不同停机时间特征的多个资源池来完成)。 @StuartRossiter,你能帮我找到比所谓的最粗略水平更好的方法吗? 【参考方案1】:

看,在你的第二个模型中,你告诉服务你需要两个资源来工作一个代理......你应该做的是点击你忽略的“添加列表”按钮,并将两个资源池添加为如下图所示的替代方案:

通过这样做,不是告诉服务使用每个资源池的一个单元,而是告诉它使用 resourcePool 中的一个单元或(这是一个非常重要的或)resourcePool1 中的一个单元,以防万一resourcePool1 中的资源可用

【讨论】:

请注意,AnyLogic 不一致的术语对此没有帮助。 “添加列表”实际上是添加一个替代资源集,其中每个集都是来自 1+ 个池的 1+ 个资源代理的要求。不过,帮助页面中的解释非常清楚:Library Reference Guides > Process Modeling Library > Using resources 顺便说一句,你最后一段应该真正谈论resourcePoolresourcePool1,而不是resourcePool1resourcePool2

以上是关于Anylogic:如何仅对同一资源池的某些工作人员执行停机的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AnyLogic 7 中从外部源获取资源容量?

Anylogic - 记录资源池活动

通过anylogic中的特定资源路由代理

如何仅对某些模式启用空白模式

如何使用anylogic中的参数变化从图表上的main获取某些数据?

Anylogic问题:一台机器上两个操作时间不同的操作员