From 7ceeeeddf7f4116702da3e706f1222b0e6ed75d4 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 18 十二月 2024 13:13:55 +0800 Subject: [PATCH] # --- /dev/null | 208 ---------------------------------------------------- 1 files changed, 0 insertions(+), 208 deletions(-) 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 b7b8006..0000000 --- a/zy-acs-manager/src/main/resources/agv1.py +++ /dev/null @@ -1,159 +0,0 @@ -import ast -import sys -import numpy as np -import json -import time -import redis -from collections import deque - -radiusLen = None - -# 灏嗗瓧绗︿覆杞崲涓烘诞鐐瑰瀷鏁扮粍 -def convert_to_float_array(str_array): - if isinstance(str_array, str): - return np.array(ast.literal_eval(str_array), dtype=float) - return str_array - -def getWaveScopeByCode(x, y): - code = codeMatrix[x, y] - includeList = [] - existNodes = set() - spreadWaveNode({"x": x, "y": y}, {"x": x, "y": y}, existNodes, includeList) - return includeList - -def spreadWaveNode(originNode, currNode, existNodes, includeList): - x, y = currNode['x'], currNode['y'] - neighbors = [(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)] - for neighbor in neighbors: - extendNeighborNodes(originNode, {"x": neighbor[0], "y": neighbor[1]}, existNodes, includeList) - -def extendNeighborNodes(originNode, nextNode, existNodes, includeList): - x, y = nextNode['x'], nextNode['y'] - if (x < 0 or x >= codeMatrix.shape[0] or y < 0 or y >= codeMatrix.shape[1]): - return - - if (x, y) in existNodes: - return - - existNodes.add((x, y)) - - nextNodeCodeData = codeMatrix[x, y] - - if nextNodeCodeData == 'NONE': - spreadWaveNode(originNode, nextNode, existNodes, includeList) - else: - o1Cda = convert_to_float_array(cdaMatrix[originNode['x'], originNode['y']]) - o2Cda = convert_to_float_array(cdaMatrix[x, y]) - - num1 = (o1Cda[0] - o2Cda[0]) ** 2 - num2 = (o1Cda[1] - o2Cda[1]) ** 2 - if num1 + num2 <= radiusLen ** 2: - includeList.append({"x": int(x), "y": int(y), "code": str(codeMatrix[x, y])}) - spreadWaveNode(originNode, nextNode, existNodes, includeList) - -# 鎵惧埌鏌愪釜鍊煎搴旂殑 x, y 涓嬫爣 -def find_value_in_matrix(value): - indices = np.where(codeMatrix == value) - return list(zip(indices[0], indices[1])) - -def initWaveMatrix(): - lev = 1 - 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): - # 灏嗗瓧绗︿覆瑙f瀽涓洪泦鍚� - set_data = set(ast.literal_eval(originWave)) - # 濡傛灉 vehicle 涓嶅湪闆嗗悎涓紝鍒欐坊鍔� - set_data.add(vehicle) - # 杩斿洖搴忓垪鍖栧悗鐨勫瓧绗︿覆 - return json.dumps(list(set_data)) - -# 灏� dynamicMatrix 杞崲涓� numpy 缁撴瀯鍖栨暟缁� -def convert_to_structured_array(dynamicMatrix): - # 瀹氫箟缁撴瀯鍖栨暟缁勭殑 dtype - dtype = [('serial', int), ('vehicle', 'U2')] - # 灏嗗祵濂楃殑鍒楄〃杞崲涓虹粨鏋勫寲鏁扮粍 - structured_array = np.array([tuple(d.values()) for row in dynamicMatrix for d in row], dtype=dtype) - # 閲嶅涓哄師濮嬬殑浜岀淮褰㈢姸 - return structured_array.reshape(len(dynamicMatrix), -1) - -# 浣跨敤 numpy 鍔犻�熺殑浠g爜 -def process_dynamic_matrix(dynamicMatrix, codeMatrix): - # 灏� dynamicMatrix 杞崲涓虹粨鏋勫寲鏁扮粍 - dynamicMatrix = convert_to_structured_array(dynamicMatrix) - - # 鑾峰彇 dynamicMatrix 鐨勫舰鐘� - rows, cols = dynamicMatrix.shape - - # 鍒涘缓涓�涓竷灏旀帺鐮侊紝鐢ㄤ簬绛涢�夊嚭 vehicle 涓嶄负 '0' 鍜� '-1' 鐨勫厓绱� - mask = (dynamicMatrix['vehicle'] != '0') & (dynamicMatrix['vehicle'] != '-1') - - # 鑾峰彇婊¤冻鏉′欢鐨� x 鍜� y 鍧愭爣 - x_indices, y_indices = np.where(mask) - - # 閬嶅巻婊¤冻鏉′欢鐨勫潗鏍� - for x, y in zip(x_indices, y_indices): - # print(code) - data = dynamicMatrix[x][y] - vehicle = data['vehicle'] - includeList = getWaveScopeByCode(x,y) - for include in includeList: - originWave = waveMatrix[include['x']][include['y']] - waveMatrix[include['x']][include['y']] = mergeWave(originWave, vehicle) - -radiusLenStr = sys.argv[1] -radiusLen = float(radiusLenStr) - -redisHost = sys.argv[2] -redisPwd = sys.argv[3] -redisPort = sys.argv[4] -redisIdx = sys.argv[5] - -startTime = time.perf_counter() - -# 鍒涘缓涓�涓繛鎺ユ睜 -pool = redis.ConnectionPool(host=redisHost, port=int(redisPort), password=redisPwd, db=int(redisIdx)) -r = redis.Redis(connection_pool=pool) - -codeMatrixStr = r.get('KV.AGV_MAP_ASTAR_CODE_FLAG.1') -codeMatrix = np.array(json.loads(codeMatrixStr)) - -cdaMatrixStr = r.get('KV.AGV_MAP_ASTAR_CDA_FLAG.1') -cdaMatrix = np.array(json.loads(cdaMatrixStr)) - -dynamicMatrixStr = r.get('KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1') -dynamicMatrix = np.array(json.loads(dynamicMatrixStr)) - -waveMatrix = initWaveMatrix() - -# # 浣跨敤 numpy 鍔犻�熺殑浠g爜 -process_dynamic_matrix(dynamicMatrix, codeMatrix) - -# for x in range(dynamicMatrix.shape[0]): -# for y in range(dynamicMatrix.shape[1]): -# data = dynamicMatrix[x, y] -# vehicle = data['vehicle'] -# if vehicle != '0' and vehicle != '-1': -# getWaveScopeByCode(x, y) - -# 灏� numpy.ndarray 杞崲涓哄祵濂楀垪琛� -waveMatrixList = waveMatrix.tolist() -# 灏嗗祵濂楀垪琛ㄨ浆鎹负 JSON 瀛楃涓� -waveMatrixJsonStr = json.dumps(waveMatrixList) - -r.set("KV.AGV_MAP_ASTAR_WAVE_FLAG.1",waveMatrixJsonStr) - -end = time.perf_counter() -# print('绋嬪簭杩愯鏃堕棿涓�: %s Seconds' % (end - startTime)) -print("1") - diff --git a/zy-acs-manager/src/main/resources/agv2.py b/zy-acs-manager/src/main/resources/agv2.py deleted file mode 100644 index 2425f67..0000000 --- a/zy-acs-manager/src/main/resources/agv2.py +++ /dev/null @@ -1,208 +0,0 @@ -import ast -import sys -import numpy as np -import json -import time -import redis - -radiusLen = None -codeMatrix = None # 鍏ㄥ眬鍙橀噺 -cdaMatrix = None # 鍏ㄥ眬鍙橀噺 -waveMatrix = None # 鍏ㄥ眬鍙橀噺 - -# 灏嗗瓧绗︿覆杞崲涓烘诞鐐瑰瀷鏁扮粍 -def convert_to_float_array(str_array): - if isinstance(str_array, str): - return np.array(ast.literal_eval(str_array), dtype=float) - return str_array - -def getWaveScopeByCode(x, y): - code = codeMatrix[x, y] - includeList = [] - existNodes = set() - spreadWaveNode({"x": x, "y": y}, {"x": x, "y": y}, existNodes, includeList) - return includeList - -def spreadWaveNode(originNode, currNode, existNodes, includeList): - x, y = currNode['x'], currNode['y'] - neighbors = [(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)] - for neighbor in neighbors: - extendNeighborNodes(originNode, {"x": neighbor[0], "y": neighbor[1]}, existNodes, includeList) - -def extendNeighborNodes(originNode, nextNode, existNodes, includeList): - x, y = nextNode['x'], nextNode['y'] - if (x < 0 or x >= codeMatrix.shape[0] or y < 0 or y >= codeMatrix.shape[1]): - return - - if (x, y) in existNodes: - return - - existNodes.add((x, y)) - - nextNodeCodeData = codeMatrix[x, y] - - if nextNodeCodeData == 'NONE': - spreadWaveNode(originNode, nextNode, existNodes, includeList) - else: - o1Cda = convert_to_float_array(cdaMatrix[originNode['x'], originNode['y']]) - o2Cda = convert_to_float_array(cdaMatrix[x, y]) - - num1 = (o1Cda[0] - o2Cda[0]) ** 2 - num2 = (o1Cda[1] - o2Cda[1]) ** 2 - if num1 + num2 <= radiusLen ** 2: - includeList.append({"x": int(x), "y": int(y), "code": str(codeMatrix[x, y])}) - spreadWaveNode(originNode, nextNode, existNodes, includeList) - -# 鎵惧埌鏌愪釜鍊煎搴旂殑 x, y 涓嬫爣 -def find_value_in_matrix(value): - indices = np.where(codeMatrix == value) - return list(zip(indices[0], indices[1])) - -def initWaveMatrix(): - global codeMatrix, waveMatrix # 澹版槑浣跨敤鍏ㄥ眬鍙橀噺 - lev = 1 - 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): - # 灏嗗瓧绗︿覆瑙f瀽涓洪泦鍚� - try: - set_data = set(ast.literal_eval(originWave)) - except (ValueError, SyntaxError): - set_data = set() - # 濡傛灉 vehicle 涓嶅湪闆嗗悎涓紝鍒欐坊鍔� - set_data.add(vehicle) - # 杩斿洖搴忓垪鍖栧悗鐨勫瓧绗︿覆 - return json.dumps(list(set_data)) - -# 灏� dynamicMatrix 杞崲涓� numpy 缁撴瀯鍖栨暟缁� -def convert_to_structured_array(dynamicMatrix): - # 瀹氫箟缁撴瀯鍖栨暟缁勭殑 dtype - dtype = [('serial', int), ('vehicle', 'U2')] - # 灏嗗祵濂楃殑鍒楄〃杞崲涓虹粨鏋勫寲鏁扮粍 - structured_array = np.array([tuple(d.values()) for row in dynamicMatrix for d in row], dtype=dtype) - # 閲嶅涓哄師濮嬬殑浜岀淮褰㈢姸 - return structured_array.reshape(len(dynamicMatrix), -1) - -# 浣跨敤 numpy 鍔犻�熺殑浠g爜 -def process_dynamic_matrix(dynamicMatrix, codeMatrix): - global waveMatrix # 澹版槑浣跨敤鍏ㄥ眬鍙橀噺 - # 灏� dynamicMatrix 杞崲涓虹粨鏋勫寲鏁扮粍 - dynamicMatrix = convert_to_structured_array(dynamicMatrix) - - # 鑾峰彇 dynamicMatrix 鐨勫舰鐘� - rows, cols = dynamicMatrix.shape - - # 鍒涘缓涓�涓竷灏旀帺鐮侊紝鐢ㄤ簬绛涢�夊嚭 vehicle 涓嶄负 '0' 鍜� '-1' 鐨勫厓绱� - mask = (dynamicMatrix['vehicle'] != '0') & (dynamicMatrix['vehicle'] != '-1') - - # 鑾峰彇婊¤冻鏉′欢鐨� x 鍜� y 鍧愭爣 - x_indices, y_indices = np.where(mask) - - # 閬嶅巻婊¤冻鏉′欢鐨勫潗鏍� - for x, y in zip(x_indices, y_indices): - # print(code) - vehicle = dynamicMatrix[x][y]['vehicle'] - includeList = getWaveScopeByCode(x, y) - for include in includeList: - originWave = waveMatrix[include['x']][include['y']] - waveMatrix[include['x']][include['y']] = mergeWave(originWave, vehicle) - -def main(): - global radiusLen, codeMatrix, cdaMatrix, waveMatrix # 澹版槑浣跨敤鍏ㄥ眬鍙橀噺 - - if len(sys.argv) != 6: - print("鐢ㄦ硶: python agv.py <radiusLen> <redisHost> <redisPwd> <redisPort> <redisIdx>") - sys.exit(1) - - radiusLenStr = sys.argv[1] - try: - radiusLen = float(radiusLenStr) - except ValueError: - print("radiusLen 蹇呴』鏄竴涓诞鐐规暟") - sys.exit(1) - - redisHost = sys.argv[2] - redisPwd = sys.argv[3] - redisPort = sys.argv[4] - redisIdx = sys.argv[5] - - startTime = time.perf_counter() - - # 鍒涘缓涓�涓繛鎺ユ睜 - try: - pool = redis.ConnectionPool(host=redisHost, port=int(redisPort), password=redisPwd, db=int(redisIdx)) - r = redis.Redis(connection_pool=pool, decode_responses=True) - except Exception as e: - print(f"鏃犳硶杩炴帴鍒� Redis: {e}") - sys.exit(1) - - try: - codeMatrixStr = r.get('KV.AGV_MAP_ASTAR_CODE_FLAG.1') - if codeMatrixStr is None: - raise ValueError("Redis 涓湭鎵惧埌閿�: KV.AGV_MAP_ASTAR_CODE_FLAG.1") - codeMatrix = np.array(json.loads(codeMatrixStr)) - except Exception as e: - print(f"鑾峰彇 codeMatrix 澶辫触: {e}") - sys.exit(1) - - try: - cdaMatrixStr = r.get('KV.AGV_MAP_ASTAR_CDA_FLAG.1') - if cdaMatrixStr is None: - raise ValueError("Redis 涓湭鎵惧埌閿�: KV.AGV_MAP_ASTAR_CDA_FLAG.1") - cdaMatrix = np.array(json.loads(cdaMatrixStr)) - except Exception as e: - print(f"鑾峰彇 cdaMatrix 澶辫触: {e}") - sys.exit(1) - - try: - dynamicMatrixStr = r.get('KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1') - if dynamicMatrixStr is None: - raise ValueError("Redis 涓湭鎵惧埌閿�: KV.AGV_MAP_ASTAR_DYNAMIC_FLAG.1") - dynamicMatrix = np.array(json.loads(dynamicMatrixStr)) - except Exception as e: - print(f"鑾峰彇 dynamicMatrix 澶辫触: {e}") - sys.exit(1) - - # 鍒濆鍖� waveMatrix - try: - waveMatrix = initWaveMatrix() - except Exception as e: - print(f"鍒濆鍖� waveMatrix 澶辫触: {e}") - sys.exit(1) - - # 澶勭悊 dynamicMatrix - try: - process_dynamic_matrix(dynamicMatrix, codeMatrix) - except Exception as e: - print(f"澶勭悊 dynamicMatrix 澶辫触: {e}") - sys.exit(1) - - # 灏� numpy.ndarray 杞崲涓哄祵濂楀垪琛� - waveMatrixList = waveMatrix.tolist() - # 灏嗗祵濂楀垪琛ㄨ浆鎹负 JSON 瀛楃涓� - waveMatrixJsonStr = json.dumps(waveMatrixList) - - try: - r.set("KV.AGV_MAP_ASTAR_WAVE_FLAG.1", waveMatrixJsonStr) - except Exception as e: - print(f"灏� waveMatrix 鍐欏叆 Redis 澶辫触: {e}") - sys.exit(1) - - end = time.perf_counter() - # print('绋嬪簭杩愯鏃堕棿涓�: %s Seconds' % (end - startTime)) - print("1") - # 濡傛灉闇�瑕侊紝鍙互鎵撳嵃杩愯鏃堕棿 - # print(f"绋嬪簭杩愯鏃堕棿涓�: {end - startTime:.2f} 绉�") - -if __name__ == "__main__": - main() -- Gitblit v1.9.1