在 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 中移动一个代理到另一个代理中的主要内容,如果未能解决你的问题,请参考以下文章

在 Anylogic 仿真中很难找到代理的当前位置

(Anylogic)如何从另一个代理引用 Main

Anylogic,动画队列

如何在离散事件模拟中的 Anylogic 中绘制代理在图上行驶的距离?

在 AnyLogic 中导航到代理/代理的默认视图?

在 Anylogic 中添加/注入代理到队列