在Anylogic中的另一个代理中移动一个代理

时间:2015-11-16 11:49:14

标签: anylogic

我在Anylogic制作简单的配送中心。我确实生产卡车代理商,我可以将它从一个gis点移动到另一个gis点。

但是我想把一些其他代理商(比方说香蕉代理商)装进我的卡车代理商,然后卡车开始他们的旅程(如果卡车装满了香蕉)。我该怎么做?

1 个答案:

答案 0 :(得分:2)

我希望你差不多一年前已经解决了你的问题。但是,由于没有具体的答案,我会把它留给任何可能遇到同样问题的人。

Anylogic的流程建模库(PML)有一个名为 Pickup 的元素及其相反的 Dropoff 。这用于完全按照您的要求执行:将一些元素加载到运输车(卡车,叉车甚至是人)中。

要按照您的要求使用块,您需要一个如图所示的拓扑: topology

队列元素是保留元素直到拾取发生所必需的。 Pickup 元素可能会以三种模式选择元素:

  • 虽然给定条件为True;
  • 确切数额(如果有);
  • 所有可用的代理商。

我假设所有卡车必须完全填满其最大容量。因此,所选模式将是第二个,其中确切的金额将是 TruckCapacity ,即代理 Truck 的参数。 所选模式选择代理(在本例中为香蕉),达到所需的数量。但是,如果没有可用或当前数量低于所需数量,提取块的原生行为是允许容器元素只是通过它并选择只有什么可用。

为了防止出现这种情况,我创建了一个限制区域,一次只能有1个 Truck 。此外,保留 WaitFullyLoaded (设置为最初被阻止)会强制容器代理 Truck 完全加载。每当 Banana 进入队列 waitTruck 时,都会执行验证以检查是否可以填写1 Truck 。如果是这样,允许通过那辆卡车:

if(self.size()/TruckCapacity>=1){
    WaitFullyLoaded.unblock();
}

再次阻止 WaitFullyLoaded ,当卡车通过 restrictedAreaEnd 块时,它会执行WaitFullyLoaded.block();

主要思想是这个。但是,可以添加和更改许多功能。

希望这有帮助,

路易斯