/
greedy_1.py
38 lines (29 loc) · 1017 Bytes
/
greedy_1.py
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
26
27
28
29
30
31
32
33
34
35
36
37
38
import time
import numpy as np
from Plot import plotTSP
from read_file import read,find_distance,find_segment_length
# Uses greedy approach to solve TSP
def next_point(not_visited,dis,points):
#selects points which is nearest and has not been visited
mini=9999
for i in range (points.shape[0]):
if (not_visited[i]) & (dis[i]>0) & (dis[i]<mini):
mini=dis[i]
nxt=i
return nxt
def greedy(points):
distance=find_distance(points) #creates n*n distance matrix
route = np.empty(0,dtype=int)
not_visited=np.ones(points.shape[0],dtype=bool) # True is point is not visited
not_visited[0]=0
route=np.append(route,0)
now=0
for i in range(points.shape[0]-1):
dis=distance[now][:]
nxt=next_point(not_visited,dis,points)
route=np.append(route,nxt)
not_visited[nxt]=0
now=nxt
route=np.append(route,0)
travel_distance=np.sum(find_segment_length(route,distance))
return (travel_distance,route)