如何将数据库节点名称与AnyLogic节点关联以实现运输器调度
AnyLogic半导体生产仿真:运输器节点名称与模型节点匹配及调度实现
问题描述
我正在使用AnyLogic进行半导体生产仿真,需要控制运输器(Transporter)在各节点(Node)间移动。现有数据库包含3列:from、to、volume,其中from为运输器需优先访问的节点名称列表,to为后续访问的节点名称列表,需据此调度运输器在from到to节点间移动。模型内节点默认命名为A_1、A_2等,现在需要实现运输器按数据库数据移动,请问如何将数据库中的名称数据与现有节点匹配?
现有代码片段:
List<Tuple> rows = selectFrom(sheet1).list(); for (Tuple row : rows) { String fromNodeName = row.get(sheet1.from_db); String toNodeName = row.get(sheet1.to_db); Node locationFrom = nodeNameMap.get(fromNodeName); Node locationTo = nodeNameMap.get(toNodeName); }
解决方案
1. 初始化节点名称映射表(nodeNameMap)
你代码中用到的nodeNameMap是匹配数据库名称与模型节点实例的核心,必须先完成初始化:
- 手动初始化(适合节点数量少的场景)
在模型Main代理的On startup事件中添加代码:
// 创建HashMap存储节点名称到实例的映射 HashMap<String, Node> nodeNameMap = new HashMap<>(); // 将模型中的节点逐个加入映射 nodeNameMap.put("A_1", A_1); nodeNameMap.put("A_2", A_2); // 按此格式补充所有需要调度的节点
- 自动遍历初始化(适合节点数量多或动态生成的场景)
如果节点集中在Node Network或代理种群中,可自动遍历获取:
HashMap<String, Node> nodeNameMap = new HashMap<>(); // 假设节点都在名为nodeNetwork的Node Network组件内 for(Node node : nodeNetwork.getNodes()){ nodeNameMap.put(node.getName(), node); } // 若节点是独立代理种群,可改为: // for(MyNodeAgent node : myNodePopulation){ // nodeNameMap.put(node.getName(), node); // }
2. 节点匹配有效性校验
为避免数据库中存在模型未定义的节点名称导致空指针异常,需添加校验逻辑:
List<Tuple> rows = selectFrom(sheet1).list(); for (Tuple row : rows) { String fromNodeName = row.get(sheet1.from_db); String toNodeName = row.get(sheet1.to_db); Node locationFrom = nodeNameMap.get(fromNodeName); Node locationTo = nodeNameMap.get(toNodeName); // 校验节点是否存在 if(locationFrom == null){ traceln("警告:模型中不存在节点 " + fromNodeName); continue; } if(locationTo == null){ traceln("警告:模型中不存在节点 " + toNodeName); continue; } // 后续添加运输器调度逻辑 }
3. 运输器调度实现
拿到匹配后的节点实例后,调用Transporter的移动方法完成调度:
// 示例:使用单个运输器执行任务 transporter.moveTo(locationFrom); // 等待到达优先节点后,再移动到目标节点(可通过延迟或事件触发) transporter.moveTo(locationTo); // 如果需要结合运输量(volume)字段: // int volume = row.get(sheet1.volume); // transporter.setTransportedItemsCount(volume);
若涉及多运输器调度,可结合ResourcePool的getAvailable()方法获取空闲运输器,再分配对应任务。
内容的提问来源于stack exchange,提问作者Eric Kwon
相关产品推荐
相关产品推荐

