From 082ce62245f66477bb8d97384632a41a1c67c5f8 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 17 十二月 2024 16:30:10 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/RetreatNavigateNode.java | 13 ++++++ zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/NavigateNode.java | 15 +++++++ zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java | 12 +++--- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java | 58 +++++------------------------ 4 files changed, 44 insertions(+), 54 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java index fa4c317..f51d239 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java @@ -80,13 +80,13 @@ RetreatNavigateNode finialNode = null; PriorityQueue<RetreatNavigateNode> openQueue = new PriorityQueue<>(); - ArrayList<RetreatNavigateNode> existNodes = new ArrayList<>(); + Set<RetreatNavigateNode> existNodes = new HashSet<>(); openQueue.add(start); existNodes.add(start); boolean phaseSecond = true; - while (openQueue.size() > 0 && null == finialNode) { + while (!openQueue.isEmpty() && null == finialNode) { RetreatNavigateNode currentNode = openQueue.poll(); @@ -203,7 +203,7 @@ int actualLanesOfTurn = 0; int filterPointOfTurnTimes = 0; - while (openQueue.size() > 0 && null == finialNode) { + while (!openQueue.isEmpty() && null == finialNode) { RetreatNavigateNode currentNode = openQueue.poll(); List<RetreatNavigateNode> enableNodes = new ArrayList<>(); @@ -315,7 +315,7 @@ } // 鑾峰彇鍥涘懆鑺傜偣 - private ArrayList<RetreatNavigateNode> getNeighborNodes(RetreatNavigateNode currentNode, List<RetreatNavigateNode> existNodes) { + private ArrayList<RetreatNavigateNode> getNeighborNodes(RetreatNavigateNode currentNode, Set<RetreatNavigateNode> existNodes) { int x = currentNode.getX(); int y = currentNode.getY(); @@ -345,7 +345,7 @@ return neighbourNodes; } - private RetreatNavigateNode extendNeighborNodes(RetreatNavigateNode currentNode, RetreatNavigateNode extendNode, List<RetreatNavigateNode> existNodes, Integer dx, Integer dy) { + private RetreatNavigateNode extendNeighborNodes(RetreatNavigateNode currentNode, RetreatNavigateNode extendNode, Set<RetreatNavigateNode> existNodes, Integer dx, Integer dy) { RetreatNavigateNode nextNode; if (null == dx || null == dy) { @@ -371,7 +371,7 @@ return extendNeighborNodes(currentNode, nextNode, existNodes, dx, dy); } else { - if (this.isExist(nextNode, existNodes)) { + if (existNodes.contains(nextNode)) { return null; } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java index 0f4def0..1f506ac 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java @@ -50,7 +50,7 @@ Integer maxAgvCountInLane = configService.getVal("maxAgvCountInLane", Integer.class); PriorityQueue<NavigateNode> openQueue = new PriorityQueue<>(); - ArrayList<NavigateNode> existNodes = new ArrayList<>(); + Set<NavigateNode> existNodes = new HashSet<>(); openQueue.add(start); existNodes.add(start); @@ -59,7 +59,7 @@ DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(null); String[][] waveMatrix = mapDataDispatcher.getWaveMatrix(null); - while (openQueue.size() > 0) { + while (!openQueue.isEmpty()) { // 鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎锛屽彇F鍊兼渶灏忕殑鑺傜偣 NavigateNode currentNode = openQueue.poll(); @@ -175,7 +175,7 @@ } // 鑾峰彇鍥涘懆鑺傜偣 - private ArrayList<NavigateNode> getNeighborNodes(NavigateNode currentNode, int[][] mapMatrix, List<NavigateNode> existNodes) { + private ArrayList<NavigateNode> getNeighborNodes(NavigateNode currentNode, int[][] mapMatrix, Set<NavigateNode> existNodes) { //鑾峰彇褰撳墠缁撶偣鐨剎, y int x = currentNode.getX(); int y = currentNode.getY(); @@ -183,29 +183,29 @@ ArrayList<NavigateNode> neighbourNodes = new ArrayList<>(); NavigateNode rightNode = extendNeighborNodes(currentNode, new NavigateNode(x, y + 1), mapMatrix, existNodes, null, null); - if (is_valid(currentNode, rightNode, mapMatrix, existNodes)) { + if (is_valid(currentNode, rightNode)) { neighbourNodes.add(rightNode); } NavigateNode leftNode = extendNeighborNodes(currentNode, new NavigateNode(x, y - 1), mapMatrix, existNodes, null, null); - if (is_valid(currentNode, leftNode, mapMatrix, existNodes)) { + if (is_valid(currentNode, leftNode)) { neighbourNodes.add(leftNode); } NavigateNode topNode = extendNeighborNodes(currentNode, new NavigateNode(x - 1, y), mapMatrix, existNodes, null, null); - if (is_valid(currentNode, topNode, mapMatrix, existNodes)) { + if (is_valid(currentNode, topNode)) { neighbourNodes.add(topNode); } NavigateNode bottomNode = extendNeighborNodes(currentNode, new NavigateNode(x + 1, y), mapMatrix, existNodes, null, null); - if (is_valid(currentNode, bottomNode, mapMatrix, existNodes)) { + if (is_valid(currentNode, bottomNode)) { neighbourNodes.add(bottomNode); } return neighbourNodes; } - private NavigateNode extendNeighborNodes(NavigateNode currentNode, NavigateNode extendNode, int[][] mapMatrix, List<NavigateNode> existNodes, Integer dx, Integer dy) { + private NavigateNode extendNeighborNodes(NavigateNode currentNode, NavigateNode extendNode, int[][] mapMatrix, Set<NavigateNode> existNodes, Integer dx, Integer dy) { NavigateNode nextNode = null; if (null == dx || null == dy) { @@ -230,7 +230,7 @@ } else { - if (isExist(nextNode, existNodes)) { + if (existNodes.contains(nextNode)) { return null; } @@ -257,49 +257,12 @@ } } - private boolean is_valid(NavigateNode currentNode, NavigateNode node, int[][] mapMatrix, List<NavigateNode> existNodes) { + private boolean is_valid(NavigateNode currentNode, NavigateNode node) { if (null == node) { return false; } -// int x = node.getX(); -// int y = node.getY(); -// if (x < 0 || x >= mapMatrix.length -// || y < 0 || y >= mapMatrix[0].length) { -// return false; -// } -// -// // 濡傛灉缁撶偣鐨勪綅缃皬浜�0锛屽垯涓嶅悎娉� -// if (mapMatrix[x][y] < 0) return false; -// -// if (is_exist(node, existNodes)) { -// return false; -// } -// -// // 鍒ゆ柇閫氳繃鎬� -// String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(null); -// String currentNodeCodeData = codeMatrix[currentNode.getX()][currentNode.getY()]; -// String nextNodeCodeData = codeMatrix[node.getX()][node.getY()]; -// node.setCodeData(nextNodeCodeData); -// -// Route route = routeService.findByCodeOfBoth( -// codeService.selectByData(currentNodeCodeData).getId(), -// codeService.selectByData(nextNodeCodeData).getId() -// ); -// if (null == route) { -// return false; -// } - return true; } - -// private boolean is_exist(NavigateNode node, List<NavigateNode> existNodes) { -// for (NavigateNode exist_node : existNodes) { -// if (node.getX() == exist_node.getX() && node.getY() == exist_node.getY()) { -// return true; -// } -// } -// return false; -// } private boolean isExist(NavigateNode node, List<NavigateNode> existNodes) { for (NavigateNode existNode : existNodes) { @@ -324,7 +287,6 @@ // Code code1 = codeService.selectByData(node1.getCodeData()); // Code code2 = codeService.selectByData(node2.getCodeData()); // return (int) (Math.abs(code2.getX() - code1.getX()) + Math.abs(code2.getY() - code1.getY())); - return Math.abs(node2.getX() - node1.getX()) + Math.abs(node2.getY() - node1.getY()); } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/NavigateNode.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/NavigateNode.java index f3bab8b..a27e0d9 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/NavigateNode.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/NavigateNode.java @@ -3,6 +3,7 @@ import lombok.Data; import java.io.Serializable; +import java.util.Objects; import java.util.Optional; /** @@ -74,4 +75,18 @@ } return null; } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof NavigateNode)) return false; + NavigateNode that = (NavigateNode) obj; + return this.x == that.x && this.y == that.y; + } + + @Override + public int hashCode() { + return Objects.hash(x, y); + } + } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/RetreatNavigateNode.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/RetreatNavigateNode.java index c6c6134..0df1925 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/RetreatNavigateNode.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/RetreatNavigateNode.java @@ -3,6 +3,7 @@ import lombok.Data; import java.io.Serializable; +import java.util.Objects; import java.util.Optional; @Data @@ -68,5 +69,17 @@ return null; } + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof RetreatNavigateNode)) return false; + RetreatNavigateNode that = (RetreatNavigateNode) obj; + return this.x == that.x && this.y == that.y; + } + + @Override + public int hashCode() { + return Objects.hash(x, y); + } } -- Gitblit v1.9.1