AnyLogic 中 Pick-Up & Drop-off 函数的视觉增强

Visual Enhancement for Pick-Up & Drop-off Functions in AnyLogic

我正在尝试复制卡车取货和送货演示。我知道我可以使用这些功能来完成这项工作,但我选择的代理(嵌入了目的地和其他详细信息)不会出现在卡车“上”(假设一辆开着的 flat-bed 卡车)。

拾取和 drop-off 功能正确地保留了箱子的信息,所以一切都很好。

有人对在卡车上展示箱子有什么建议吗?我在想我可以在卡车代理中创建虚拟盒子,因为盒子被“加载”,但这似乎不是最好的选择。

这是来自一个 5 岁的 post:

理想情况下,我希望能够通过本地 x-y 坐标定位盒子代理。

感谢您的帮助。干杯。

一个建议:从字面上将盒子代理“加载”到卡车代理中。在卡车内创建一个空的 Box 人口。

当涉及到装载时,您将 box agent 从它通常所在的任何地方移除,并 add_MyBoxPopulation() 在卡车内。这将在卡车的 0,0 坐标处添加 box agent 的演示文稿,它会随卡车四处行驶。

虽然可能有点矫枉过正。如果您只是想演示和制作动画,那么卡车内有一个简单的盒子 visible/hidden 就足够了

一种选择是在卡车代理中简单地创建一个 Box 类型的集合,并根据集合中方框的数量显示或隐藏您在卡车动画中创建的一些方框

如果您有大量框,您可能不想手动绘制所有框并为每个框设置可见属性。然后您可以使用单个框,将其添加到一个组中,然后将框设置为具有自定义 x 和 Y 坐标的复制形状。坐标将参考我们创建的组。

在此示例中,我复制了与集合大小相等的框形状。每个盒子的坐标都是唯一的。 x坐标使用余数除法index%10,因此它将是0,1,2,3...9,0,1,2...9等因此我们将在卡车上有10列箱子. y 坐标将使用整数除法 (index/10),因此索引 0->9 的值为 0,索引 10->19 的值为 1,依此类推。因此,如果卡车上有 50 个箱子,则将有 10 列(一如既往)和 5 行。

每个公式末尾的 5 正好使 x 和 y 的每个新坐标相隔 5 个像素。

如果您想将盒子堆叠在一起,您可能需要为 Z 坐标添加另一个公式,例如,如果每 50 个盒子进入下一层,您的 z 坐标将为 (index/50)*5 .然后,您需要调整其他公式,以便每 50 个盒子重新开始,因此它们需要更改为

x = (index%50)%10*5

y = (index%50)/10*5

根据您的问题,使用这种方法您可以获得方框的 x、y 和 z 坐标。请注意,它将参考我们创建的组,因此您需要将组的 x 和 y 坐标添加到单个框的坐标中,以便从 agent 上的原点获取坐标。

这种方法的优点在于,您将保留对卡车内箱子的引用,并且可以在用户单击箱子或想要输出一些数据时启用一些逻辑。例如

您应该在卡车内使用大量箱子,因为调用add_MyBoxPopulation()会创建品牌箱子代理在代理里面,你宁愿保留原来的盒子代理。

您可以在取件送件功能的操作代码中轻松地向集合中添加和删除箱子