]> Skullheadx's Git Forge - The-Traveling-Salesman-Problem.git/commitdiff
approximation ratio to info
authorSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Wed, 28 Dec 2022 06:49:13 +0000 (01:49 -0500)
committerSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Wed, 28 Dec 2022 06:49:13 +0000 (01:49 -0500)
display.py
graph.py
main.py

index afeeae0b147565638e848e6f871968d37be7f109..3f3d5f036dcae81948826b81190b88d066b2318f 100644 (file)
@@ -35,7 +35,7 @@ def find_MST(route: list) -> list:
     return mst
 
 
-def find_one_tree(route: list) -> list:
+def find_one_tree(route: list):
     removed_vertex = route[0]
     mst = find_MST(route[1:-1])
     distances = []
@@ -124,7 +124,7 @@ class Display:
         self.salesman = Salesman(self.route)
 
         self.mst = find_MST(route[:-1])
-        self.ot,self.ot_removed_point = find_one_tree(route)
+        self.ot, self.ot_removed_point = find_one_tree(route)
 
     def update(self, delta: float) -> None:
         self.salesman.update(delta)
@@ -143,7 +143,7 @@ class Display:
 
             self.screen.fill(WHITE)
 
-            pygame.draw.circle(self.screen,BLUE,self.ot_removed_point,15)
+            pygame.draw.circle(self.screen, BLUE, self.ot_removed_point, 15)
 
             if len(self.route) > 1:
                 for line in self.ot:  # One Tree
index 48aa6c79b94ebf273c1204c6e7b42b4aa11d6463..9b95c4f8d88d54e04c5303903384ffbfb2f8b6c9 100644 (file)
--- a/graph.py
+++ b/graph.py
@@ -78,16 +78,18 @@ def find_shortest_route(routes: list) -> list:
     return shortest_route
 
 
-def print_info(route: list, time: float, method_name: str, one_tree: float, one_tree_time:float, r=0) -> None:
+def print_info(route: list, time: float, method_name: str, one_tree: float, one_tree_time: float, r=0) -> None:
+    d = calculate_route(route)
     print(
         f"""
 Traveling Salesman Problem
 Method Used: {method_name}
+Approximation ratio: {round(d/one_tree * 100 - 100,r)}%
 Time Used: {round(time, r):,} seconds
 Number of Nodes: {(len(route) - 1):,}
-Distance: {round(calculate_route(route), r):,}
+Distance: {round(d, r):,}
 One Tree Lower Bound: {round(one_tree, r):,}
-One Tree Time Used: {round(one_tree_time, r):,}
+One Tree Time Used: {round(one_tree_time, r):,} seconds
 """)
 
 
@@ -132,7 +134,7 @@ def find_one_tree(graph: list) -> float:
     lower_bound = None
 
     for removed_vertex in graph:
-        g = graph[:graph.index(removed_vertex)] + graph[graph.index(removed_vertex)+1:]
+        g = graph[:graph.index(removed_vertex)] + graph[graph.index(removed_vertex) + 1:]
         mst = find_MST(g)
         distances = []
         for town in g:
diff --git a/main.py b/main.py
index dcface54ee506b94395c779e96ed95f8f96363c9..c9bb4968bfe98e918a61a8b6b29d801c8a9892e7 100644 (file)
--- a/main.py
+++ b/main.py
@@ -22,7 +22,7 @@ def main():
                     print("The file does not exist")
 
     if CREATE_NEW_GRAPHS:
-        graph, filename = create(GRAPH_PATH, 640, 640, 100)
+        graph, filename = create(GRAPH_PATH, 640, 640, 50)
     else:
         filename = "graph1.txt"
         graph = read(GRAPH_PATH, filename)
@@ -37,7 +37,8 @@ def main():
     one_tree = find_one_tree(graph)
     one_tree_time_end = perf_counter()
 
-    print_info(route, route_time_end - route_time_start, "NN Heuristic",  one_tree, one_tree_time_end-one_tree_time_start,r=100)
+    print_info(route, route_time_end - route_time_start, "NN Heuristic", one_tree,
+               one_tree_time_end - one_tree_time_start, r=3)
 
     display = Display(os.path.join(GRAPH_PATH, filename), route)
     display.show()