From 50a7f7fb1c918fbfc6d7833af855264105800962 Mon Sep 17 00:00:00 2001 From: zart Date: Wed, 3 Jul 2024 11:15:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B4=AA=E5=BF=83=E6=B1=82?= =?UTF-8?q?=E8=A7=A3=E5=A4=B1=E8=B4=A5=E7=9A=84=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 9 +++++++++ tsp_data.py | 12 ++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 5e6178b..2430cf2 100644 --- a/main.py +++ b/main.py @@ -582,6 +582,15 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.show_path() # 显示路径 self.statusbar.showMessage(f"算法执行时间为{path[2]:.2f}") else: + + rvalue = self.cp.set_display_path(path[2], min_edges) + # 路径计算失败时,如果最后一条路径的节点之一和起相同,则删除最后一条路径 + if rvalue[0][-1].node1_id == path[2][0] or rvalue[0][-1].node2_id == path[2][0]: + rvalue[0].pop() + self.Path = rvalue[0] + self.show_node() # 显示节点 + self.show_node_conn() # 显示连接 + self.show_path() # 显示路径 self.statusbar.showMessage(path[1]) self.warning_box(path[1]) self.auto_solve_init() # 初始化判断显示 diff --git a/tsp_data.py b/tsp_data.py index 227f29d..3d4b36f 100644 --- a/tsp_data.py +++ b/tsp_data.py @@ -115,7 +115,7 @@ class CustomPath: return self.Edges - def creat_node_data(self, data:int|list): + def creat_node_data(self, data): if isinstance(data, int): num = data else: @@ -390,8 +390,8 @@ class CustomPath: if node.id == list(remaining_nodes)[0]: label2 = node.label if label and label2: - return False, (f"当前'{label}'的节点无直接路径到" - f"'{label2}'的节点贪心算法求解失败") + return False, (f"当前贪心路径{path}\n'{label}'的节点无直接路径到" + f"'{label2}'的节点贪心算法求解失败"), path path.append(next_node) remaining_nodes.remove(next_node) current_node = next_node @@ -405,8 +405,8 @@ class CustomPath: if node.id == start_node: label2 = node.label if label and label2: - return False, (f"当前'{label}'节点无直接路径到" - f"'{label2}'节点贪心算法求解失败") + return False, (f"当前贪心路径{path}\n'{label}'节点无直接路径到" + f"'{label2}'节点贪心算法求解失败"), path end_time = time.time() # 记录结束时间 self.elapsed_time = end_time - start_time # 计算运行时间 return [path], self.calculate_path_dort(graph, path), self.elapsed_time @@ -514,7 +514,7 @@ class CustomPath: num = len(user_paths) for i in range(num): # 逐个节点进行匹配 if not user_paths[i] == min_path[i]: - return False, f"正确的贪心节点顺序为{min_path}\n你的第{i+1}个节点{user_paths[i]}不符合贪心规则。" # 返回不匹配的节点 + return False, f"正确的贪心节点顺序为{min_path}\n你的第{i+1}个节点{min_path[i]}不符合贪心规则。" # 返回不匹配的节点 return True , None # 返回True表示是贪心路径 def Path_to_nodes(self, Path, start_node=0):