From 3de198e2ed8114f9ff17d3d0d89a108d9f0cc815 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 10 十二月 2024 12:52:45 +0800
Subject: [PATCH] #path similarity
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java | 12 +++++++++++-
zy-asrs-wcs/src/main/resources/similarity.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 1 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
index c696b12..921364a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
@@ -302,7 +302,17 @@
public Double similarityPath(List<NavigateNode> firstPath, List<NavigateNode> secondPath) {
try {
- ProcessBuilder processBuilder = new ProcessBuilder("python", pythonCalcSimilarity, JSON.toJSONString(firstPath), JSON.toJSONString(secondPath));
+ List<int[]> first = new ArrayList<>();
+ for (NavigateNode node : firstPath) {
+ first.add(new int[]{node.getX(), node.getY()});
+ }
+
+ List<int[]> second = new ArrayList<>();
+ for (NavigateNode node : secondPath) {
+ second.add(new int[]{node.getX(), node.getY()});
+ }
+
+ ProcessBuilder processBuilder = new ProcessBuilder("python", pythonCalcSimilarity, JSON.toJSONString(first), JSON.toJSONString(second));
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
diff --git a/zy-asrs-wcs/src/main/resources/similarity.py b/zy-asrs-wcs/src/main/resources/similarity.py
new file mode 100644
index 0000000..69b6a8f
--- /dev/null
+++ b/zy-asrs-wcs/src/main/resources/similarity.py
@@ -0,0 +1,47 @@
+import json
+import sys
+
+
+def calculate_similarity(path1, path2):
+ # 灏嗚矾寰勮浆鎹负闆嗗悎
+ set1 = set(path1)
+ set2 = set(path2)
+
+ # 璁$畻閲嶅彔鑺傜偣
+ overlap = len(set1.intersection(set2))
+
+ # 璁$畻鎬昏妭鐐�
+ total_nodes = len(set1.union(set2))
+
+ # 璁$畻鐩镐技搴�
+ similarity = overlap / total_nodes if total_nodes > 0 else 0
+
+ return similarity
+
+path_a_str = sys.argv[1]
+path_b_str = sys.argv[2]
+
+path_a = json.loads(path_a_str)
+path_a = [(int(x[0]), int(x[1])) for x in path_a]
+
+path_b = json.loads(path_b_str)
+path_b = [(int(x[0]), int(x[1])) for x in path_b]
+
+# # 绀轰緥璺緞
+# path_a = [(1, 1), (1, 2), (1, 3), (1, 4), (2, 4), (3, 4), (4, 4), (5, 4), (6, 4), (7, 4), (8, 4), (9, 4), (10, 4), (10, 5), (10, 6), (11, 6)]
+# path_b = [(1, 1), (1, 2), (1, 3), (1, 4), (2, 4), (3, 4), (4, 4), (5, 4), (6, 4), (7, 4), (8, 4), (9, 4), (10, 4), (10, 5), (10, 6), (11, 6)]
+
+
+# 璁$畻鐩镐技搴�
+similarity_score = calculate_similarity(path_a, path_b)
+
+calcResult = 200
+
+result = {
+ "firstPath": json.dumps(path_a),
+ "secondPath": json.dumps(path_b),
+ "similarity": similarity_score,
+ "calcResult": calcResult
+}
+
+print(result)
\ No newline at end of file
--
Gitblit v1.9.1