You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取AGV当前所在节点名称?DES物料搬运库Java函数问询

获取AGV当前所在矩形节点名称的Java方法(AnyLogic物料搬运库)

在AnyLogic物料搬运库的离散事件仿真模型中,要在AGV触发事件的action逻辑里获取当前所在矩形节点的名称,可通过以下几种方式实现:

1. 通过AGV位置匹配节点范围

如果你的矩形节点是自定义的区域对象(如Rectangle或Node),可以遍历所有节点并判断AGV当前坐标是否在节点范围内:

// 假设你已将所有矩形节点存入集合nodes(比如ArrayList<Node>)
Node currentNode = null;
for(Node node : nodes) {
    if(node.contains(agv.getX(), agv.getY())) {
        currentNode = node;
        break;
    }
}

if(currentNode != null) {
    String nodeName = currentNode.getName();
    // 根据节点名称执行对应动作
    switch(nodeName) {
        case "node1":
            // action 1
            break;
        case "node2":
            // action 2
            break;
        default:
            // 默认动作
            break;
    }
}

2. 通过路径段关联节点

若矩形节点是路径的父容器或与路径段绑定,可先获取AGV当前行驶的路径段,再关联到所属节点:

PathSegment currentSegment = agv.getCurrentPathSegment();
if(currentSegment != null) {
    // 假设节点是路径段的父对象
    Node currentNode = (Node) currentSegment.getOwner();
    String nodeName = currentNode.getName();
    // 执行对应动作逻辑
}

3. 直接调用AGV内置方法(版本依赖)

部分AnyLogic物料搬运库版本中,AGV对象提供了getCurrentNode()方法可直接获取当前所在节点:

Node currentNode = agv.getCurrentNode();
if(currentNode != null) {
    String nodeName = currentNode.getName();
    // 后续动作判断
}

注意事项

  • 若事件绑定在AGV代理内部,直接用this替代代码中的agv即可引用当前AGV实例;
  • 确保节点对象的name属性已正确设置,避免空值或匹配错误。

内容的提问来源于stack exchange,提问作者Ong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:19:50