From 9e9f94ee2431ec69586076df076f27393d556ae1 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 30 十二月 2024 08:05:47 +0800
Subject: [PATCH] #
---
/dev/null | 242 ------------------------------------------------
zy-acs-flow/src/map/tool.js | 2
2 files changed, 1 insertions(+), 243 deletions(-)
diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 3344416..e219ded 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -755,7 +755,7 @@
agvPath = new PIXI.Graphics();
agvPath.name = agvPathName;
agvPath.lineStyle(
- Math.max(100, 4 * (1 / mapContainer?.scale.x || 1)),
+ Math.max(200, 4 * (1 / mapContainer?.scale.x || 1)),
themeMode === 'dark' ? 0x40739e : 0x2f68ac,
0.8,
);
diff --git a/zy-acs-manager/src/main/resources/agv1.py b/zy-acs-manager/src/main/resources/agv1.py
deleted file mode 100644
index 47af53d..0000000
--- a/zy-acs-manager/src/main/resources/agv1.py
+++ /dev/null
@@ -1,242 +0,0 @@
-import ast
-import sys
-import numpy as np
-import json
-import time
-import redis
-from collections import deque, defaultdict
-
-##########################
-# 宸ュ叿鍑芥暟
-##########################
-def convert_to_float_array(str_array):
- """
- 灏嗗瓧绗︿覆鎴栧彲杩唬瀵硅薄杞崲涓烘诞鐐瑰瀷鏁扮粍銆�
- """
- if str_array == "-":
- return np.array([], dtype=float)
- if isinstance(str_array, str):
- return np.array(ast.literal_eval(str_array), dtype=float)
- elif isinstance(str_array, list) or isinstance(str_array, np.ndarray):
- return np.array(str_array, dtype=float)
- return np.array([], dtype=float)
-
-def initWaveMatrix(codeMatrix):
- """
- 鏍规嵁 codeMatrix 鍒濆鍖� waveMatrix銆�
- 鑻ユ牸瀛愪负 'NONE'锛屽垯 waveMatrix[x][y] = "-"
- 鍚﹀垯涓� "[]"
- """
- waveMatrix = np.empty_like(codeMatrix, dtype=object)
- for x in range(codeMatrix.shape[0]):
- for y in range(codeMatrix.shape[1]):
- if codeMatrix[x][y] == 'NONE':
- waveMatrix[x][y] = "-"
- else:
- waveMatrix[x][y] = "[]"
- return waveMatrix
-
-def mergeWave(originWave, vehicle):
- """
- originWave 鏄� waveMatrix[x][y] 涓瓨鍌ㄧ殑瀛楃涓诧紙鍐呴儴鏄竴涓� JSON 鏁扮粍锛夛紝
- 灏嗘柊杞﹁締 vehicle 鍚堝苟杩涘幓锛堢敤 set 鍘婚噸锛夛紝
- 骞惰繑鍥炴洿鏂板悗鐨� JSON 瀛楃涓层��
- """
- try:
- set_data = set(ast.literal_eval(originWave))
- except (ValueError, SyntaxError):
- set_data = set()
- set_data.add(vehicle)
- return json.dumps(list(set_data))
-
-def convert_to_structured_array(dynamicMatrix):
- """
- 灏� dynamicMatrix锛堝祵濂楀垪琛紝閲岃竟鏄� dict锛夎浆鎹负 numpy 缁撴瀯鍖栨暟缁勶紝鏂逛究涔嬪悗杩涜鎺╃爜绛涢�夈��
- """
- # 瀹氫箟缁撴瀯鍖栨暟缁勭殑 dtype
- dtype = [('serial', int), ('vehicle', 'U2'), ('time', int)]
- structured_list = []
- for row in dynamicMatrix:
- for d in row:
- serial = d.get('serial', 0)
- vehicle = d.get('vehicle', '0')
- time_val = d.get('time', 0)
- structured_list.append((serial, vehicle, time_val))
- # 杞崲涓虹粨鏋勫寲鏁扮粍锛屽苟閲嶅涓哄師濮嬩簩缁村舰鐘�
- structured_array = np.array(structured_list, dtype=dtype)
- return structured_array.reshape(len(dynamicMatrix), -1)
-
-
-##########################
-# 澶氭簮 BFS 鏍稿績鍑芥暟
-##########################
-def process_dynamic_matrix_multi_source_bfs(dynamicMatrix, codeMatrix, cdaMatrix, radiusLen):
- """
- 浣跨敤澶氭簮 BFS锛屼竴娆℃�у皢鎵�鏈夊惈鏈夎溅杈嗙殑鏍煎瓙浣滀负璧风偣鍚屾椂杩涘叆闃熷垪銆�
- - 濡傛灉鏍煎瓙涓� 'NONE'锛屽垯娌垮悓涓�鏂瑰悜缁х画鐩寸嚎鎵╂暎锛�
- - 鑻ラ亣鍒伴潪 'NONE' 鐨勬牸瀛愶紝鍒欒繘琛屾鍑犻噷寰楄窛绂诲垽瀹� <= radiusLen 鏃跺彲鍒拌揪锛屽苟涓斾粠姝ゅ鍐嶆鏈濆洓鏂瑰悜鎵╂暎锛堟柟鍚戦噸缃负 None锛夈��
- """
- # 1. 杞崲 dynamicMatrix 涓虹粨鏋勫寲鏁扮粍
- dynamicMatrix = convert_to_structured_array(dynamicMatrix)
- rows, cols = dynamicMatrix.shape
-
- # 2. 鍒濆鍖� waveMatrix锛堟渶缁堣瀛樺偍鍥� Redis 鐨勭煩闃碉級
- waveMatrix = initWaveMatrix(codeMatrix)
-
- # 3. 寤虹珛涓�涓笌 waveMatrix 绛夊ぇ灏忕殑 2D 鏁扮粍 waveSets锛岀敤浜庝繚瀛樿溅杈嗛泦鍚堬紙鐢� set 瀛樺偍锛�
- waveSets = np.empty((rows, cols), dtype=object)
- for i in range(rows):
- for j in range(cols):
- waveSets[i, j] = set()
-
- # 4. 鍑嗗 BFS 闃熷垪锛岄槦鍒楀厓绱犳牸寮�: (x, y, direction, vehicle)
- queue = deque()
-
- # 5. 鎵惧埌鎵�鏈夋湁杞﹁締鐨勬牸瀛愶紝缁熶竴鍏ラ槦鍒�
- mask = (dynamicMatrix['vehicle'] != '0') & (dynamicMatrix['vehicle'] != '-1')
- x_indices, y_indices = np.where(mask)
- for x, y in zip(x_indices, y_indices):
- v = dynamicMatrix[x][y]['vehicle']
- waveSets[x, y].add(v)
- queue.append((x, y, None, v)) # 璧峰鏃� direction=None
-
- # 6. 寤虹珛 visited 鏉ラ伩鍏嶉噸澶嶈闂�
- # 鍥犱负涓�涓綅缃� (x, y) 鍙兘琚涓溅杈嗙敤澶氱鏂瑰悜璁块棶锛岄渶瑕佽褰� (x, y, direction, vehicle)
- visited = set()
-
- # 7. BFS 涓诲惊鐜�
- while queue:
- x, y, direction, vehicle = queue.popleft()
-
- if (x, y, direction, vehicle) in visited:
- continue
- visited.add((x, y, direction, vehicle))
-
- # 鍒ゆ柇涓嬩竴涓鎵╁睍鐨勬柟鍚�
- if direction is None:
- # 鏃犳柟鍚戞椂锛屽洓涓柟鍚戝悓鏃舵墿鏁�
- neighbors_info = [
- (x + 1, y, 'right'),
- (x - 1, y, 'left'),
- (x, y + 1, 'down'),
- (x, y - 1, 'up')
- ]
- else:
- # 鏈夋柟鍚戞椂锛屽彧寰�鍚屼竴涓柟鍚戞墿灞�
- if direction == 'right':
- neighbors_info = [(x + 1, y, 'right')]
- elif direction == 'left':
- neighbors_info = [(x - 1, y, 'left')]
- elif direction == 'down':
- neighbors_info = [(x, y + 1, 'down')]
- elif direction == 'up':
- neighbors_info = [(x, y - 1, 'up')]
- else:
- neighbors_info = []
-
- # 閬嶅巻閭诲眳
- for nx, ny, ndir in neighbors_info:
- # 杈圭晫妫�鏌�
- if nx < 0 or nx >= rows or ny < 0 or ny >= cols:
- continue
-
- neighbor_code = codeMatrix[nx, ny]
-
- if neighbor_code == 'NONE':
- # 濡傛灉鏄� 'NONE'锛屽垯娌垮綋鍓嶆柟鍚戠户缁墿鏁�
- if vehicle not in waveSets[nx, ny]:
- waveSets[nx, ny].add(vehicle)
- queue.append((nx, ny, ndir, vehicle))
- else:
- # 闈� 'NONE'锛岄渶瑕佺敤娆у嚑閲屽緱璺濈鍒ゅ畾
- c1 = convert_to_float_array(cdaMatrix[x, y]) # 褰撳墠鍧愭爣
- c2 = convert_to_float_array(cdaMatrix[nx, ny]) # 閭诲眳鍧愭爣
- if c1.size < 2 or c2.size < 2:
- continue
- dist_sqr = (c1[0] - c2[0])**2 + (c1[1] - c2[1])**2
- if dist_sqr <= radiusLen**2:
- # 鍙互鍒拌揪锛屽垯鎶婅溅杈嗗姞鍏� waveSets
- if vehicle not in waveSets[nx, ny]:
- waveSets[nx, ny].add(vehicle)
- # 鏂瑰悜閲嶇疆涓� None锛岃〃绀哄洓鍚戞墿鏁�
- queue.append((nx, ny, None, vehicle))
-
- # 8. BFS 瀹屾垚鍚庯紝灏� waveSets 鐨勪俊鎭啓鍏� waveMatrix锛堝瓧绗︿覆褰㈠紡锛�
- for i in range(rows):
- for j in range(cols):
- if waveSets[i, j]:
- origin_str = waveMatrix[i][j]
- for v in waveSets[i, j]:
- origin_str = mergeWave(origin_str, v)
- waveMatrix[i][j] = origin_str
-
- return waveMatrix
-
-
-##########################
-# 涓诲嚱鏁板叆鍙�
-##########################
-def main():
- global radiusLen, codeMatrix, cdaMatrix, waveMatrix # 澹版槑涓哄叏灞�鍙橀噺
-
- if len(sys.argv) != 6:
- print("Usage: python script.py <radiusLen> <redisHost> <redisPwd> <redisPort> <redisIdx>")
- sys.exit(1)
-
- radiusLenStr = sys.argv[1]
- try:
- radiusLen = float(radiusLenStr)
- except ValueError:
- print("Error: radiusLen must be a float.")
- sys.exit(1)
-
- redisHost = sys.argv[2]
- redisPwd = sys.argv[3]
- redisPort = sys.argv[4]
- redisIdx = sys.argv[5]
-
- startTime = time.perf_counter()
-
- try:
- # 1) 杩炴帴 Redis
- pool = redis.ConnectionPool(host=redisHost, port=int(redisPort), password=redisPwd, db=int(redisIdx))
- r = redis.Redis(connection_pool=pool)
-
- # 2) 鑾峰彇骞跺姞杞� codeMatrix
- codeMatrixStr = r.get('KV.AGV_MAP_ASTAR_CODE_FLAG.1')
- if codeMatrixStr is None:
- print("Error: 'KV.AGV_MAP_ASTAR_CODE_FLAG.1' not found in Redis.")
- sys.exit(1)
- codeMatrix = np.array(json.loads(codeMatrixStr.decode('utf-8')), dtype=str)
-
- # 3) 鑾峰彇骞跺姞杞� cdaMatrix
- cdaMatrixStr = r.get('KV.AGV_MAP_ASTAR_CDA_FLAG.1')
- if cdaMatrixStr is None:
- print("Error: 'KV.AGV_MAP_ASTAR_CDA_FLAG.1' not found in Redis.")
- sys.exit(1)
- cdaMatrix = np.array(json.loads(cdaMatrixStr.decode('utf-8')), dtype=object)
-
- # 4) 鑾峰彇骞跺姞杞� dynamicMatrix
- dynamicMatrixStr = r.get('KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1')
- if dynamicMatrixStr is None:
- print("Error: 'KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1' not found in Redis.")
- sys.exit(1)
- dynamicMatrix = np.array(json.loads(dynamicMatrixStr.decode('utf-8')), dtype=object)
-
- # 5) 浣跨敤澶氭簮 BFS 璁$畻 waveMatrix
- waveMatrix = process_dynamic_matrix_multi_source_bfs(dynamicMatrix, codeMatrix, cdaMatrix, radiusLen)
-
- # 6) 灏� waveMatrix 杞负 JSON 骞跺啓鍥� Redis
- waveMatrixList = waveMatrix.tolist()
- waveMatrixJsonStr = json.dumps(waveMatrixList)
- r.set("KV.AGV_MAP_ASTAR_WAVE_FLAG.1", waveMatrixJsonStr)
-
- end = time.perf_counter()
- print(f"绋嬪簭杩愯鏃堕棿涓�: {end - startTime} Seconds")
- print("1")
- except Exception as e:
- print(f"An error occurred: {e}")
- sys.exit(1)
-
-if __name__ == "__main__":
- main()
\ No newline at end of file
--
Gitblit v1.9.1