From 8c1f46e9136937017f230b9c1a8c2c5748c1e5f6 Mon Sep 17 00:00:00 2001 From: jianghaiyue <jianghaiyue@zkyt.com> Date: 星期二, 14 十月 2025 17:28:16 +0800 Subject: [PATCH] 优化处理静止AGV的位置占用 --- algo-zkd/src/main/java/com/algo/service/RemainingPathProcessor.java | 40 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 40 insertions(+), 0 deletions(-) diff --git a/algo-zkd/src/main/java/com/algo/service/RemainingPathProcessor.java b/algo-zkd/src/main/java/com/algo/service/RemainingPathProcessor.java index 15f7545..0c411d6 100644 --- a/algo-zkd/src/main/java/com/algo/service/RemainingPathProcessor.java +++ b/algo-zkd/src/main/java/com/algo/service/RemainingPathProcessor.java @@ -34,6 +34,7 @@ /** * 澶勭悊鎵�鏈塁TU鐨勫墿浣欒矾寰勶紝鏋勫缓鏃剁┖鍗犵敤琛� + * 馃敡 淇锛氬悓鏃跺鐞嗘湁鍓╀綑璺緞鐨凙GV鍜岄潤姝GV鐨勫綋鍓嶄綅缃崰鐢� * * @param agvStatusList CTU鐘舵�佸垪琛� * @return 鏃剁┖鍗犵敤琛紝key涓�"x,y,timeSlot"锛寁alue涓篊TU缂栧彿 @@ -43,12 +44,51 @@ for (AGVStatus agv : agvStatusList) { if (agv.hasRemainingPath()) { + // 澶勭悊鏈夊墿浣欒矾寰勭殑AGV processRemainingPathOccupancy(agv, occupancyMap); + } else if (agv.getPosition() != null && !agv.getPosition().isEmpty()) { + // 澶勭悊闈欐AGV鐨勫綋鍓嶄綅缃崰鐢� + processStaticAgvOccupancy(agv, occupancyMap); } } return occupancyMap; } + + /** + * 澶勭悊闈欐AGV鐨勪綅缃崰鐢� + * + * @param agv CTU鐘舵�� + * @param occupancyMap 鏃剁┖鍗犵敤琛� + */ + private void processStaticAgvOccupancy(AGVStatus agv, Map<String, String> occupancyMap) { + String position = agv.getPosition(); + if (position == null || position.isEmpty()) { + return; + } + + // 鑾峰彇浣嶇疆鍧愭爣 + int[] coord = JsonUtils.getCoordinate(position, pathMapping); + if (coord == null) { + return; + } + + CTUPhysicalConfig config = agv.getPhysicalConfig(); + long currentTime = System.currentTimeMillis() / 1000; // 杞崲涓虹 + + // 闈欐AGV鍗犵敤褰撳墠浣嶇疆鐨勯暱鏃堕棿娈碉紙鍋囪300绉掞級 + long occupancyDuration = 300; // 300绉掔殑鍗犵敤鏃堕棿 + + for (long timeSlot = currentTime; timeSlot < currentTime + occupancyDuration; timeSlot++) { + String spaceTimeKey = coord[0] + "," + coord[1] + "," + timeSlot; + occupancyMap.put(spaceTimeKey, agv.getAgvId()); + + occupyAdjacentSpaces(coord, timeSlot, agv.getAgvId(), occupancyMap, config); + } + + System.out.println(" 闈欐AGV " + agv.getAgvId() + " 鍗犵敤浣嶇疆 " + position + + " (鍧愭爣: " + coord[0] + "," + coord[1] + ") " ); + } /** * 澶勭悊鍗曚釜CTU鐨勫墿浣欒矾寰勬椂绌哄崰鐢� -- Gitblit v1.9.1