如何将特工存储在区块中直到运输者可以移动它们?

问题描述 投票:0回答:1

我想使用一个块来代表要在程序集中使用的项目的存储区域,我使用延迟时间为0的延迟块,但也许队列块会更合适?我建立了一个模型,其中每 X 秒就有一辆“卡车”到达,如果延迟块包含的元素少于指定容量,则调用注入函数来重新填充该块。这种工作方式有效,但似乎代理正在流经延迟块的输出端口,因此不计入其容量(这对我来说很有意义......)导致我的源块在系统关闭时继续创建代理还没准备好迎接他们。我的延迟块后面跟着一个“通过传输器移动”块,它似乎立即获得所有延迟块的输出。我的模型中只有两个运输者,我不确定为什么运输者块一次可以接受两个以上的代理。我将运输车队的容量设置为 2,但这并没有解决问题。

我的目标是在工厂入口处拥有基本上无限的零件池,但仅在下游流程能够将它们拉入时才创建代理。

anylogic
1个回答
0
投票

最好在这里使用“等待”块:

让您的卡车在货物到达时将其倾倒到“等待”位置。现在,您的下游区块可以在准备好后使用

myWaitBlock.free(someAgent
来拉动它们,因为他们想从中拉动尽可能多的代理。

同样,您可以使用无限容量的 Delay,并将其类型设置为“直到调用 stopDelay()”。然后与“等待”块类似,您可以在需要时调用

myDelayBlock.stopDelay(someAgent)

另一种选择:在普通(无限)队列前面使用保持块,并在准备好时将其解锁:

myHoldBlock.unBlock(numToLetThrough)
--> 可能是最简单的

© www.soinside.com 2019 - 2024. All rights reserved.