]> Skullheadx's Git Forge - The-Traveling-Salesman-Problem.git/commitdiff
two opt halfway
authorSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Tue, 10 Jan 2023 13:56:53 +0000 (08:56 -0500)
committerSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Tue, 10 Jan 2023 13:56:53 +0000 (08:56 -0500)
need to find a way to get optimal two opt lol

tour_improvements/two_opt.py

index 358fd535fce2e604cc926121cba73edcf0547a3b..530bfec2b5c574403e0d288a2952d2ad58deb30b 100644 (file)
@@ -4,20 +4,22 @@ from itertools import combinations
 
 
 def two_opt(route:list) ->list:
-    d = calculate_route(route)
-    r = delinker(route)
-    c = combinations(r,2)
-    for edge1,edge2 in c:
-        s1,e1 = edge1
-        s2, e2 = edge2
+    original_distance = calculate_route(route)
+    route_points = delinker(route)
 
-        print(edge1,edge2)
-        temp = r[:]
-        temp.remove(edge1)
-        temp.remove(edge2)
-        temp.append((s1, e2))
-        temp.append((s2, e1))
-        new_d = calculate_route(temp, mode="points")
-        if new_d < d:
-            r = temp[:]
+    for i, edge1 in enumerate(route_points):
+        edge_distance =
+        for edge2 in route_points[i+1:]:
+            s1,e1 = edge1
+            s2, e2 = edge2
+
+            print(edge1,edge2)
+            temp = r[:]
+            temp.remove(edge1)
+            temp.remove(edge2)
+            temp.append((s1, e2))
+            temp.append((s2, e1))
+            new_d = calculate_route(temp, mode="points")
+            if new_d < d:
+                r = temp[:]
     return linker(r)
\ No newline at end of file