如果目的地被占用,防止源块生成代理
Posted
技术标签:
【中文标题】如果目的地被占用,防止源块生成代理【英文标题】:Preventing source blocks to generate agents if destination is occupied 【发布时间】:2019-07-06 16:42:57 【问题描述】:我正在尝试为 1 个包装中的 5 件物品创建一个包装单元;从资源(工人)中取出 5 件物品并放入生成包装的包装机中;传送带将包裹从机器移动到缓冲区,每隔一段时间(比如每 20 个包裹),工人就会停止拣货并前往缓冲区,将所有包裹放入一个盒子中,理想情况下准备好发货。一旦工人完成了盒子,他必须回到他的拾取和放置任务。
现在,我的问题是:
-
当worker停止从 rackSystem 中挑选物品并进入缓冲区时,source blocks 必须停止生成代理,否则模拟将停止说 rack 中没有可用的单元格;
当工人回到他的拣货任务时,源块必须重新开始生成代理。
使用图片中的保持块,当工人停止从架子上取货时,我设法停止了源块,无论如何,当盒子完成后,我无法重新开始该过程。我该怎么做?
除了工人返回拣货地点并从货架上取走最后 5 件物品外,一切都正常,不再允许代理进入货架。
【问题讨论】:
这是我在保持块中输入的内容:模式:条件阻塞条件:rackSystem.hasSpace() == false 【参考方案1】:实际上从这个设置来看,我认为你应该这样做:
-
让您的来源不断创建代理。实际上(我想)事情也不会因为工人在做其他事情而停止。
将所有代理聚集在一个无限队列中,就像你做的那样
移除保持块
相反,让您的 RackStore 和 RackPick 对象使用工作资源池(勾选下面的框并选择您的资源池)
您可能还需要使用“自定义资源选择”选项,以确保您的工作人员仅在 RackSystem 有空间时尝试存储项目,但如下所示:
【讨论】:
我的 rackPick 块已经使用了资源池,而不是 rackStore 块(这是因为实际上该任务没有分配给同一个工作人员)。我会尝试使用自定义资源选项,我没有考虑过该选项。引入保持块(通常用于停止源块生成代理)的主要原因是,当我运行模型时,我不断收到相同的错误“机架中没有可用的单元”。感谢您的帮助! 我知道,“机架中没有可用的单元格”是一种痛苦。很抱歉一直把你送到不同的方向。您是否尝试过用“等待”对象替换队列。同时移除保持对象。并且只有 RackPick 的 OnExit(在代理离开机架系统之后)调用“myWaitObject.free(1)”。这应该适用于您的情况 不用担心。我尝试了等待块,但它告诉我“Wait 类型中的方法 free(agent) 不适用 :( 我不太明白这意味着什么,所以我回到了队列保持结构。以上是关于如果目的地被占用,防止源块生成代理的主要内容,如果未能解决你的问题,请参考以下文章