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