在 Anylogic 中移动一个代理到另一个代理中
Posted
技术标签:
【中文标题】在 Anylogic 中移动一个代理到另一个代理中【英文标题】:Moving one agent within another agent in Anylogic 【发布时间】:2016-02-17 12:13:30 【问题描述】:我正在 Anylogic 中制作简单的配送中心。我确实制作了卡车代理,我能够将它从一个 gis 点移动到另一个 gis 点。
但是我想将一些其他代理(假设是香蕉代理)加载到我的卡车代理中,然后卡车开始他们的旅程(如果卡车满是香蕉)。我该怎么做?
【问题讨论】:
卡车是代理。您可以在代理内部创建模型,在这种情况下,将源->接收器将香蕉移动到卡车上。我会做类似的事情 【参考方案1】:我希望你已经解决了差不多一年前的问题。但是,由于没有具体的答案,我将把它留在这里,以供可能遇到相同问题的任何人使用。
Anylogic 的Process Modeling Library (PML) 有一个称为Pickup 的元素及其相反的Dropoff。这用于完全按照您的要求进行操作:将某些元素装载到运输车(卡车、叉车甚至是人)中。
要按照您的要求使用该块,您需要一个如图所示的拓扑:
队列 元素是在提取发生之前保存元素所必需的。 Pickup 元素可能会以三种模式选择元素:
当给定条件为真时; 确切的金额(如果有); 所有可用的代理。我假设所有卡车必须完全装满至最大容量。因此,选择的模式将是第二个模式,其中确切的数量将是 TruckCapacity,代理 Truck 的参数。 所选模式将代理(在本例中为香蕉)提取到所需数量。但是,如果没有可用的或当前数量低于预期,Pickup 块的本机行为是允许 container 元素简单地通过它并挑选只有可用的。
为防止此类行为,我创建了一个限制区域,一次只能停放 1 辆卡车。此外,Hold 阻止WaitFullyLoaded(设置为最初阻止)强制容器代理Truck 完全加载。每当 Banana 进入 Queue waitTruck 时,就会执行验证以检查是否可以填充 1 个 Truck。如果是这样,允许那辆卡车通过:
if(self.size()/TruckCapacity>=1)
WaitFullyLoaded.unblock();
再次阻塞WaitFullyLoaded,当卡车通过restrictedAreaEnd阻塞时,它执行WaitFullyLoaded.block();
主要思想是这样的。但是,可以添加和更改许多功能。
希望对你有帮助,
路易斯
【讨论】:
以上是关于在 Anylogic 中移动一个代理到另一个代理中的主要内容,如果未能解决你的问题,请参考以下文章