summaryrefslogtreecommitdiffstats
path: root/tour_improvements/two_opt.py
blob: 530bfec2b5c574403e0d288a2952d2ad58deb30b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from graph import calculate_route, delinker, linker
from queue import Queue
from itertools import combinations


def two_opt(route:list) ->list:
    original_distance = calculate_route(route)
    route_points = delinker(route)

    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)