From 478aa1b99100ce75757e6aad96457d4b769474f4 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 30 十二月 2024 16:33:10 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java | 25 ++++++++++++------------- 1 files changed, 12 insertions(+), 13 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 f26ba52..656cd63 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 @@ -1,6 +1,7 @@ package com.zy.acs.manager.core.service.astart; import com.zy.acs.common.constant.RedisConstant; +import com.zy.acs.common.utils.GsonUtils; import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.MapDataUtils; @@ -11,14 +12,17 @@ import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.service.JamService; import com.zy.acs.manager.system.service.ConfigService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; /** * Created by vincent on 6/12/2024 */ +@Slf4j @Service public class AStarNavigateService { @@ -58,9 +62,10 @@ // 鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎锛屽彇F鍊兼渶灏忕殑鑺傜偣 NavigateNode currentNode = openQueue.poll(); - ArrayList<NavigateNode> neighbourNodes = this.getNeighborNodes(currentNode, mapMatrix, existNodes); + List<NavigateNode> neighbourNodes = this.getNeighborNodes(currentNode, mapMatrix, existNodes); for (NavigateNode node : neighbourNodes) { node.setCodeData(codeMatrix[node.getX()][node.getY()]); + boolean isEndNode = node.getX() == end.getX() && node.getY() == end.getY(); int weight = 0; @@ -116,30 +121,24 @@ } // 鍗曞贩閬撹溅杈嗗杞芥暟閲� - Lane lane = laneService.search(node.getCodeData()); - if (null != lane) { + List<int[]> laneCodeIdxList = laneService.getLaneCodeIdxList(node.getCodeData()); + if (!Cools.isEmpty(laneCodeIdxList)) { Set<String> lanVehicleSet = new HashSet<>(); - List<String> laneCodes = lane.getCodes(); - for (String laneCodeData : laneCodes) { - int[] laneCodeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(null, laneCodeData); - // scan dynamicMatrix or WaveMatrix - DynamicNode laneDynamicNode = dynamicMatrix[laneCodeMatrixIdx[0]][laneCodeMatrixIdx[1]]; + for (int[] codeMatrixIdx : laneCodeIdxList) { + DynamicNode laneDynamicNode = dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]]; String laneVehicle = laneDynamicNode.getVehicle(); assert !laneVehicle.equals(DynamicNodeType.BLOCK.val); if (!laneVehicle.equals(DynamicNodeType.ACCESS.val)) { if (!laneVehicle.equals(agvNo)) { lanVehicleSet.add(laneVehicle); -// redis.setObject(RedisConstant.AGV_TO_STANDBY_FLAG, laneVehicle, true, 30); } } } - if (lanVehicleSet.size() + 1 > maxAgvCountInLane) { continue; } } - //鎵惧埌鐩爣缁撶偣灏辫繑鍥� if (isEndNode) { @@ -171,11 +170,11 @@ } // 鑾峰彇鍥涘懆鑺傜偣 - private ArrayList<NavigateNode> getNeighborNodes(NavigateNode currentNode, int[][] mapMatrix, Set<NavigateNode> existNodes) { + private List<NavigateNode> getNeighborNodes(NavigateNode currentNode, int[][] mapMatrix, Set<NavigateNode> existNodes) { int x = currentNode.getX(); int y = currentNode.getY(); - ArrayList<NavigateNode> neighbourNodes = new ArrayList<>(); + List<NavigateNode> neighbourNodes = new CopyOnWriteArrayList<>(); List<NavigateNode> possibleNodes = Arrays.asList( new NavigateNode(x, y + 1), // right -- Gitblit v1.9.1