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