我如何选择在同一个提货区等待的确切数量和可用数量?

问题描述

所以我有一辆汽车将在模拟的前 50 分钟内提取准确数量(等待)。在这 50 分钟过去后,我想要同一辆车来取货(如果有的话)。我该怎么办?

解决方法

默认为第一次设置。

创建一个事件以在 50 分钟后触发并使其执行此代码:

myPickupObject.set_pickupType(PickupType.QUANTITY);
,

替代方法(避免复杂的 Java 编码)是使用 2 个 Pickup 块,每个块都有不同的设置。在它们之前放置一个 SelectOutput 块,并在 time()>50*minute() 条件中使用 SelectOutput 将代理路由到相应的块

,

这里有一种方法可以让容器实体在取货中等待一段时间t,然后带着任何已取货的实体离开。示例模型如下所示:

enter image description here

有两个关键组件:

  1. ReleaseOnTimeout 动态事件,它有一个名为“_agent”的类型为 Agent 的参数和以下代码:
for (Object o : pickup.getEmbeddedObjects()) {
    // find the Delay object inside Pickup
    if (Delay.class == o.getClass().getSuperclass()) {
        // remove the container from the Delay
        Agent a = ((Delay)o).remove(_agent);
        if (a != null) {
            // send the removed container into Enter
            enter.take(a);
        }       
    }
}
  1. pickup on enter 操作中包含以下代码:`create_ReleaseOnTimeout(10,container);

这是如何工作的:

  1. pickup 配置为具有 Exact quantity (wait for) 行为
  2. 一个容器对象进入拾取拾取
  3. 在进入时,一个动态事件 ReleaseOnTimeout 被安排在 10 个单位内检查 容器
  4. 如果有足够数量的实体可用,则容器将它们捡起并离开
  5. 替代 (4),如果到 10 个单位时 容器 仍然卡在 pickup 中,那么它将被移除并放入 enter