-
Notifications
You must be signed in to change notification settings - Fork 0
/
TSPDriver.py
114 lines (90 loc) · 3.15 KB
/
TSPDriver.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# -*- coding: utf-8 -*-
"""
Created on Sun Feb 28 01:38:38 2016
@author: s0568630
Driver Module to act as functionality test for TSPHillclimber
and associated modules.
"""
import GeoFuncs as gf
from PointPlotter import PointPlotter
import TSPHillClimber as HC
from TSPAlgorithm import TSPAlgorithm
pp = PointPlotter()
#load all cities as allcities
allcities = gf.load_Locations('CityLocations.csv')
numlocs = 9
numiters = 1000
numatt = 100
if numlocs <= 10:
brute = True
else:
brute = False
#pick some cities return (dicitonary) matrix and cities as lists
city_lookup, dMat, cities = gf.selectCitydata(allcities,numlocs)
#print '\ncity_lookup is: ',city_lookup
#print '\ndistmatrix is: ',distmatrix
#print '\ncities is: ',cities
#Instantiate instance of algorithms
bruteForce = TSPAlgorithm(dMat)
localMixer = HC.LocalMixerHC(dMat)
localImprover = HC.LocalImproverHC(dMat)
globalHC = HC.GlobalHC(dMat)
if brute:
#Set up complete solution list for dataset
bruteForce.solutionList()
allSols = bruteForce.getAllSolutions()
#Pass it to hill climber algorithms
localMixer.solutionList(allSols)
localImprover.solutionList(allSols)
globalHC.solutionList(allSols)
#Solve run all nonbruteforce algorithms
localMixer.solve(numiters)
localImprover.solve(numiters)
globalHC.solve(numatt, numiters)
print "Everything Solved"
#print results
localMixer.resultFormatter()
localImprover.resultFormatter()
globalHC.resultFormatter()
#get routes as polylines
if brute:
optimalTour = bruteForce.getOptimalTour()
lMTour = localMixer.getBestTour()
lITour = localImprover.getBestTour()
gHCTour = globalHC.getBestTour()
#------------------------------------------------------------------------------
#plot the routes
print "plotting Routes"
#plot basemap
pp.plotWorld(g=0.2, c='grey')
#------------------------------------------------------------------------------
if brute:
pp.plotRoute(optimalTour,cities,c='m',routeWidth=8,legend='BruteForce')
pp.plotRoute(lMTour,cities,c='green',routeWidth=4,legend='localMixer')
pp.plotCities(cities,labels=brute)
pp.legend()
#show
pp.show(title = "Local Mixer Hill Climber", xlabel = "Longitude", ylabel="Latitude",
grid=True)
#------------------------------------------------------------------------------
#plot basemap
pp.plotWorld(g=0.2, c='grey')
if brute:
pp.plotRoute(optimalTour,cities,c='m',routeWidth=8,legend='BruteForce')
pp.plotRoute(lITour,cities,c='blue',routeWidth=4,legend='localImprover')
pp.plotCities(cities, labels=brute)
pp.legend()
#show
pp.show(title = "Local Improver Hill Climber", xlabel = "Longitude", ylabel="Latitude",
grid=True)
#------------------------------------------------------------------------------
#plot basemap
pp.plotWorld(g=0.2, c='grey')
if brute:
pp.plotRoute(optimalTour,cities,c='m',routeWidth=8,legend='BruteForce')
pp.plotRoute(gHCTour,cities,c='orange',routeWidth=4,legend='GlobalHC')
pp.plotCities(cities,labels=brute)
pp.legend()
#show
pp.show(title = "Global Hill Climber", xlabel = "Longitude", ylabel="Latitude",
grid=True)