【问题标题】:Agents unable to leave "Conveyor Enter" block. How to wait for "space" on the conveyor before sending agent into flowchart?特工无法离开“传送带进入”块。如何在将代理发送到流程图之前等待传送带上的“空间”?
【发布时间】:2021-12-25 01:42:36
【问题描述】:

在我的模型中,拣货员沿着拣货通道移动。他们从“拣货槽”中拾取“盒子”代理,然后使用enter.take() 方法将这些“盒子”代理转移到传送带流程图中。传送带上的特定传送带和入口点是根据拣货员的当前位置动态定义的。

这样一个简单的流程图:

它大部分时间都有效,但是当流量变高时,我最终会出现以下错误。

代理当时无法离开端口 root.enter_convey.out 784.505 / 日期 2021 年 3 月 8 日上午 12:12:04(当前型号时间为 785.088)。考虑增加后续对象的容量和/或吞吐量或使用 PULL 协议

我怀疑这是由于在以下特工预定进入期间,ConveyorPath 的入口区域内出现了“盒子”特工。那是对的吗?如果不是,那是什么问题?

如果我的怀疑是正确的,我将如何确定我试图放置代理的传送带的入口区域是否被占用?如果空间空闲,我将如何编写条件以便仅将代理发送到传送流程图中?

编辑 - 更多细节,跟进 Yashar 的回答:

我有多个传送带/拣货通道,每个通道内都有多个拣货员。

假设选择器 1 在偏移量 A 处从 Box X 下落,并且当前没有空间。 Box X 进入并留在队列中。

与此同时,拾取器 2 在偏移量 B 处从 Box Y 下落,并且也没有空间。 Box Y 进入并留在 Box X 后面的队列中。

现在根据队列块功能,即使在偏移 B 处为 Box Y 释放空间,Box Y 仍然必须等待 Box X 进入传送带才能进入自身。那不是我正在寻找的行为。我对 Queue 块的理解是否正确?

谢谢。

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    您可以在 enter_convey 之后添加队列块。不要忘记在那里勾选最大容量。如果您的输送系统有一个可以容纳的最大单元数,那么很自然地,在该限制之后,没有单元可以进入系统。您可以这样做,也可以将它们保留在前一个站点(使用带有“stopDelay()”选项的延迟块),每当传送带中有空位时,您可以发送信号以停止延迟并将其发送到传送带系统。

    【讨论】:

    • 感谢您的回答。我不敢相信我错过了如此明显的解决方案。但是,这在我的上下文中可以正常工作吗?我为我相当模糊的初始问题道歉。我在原始帖子中添加了一些额外的上下文。
    • 很高兴它有帮助。请不要忘记接受它作为答案。
    • 我在原始帖子中添加了一些细节。我想知道在我的情况下是否可以简单地添加一个 Queue 块。你能看看吗?先感谢您。 @Yashar Ahmadov
    猜你喜欢
    • 2019-03-01
    • 2014-02-10
    • 2023-03-14
    • 1970-01-01
    • 2011-03-25
    • 2017-06-26
    • 2019-09-25
    • 2019-06-16
    • 1970-01-01
    相关资源
    最近更新 更多