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/AStarNavigateService.java | 58 ++++++++++------------------------------------------------ 1 files changed, 10 insertions(+), 48 deletions(-) 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()); } -- Gitblit v1.9.1