首页 > 解决方案 > Anylogic叉车碰撞记录

问题描述

我需要测量叉车在碰撞中花费的时间,但是 motion_log

在此处输入图像描述

对于由运输商管理的叉车代理类型,车队不可用。我也不能使用状态图,因为它使用了很多性能。

情况:我正在模拟一个带有单向通道的仓库,这些单向通道的容量是 2 辆车。有情况

在此处输入图像描述

叉车(黄色的)需要在单向过道中等待另一个叉车,我目前已经正确建模了我只是不知道如何检测这种情况并记录它。

谢谢

标签: anylogic

解决方案


当运输机发生碰撞时,没有可访问的触发点(通常是块的动作)来捕获。是的,显然必须在内部捕获这种情况,以使运输者避免碰撞,但在这种情况下,它不会暴露为块动作或其他任何地方的动作。(AnyLogic 空间标记元素永远不会有动作,除了一些较新的材料处理库,如 Station,因为它们有效地代表了一个过程步骤。)

Transporter Control 块具有碰撞检测和避免的所有设置,但没有相关操作。

所以你的选择真的

  • 对于这种情况的“扫描”:Yashar 的回答,推断非空闲时的零速度意味着“由于碰撞而等待”(可能是也可能不是 100% 稳健)是一种方式。

  • 明确分解移动(从流程的角度)以定义流程中的潜在“冲突”和决策(例如,如果您试图移动到过道,移动到入口节点,在过道使用资源池或类似的,只有在空闲时才能进入)。显然,这并不能涵盖所有可能的情况,但在某些情况下可能很有用。

Transporter Control 块中确实存在的操作在这里可能会有所帮助(对于两种选择),因为至少您在进入路径和节点时有操作点。(您也可以向 AnyLogic 提出增强请求,以在此处添加与碰撞相关的操作......)

我有一个带有大量叉车的庞大模型,每秒检查任何属性都会导致巨大的性能损失

我也不能使用状态图,因为它使用了很多性能

你真的试过了吗?有些事情并不会像您想象的那样对性能造成太大影响,而且性能不应该是先验的“太慢”的事情;理想情况下,您对可接受的性能有要求,并且您可以解决这个问题。(性能、功能和可维护性之间总是需要权衡取舍。)

[你也没有说你认为使用状态图会有什么帮助。您的意思是通过状态图执行“扫描”方法,例如从扫描状态循环进入/退出?]


推荐阅读