From 85392bb7db247c4596d3fbf49c9e00cfd0e76a13 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期四, 11 九月 2025 09:15:11 +0800 Subject: [PATCH] 1 --- algo-zkd/src/main/java/com/algo/service/PathPlanningService.java | 62 ++++++++---------------------- 1 files changed, 17 insertions(+), 45 deletions(-) diff --git a/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java b/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java index 9fef948..833510e 100644 --- a/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java +++ b/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java @@ -1,26 +1,23 @@ package com.algo.service; +import com.algo.config.EnvDataConfig; import com.algo.model.*; import com.algo.util.JsonUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.PostConstruct; import java.util.*; import java.util.concurrent.*; /** * 璺緞瑙勫垝鏈嶅姟 */ +@Service public class PathPlanningService { - /** - * 璺緞鏄犲皠琛� - */ - private Map<String, Map<String, Integer>> pathMapping; - - /** - * 鐜閰嶇疆 - */ - private Map<String, Object> environmentConfig; + @Autowired + private EnvDataConfig envDataConfig; /** * 鎵ц涓换鍔℃彁鍙� @@ -47,63 +44,35 @@ */ private RemainingPathProcessor remainingPathProcessor; - /** - * 绾跨▼姹犲ぇ灏� - */ - private final int threadPoolSize; /** * 绾跨▼姹� */ - private final ExecutorService executorService; + private final ExecutorService executorService = Executors.newFixedThreadPool(Math.max(4, Runtime.getRuntime().availableProcessors())); /** * CTU鎵瑰鐞嗗ぇ灏� */ private final int batchSize = 10; - /** - * 鏋勯�犲嚱鏁� - * - * @param pathMapping 璺緞鏄犲皠琛� - * @param environmentConfig 鐜閰嶇疆 - * @param taskDataList 浠诲姟鏁版嵁鍒楄〃 - */ - public PathPlanningService(Map<String, Map<String, Integer>> pathMapping, - Map<String, Object> environmentConfig, - List<TaskData> taskDataList) { - this.pathMapping = pathMapping; - this.environmentConfig = environmentConfig; - - this.threadPoolSize = Math.max(4, Runtime.getRuntime().availableProcessors()); - this.executorService = Executors.newFixedThreadPool(threadPoolSize); - - // 鍒濆鍖� - initializeComponents(taskDataList); - - System.out.println("璺緞瑙勫垝鏈嶅姟鍒濆鍖栧畬鎴愶紙绾跨▼姹犲ぇ灏�: " + threadPoolSize + "锛�"); - } /** * 鍒濆鍖栧悇涓粍浠� - * - * @param taskDataList 浠诲姟鏁版嵁鍒楄〃 */ - private void initializeComponents(List<TaskData> taskDataList) { - // 鍒濆鍖栦换鍔℃彁鍙栧櫒 - this.taskExtractor = new ExecutingTaskExtractor(pathMapping, taskDataList); + @PostConstruct + public void initializeComponents() { // 鍒濆鍖栬矾寰勮鍒掑櫒 - this.pathPlanner = new AStarPathPlanner(pathMapping); + this.pathPlanner = new AStarPathPlanner(envDataConfig.getPathMapping()); // 鍒濆鍖栫鎾炴娴嬪櫒 - this.collisionDetector = new CollisionDetector(pathMapping); + this.collisionDetector = new CollisionDetector(envDataConfig.getPathMapping()); // 鍒濆鍖栫鎾炶В鍐冲櫒 this.collisionResolver = new CollisionResolver(collisionDetector); // 鍒濆鍖栧墿浣欒矾寰勫鐞嗗櫒 - this.remainingPathProcessor = new RemainingPathProcessor(pathMapping); + this.remainingPathProcessor = new RemainingPathProcessor(envDataConfig.getPathMapping()); } /** @@ -114,9 +83,12 @@ * @param constraints 璺緞绾︽潫鏉′欢 * @return 璺緞瑙勫垝缁撴灉 */ - public PathPlanningResult planAllAgvPaths(List<AGVStatus> agvStatusList, + public PathPlanningResult planAllAgvPaths(List<TaskData> taskList, List<AGVStatus> agvStatusList, boolean includeIdleAgv, List<double[]> constraints) { + // 鍒濆鍖栦换鍔℃彁鍙栧櫒 + this.taskExtractor = new ExecutingTaskExtractor(envDataConfig.getPathMapping(), taskList); + long startTime = System.currentTimeMillis(); System.out.println("寮�濮嬩负 " + agvStatusList.size() + " 涓狢TU瑙勫垝"); @@ -416,7 +388,7 @@ long currentTime = System.currentTimeMillis() / 1000; // 杞崲涓虹 for (PathCode pathCode : codeList) { - int[] coord = JsonUtils.getCoordinate(pathCode.getCode(), pathMapping); + int[] coord = JsonUtils.getCoordinate(pathCode.getCode(), envDataConfig.getPathMapping()); if (coord != null) { String spaceTimeKey = coord[0] + "," + coord[1] + "," + currentTime; occupancyMap.put(spaceTimeKey, agvStatus.getAgvId()); -- Gitblit v1.9.1