让闲置资源帮助已经服务的单位

Make an idle resource help out a unit already being served

所以,我面临的问题如下。

我有一个简单的架构,我在其中模拟了一个卸载过程,其中 2 台起重机卸载进港的船只。使用占用-延迟-释放设计,一艘入港船从“起重机”资源池中绑定一个容量点。

在此处查看描述图片:


  1. 如果只有一艘船到达,我怎样才能让两台起重机在一艘船上工作并从那里将处理时间减半?

  2. 如果有第二艘船靠岸,我要两台忙碌的起重机中的一台来帮助新到的船卸货。

有什么优雅的方法可以解决这个问题吗?

是的,应用优先级。一艘新船应该有更高的优先级,你的第二台起重机(仍然忙于 ship 1)可以被更高优先级的船使用任务抢占。 (在帮助和示例模型中查看它们是如何工作的)

如果服务时间取决于任何时间单位内为它服务的起重机数量,那么计算 1 号船的剩余时间将是唯一的困难。并非不可能,但需要一些编码。

另一种选择是更详细地模拟卸载过程。如果服务时间取决于任何时间单位内为它服务的起重机数量,这将否定计算船上剩余卸载时间的要求。

您可以将船舶可以停泊以卸载的泊位或码头建模为等待块或队列

当一艘船进入码头或泊位时,它们将使用 source.inject(numberOfUnits)

生成多个集装箱或需要在单独的逻辑流中卸载的任何单元

您可以使用 resourcePool.set_capacity(numberOfUnits)

通过增加或减少资源池中的资源数量,以编程方式对每个泊位可用的起重机数量进行建模

因此,如果一艘船到达码头 A 而码头 B 没有船,则将码头 A 的起重机的容量增加到 2。如果一艘新船随后到达码头 B,则将容量设置为两个码头的资源池为 1.

如果A码头的船离开了,那么你把B码头的资源池中的起重机分配给2,A码头的起重机分配给0,从而模拟起重机从一个码头移动到另一个码头。

这里唯一的小问题是,如果您想跟踪单个起重机的使用情况,您将需要单独存储它们,因为您将一直在销毁和创建资源单元。