From 86620f192814851deb88c1a1bc78ba8555966cda Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 03 一月 2025 15:34:16 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java | 44 +++++++++++++++++++++++++------------------- 1 files changed, 25 insertions(+), 19 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 ef32661..139fa84 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 @@ -15,7 +15,6 @@ import org.springframework.stereotype.Service; import java.util.*; -import java.util.concurrent.CopyOnWriteArrayList; /** * Created by vincent on 6/12/2024 @@ -63,15 +62,23 @@ String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(null); DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(null); String[][] waveMatrix = mapDataDispatcher.getWaveMatrix(null); + + long getNeighborNodesTime = 0; + int getNeighborNodesCount = 0; + while (!openQueue.isEmpty()) { // 鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎锛屽彇F鍊兼渶灏忕殑鑺傜偣 AStarNavigateNode currentNode = openQueue.poll(); // 缁堢偣 if (currentNode.getX() == end.getX() && currentNode.getY() == end.getY()) { +// System.out.println("getNeighborNodes spend time: " + getNeighborNodesTime +", count: " + getNeighborNodesCount); return currentNode; } + long currentTime = System.currentTimeMillis(); List<AStarNavigateNode> neighbourNodes = this.getNeighborNodes(currentNode, mapMatrix, existNodes); + getNeighborNodesTime += System.currentTimeMillis() - currentTime; + getNeighborNodesCount ++; for (AStarNavigateNode node : neighbourNodes) { node.setCodeData(codeMatrix[node.getX()][node.getY()]); @@ -97,6 +104,9 @@ assert !vehicle.equals(DynamicNodeType.BLOCK.val); if (!vehicle.equals(DynamicNodeType.ACCESS.val)) { if (!vehicle.equals(agvNo)) { + if (lock) { + continue; + } // 濡傛灉瀛樺湪杞﹁締锛屽垯澧炲姞鏉冮噸 2 鎴栬�� 3锛屽洜涓烘嫄鐐逛細澧炲姞鏉冮噸 1 // vehicle宸茬粡涓哄綋鍓峴egment鍋氳繃浜嗛伩璁╋紝涓旈伩璁╀换鍔″凡瀹屾垚锛屽垯鏉冮噸鍊煎鍔� @@ -107,10 +117,6 @@ weight += (WEIGHT_CALC_FACTOR * 2); } } - - if (lock) { - continue; - } } } @@ -120,7 +126,6 @@ if (!waveNode.equals(WaveNodeType.ENABLE.val)) { List<String> waveNodeList = MapDataUtils.parseWaveNode(waveNode); List<String> otherWaveList = MapDataUtils.hasOtherWave(waveNodeList, agvNo); - if (!Cools.isEmpty(otherWaveList)) { if (lock) { @@ -178,7 +183,7 @@ // existNodes.add(node); } } - +// System.out.println("getNeighborNodes spend time: " + getNeighborNodesTime +", count: " + getNeighborNodesCount); return null; } @@ -191,14 +196,8 @@ int y = currentNode.getY(); AStarNavigateNode parent = currentNode.getParent(); - List<AStarNavigateNode> neighbourNodes = new CopyOnWriteArrayList<>(); - -// List<AStarNavigateNode> possibleNodes = Arrays.asList( -// new AStarNavigateNode(x, y + 1), // right -// new AStarNavigateNode(x, y - 1), // left -// new AStarNavigateNode(x - 1, y), // up -// new AStarNavigateNode(x + 1, y) // down -// ); +// List<AStarNavigateNode> neighbourNodes = new CopyOnWriteArrayList<>(); + List<AStarNavigateNode> neighbourNodes = new ArrayList<>(); List<AStarNavigateNode> possibleNodes = new ArrayList<>(); for (int[] d: DIRECTIONS) { @@ -211,10 +210,17 @@ possibleNodes.add(new AStarNavigateNode(nx, ny)); } - possibleNodes.parallelStream() - .map(extendNode -> extendNeighborNodes(currentNode, extendNode, mapMatrix, existNodes, null, null)) - .filter(Objects::nonNull) - .forEach(neighbourNodes::add); +// possibleNodes.parallelStream() +// .map(extendNode -> extendNeighborNodes(currentNode, extendNode, mapMatrix, existNodes, null, null)) +// .filter(Objects::nonNull) +// .forEach(neighbourNodes::add); + + for (AStarNavigateNode pn : possibleNodes) { + AStarNavigateNode next = extendNeighborNodes(currentNode, pn, mapMatrix, existNodes, null, null); + if (next != null) { + neighbourNodes.add(next); + } + } return neighbourNodes; } -- Gitblit v1.9.1