如何将代理存储在一个块中,直到运输者可以移动它们?

Posted

技术标签:

【中文标题】如何将代理存储在一个块中,直到运输者可以移动它们?【英文标题】:How to store agents in a block untill a tronsporter can move them? 【发布时间】:2020-08-26 07:35:20 【问题描述】:

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

任何建议都会有所帮助!也许需要一种不同的方法。我的目标是在工厂入口处拥有基本上无限的零件池,但只有在下游流程能够将它们拉入时才创建代理。提前致谢!

【问题讨论】:

【参考方案1】:

欢迎来到 SOF :)

最好在此处使用“等待”块:

让您的卡车在货物到达时将它们倾倒到“Wait”中。现在,您的下游块可以在它们准备好时使用 myWaitBlock.free(someAgent 来拉取它们,因为它们想从中拉出尽可能多的代理。

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

另一种选择:在正常(无限)队列前面使用保持块并在准备好时解除阻塞:myHoldBlock.unBlock(numToLetThrough) --> 可能是最简单的

PS:也请查看如何在 SOF 上提出好的问题,你的问题很长,通过一些截图更容易理解:) --> https://***.com/help/how-to-ask

【讨论】:

以上是关于如何将代理存储在一个块中,直到运输者可以移动它们?的主要内容,如果未能解决你的问题,请参考以下文章

检索代理抓住车队运输机作为参数

AnyLogic:停止延迟块中特定代理的延迟

Anylogic:在汇编程序块中一次组装多个代理

如何将 AnyLogic 代理从一个空间移动到另一个空间?

我如何知道从延迟块中释放了哪个代理?

将运输部分移动到 woocommerce 结帐页面的右侧