问题描述
所以我有一辆汽车将在模拟的前 50 分钟内提取准确数量(等待)。在这 50 分钟过去后,我想要同一辆车来取货(如果有的话)。我该怎么办?
解决方法
默认为第一次设置。
创建一个事件以在 50 分钟后触发并使其执行此代码:
myPickupObject.set_pickupType(PickupType.QUANTITY);
,
替代方法(避免复杂的 Java 编码)是使用 2 个 Pickup 块,每个块都有不同的设置。在它们之前放置一个 SelectOutput
块,并在 time()>50*minute()
条件中使用 SelectOutput
将代理路由到相应的块
这里有一种方法可以让容器实体在取货中等待一段时间t,然后带着任何已取货的实体离开。示例模型如下所示:
有两个关键组件:
- 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);
}
}
}
- 在pickup
on enter
操作中包含以下代码:`create_ReleaseOnTimeout(10,container);
这是如何工作的:
-
pickup 配置为具有
Exact quantity (wait for)
行为 - 一个容器对象进入拾取块拾取
- 在进入时,一个动态事件 ReleaseOnTimeout 被安排在 10 个单位内检查 容器
- 如果有足够数量的实体可用,则容器将它们捡起并离开
- 替代 (4),如果到 10 个单位时 容器 仍然卡在 pickup 中,那么它将被移除并放入 enter