-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDeterministicAlgorithm.py
More file actions
36 lines (29 loc) · 1.41 KB
/
DeterministicAlgorithm.py
File metadata and controls
36 lines (29 loc) · 1.41 KB
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
from math import sqrt
from Algorithm import Algorithm
class DeterministicAlgorithm(Algorithm):
def __init__(self, citiesList, numberOfGenerations, edgeWeightType):
super().__init__(citiesList, numberOfGenerations, edgeWeightType)
def start(self):
super().start()
for i in range(self.numberOfGenerations):
trail = self.runDeterministicMethod(i % len(self.citiesList))
self.trailsLengths.append(self.getTrailLength(trail))
return self.resultsAnalyzer.analiseResult(self.trailsLengths)
def runDeterministicMethod(self, startCityIndex):
numberOfCities = len(self.citiesList)
currentCityIndex = startCityIndex
visitedCitiesIndexes = [startCityIndex]
trail = [startCityIndex]
for i in range(numberOfCities-1):
distances = []
for cityIndex in range(numberOfCities):
if not (cityIndex in visitedCitiesIndexes):
distances.append([sqrt(
abs(self.citiesList[currentCityIndex][0] - self.citiesList[cityIndex][0]) ** 2 + abs(
self.citiesList[currentCityIndex][1] - self.citiesList[cityIndex][1]) ** 2), cityIndex
])
distances.sort()
currentCityIndex = distances[0][1]
visitedCitiesIndexes.append(currentCityIndex)
trail.append(currentCityIndex)
return trail