我正在 Anylogic 中制作简单的配送中心。我确实制作了卡车代理,并且能够将其从一个 gis 点移动到另一个 gis 点。
但是我想将其他一些代理(比如说香蕉代理)加载到我的卡车代理中,然后卡车开始他们的旅程(如果卡车满是香蕉)。我该怎么做?
我正在 Anylogic 中制作简单的配送中心。我确实制作了卡车代理,并且能够将其从一个 gis 点移动到另一个 gis 点。
但是我想将其他一些代理(比如说香蕉代理)加载到我的卡车代理中,然后卡车开始他们的旅程(如果卡车满是香蕉)。我该怎么做?
我希望你已经解决了差不多一年前的问题。但是,由于没有具体的答案,我将把它留在这里给任何可能遇到同样问题的人。
Anylogic 的流程建模库(PML) 有一个名为Pickup的元素及其相反的Dropoff。这用于完全按照您的要求进行操作:将某些元素装载到运输车(卡车、叉车甚至是人)中。
要按照您的要求使用该块,您需要一个如图所示的拓扑:
队列元素对于保持元素直到取货发生是必要的。Pickup元素可能会以三种模式拾取元素:
我假设所有卡车都必须完全装满至最大容量。因此,选择的模式将是第二个模式,其中确切的数量将是TruckCapacity,代理Truck的一个参数。所选模式将代理(在本例中为香蕉)提取到所需数量。但是,如果没有可用的或当前的数量低于预期,则Pickup块的本机行为是允许容器元素简单地通过它并仅选择可用的。
为了防止这种行为,我创建了一个限制区域,一次只能有 1辆卡车。此外,Hold块WaitFullyLoaded(设置为初始阻塞)强制容器代理Truck满载。每当香蕉进入队列 waitTruck时,都会执行验证以检查是否可以填充1辆卡车。如果是这样,允许那辆卡车通过:
if(self.size()/TruckCapacity>=1){
WaitFullyLoaded.unblock();
}
再次阻塞WaitFullyLoaded,当卡车通过restrictedAreaEnd块时,它执行WaitFullyLoaded.block();
主要思想是这样的。但是,可以添加和更改许多功能。
希望这可以帮助,
路易斯