-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest9.py
More file actions
324 lines (268 loc) · 34.3 KB
/
Copy pathtest9.py
File metadata and controls
324 lines (268 loc) · 34.3 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
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
import math
import time
from operator import itemgetter
def graphConv(filename):
graph = {}
size = 0
with open(filename, 'r') as file:
for line in file:
contents = line.split()
if contents[0] == 'p':
size = int(contents[2])
break
for i in range(1, size + 1):
graph[i] = []
with open(filename, 'r') as file:
for line in file:
edge = line.split()
if edge[0] == 'e':
e1 = int(edge[1])
e2 = int(edge[2])
graph[e1].append(e2)
graph[e2].append(e1)
return graph
def distance(point_list1, point_list2):
temp = 0.0
for i in range(len(point_list1)):
temp += (float(point_list1[i]) - float(point_list2[i]))**2
return math.sqrt(temp)
def vectorFormation(startpoint, endpoint):
vectorResult = []
for dimension in range(len(endpoint)):
vectorResult.append(float(endpoint[dimension]) - float(startpoint[dimension]))
return vectorResult
def vectorAddition(vector_list):
result = []
for dimension in range(len(vector_list[0])):
temp = 0.0
for vector in vector_list:
temp += float(vector[dimension])
result.append(temp)
return result
def vectorNegation(vector_list):
result = []
for dimension in range(len(vector_list[0])):
temp = 0.0
for vector in vector_list:
temp -= float(vector[dimension])
result.append(temp)
return result
def vectorSubtraction(subXFromThis, X):
for dimension in range(len(subXFromThis)):
subXFromThis[dimension] -= X[dimension]
return subXFromThis
def vectorMagnitude(vector):
temp = 0.0
for dimension in range(len(vector)):
temp += float(vector[dimension])**2
return math.sqrt(temp)
def unitVector(vector):
magnitude = vectorMagnitude(vector)
unit = []
for dimension in range(len(vector)):
unit.append(float(vector[dimension])/magnitude)
return unit
def dot(A, B):
dotScalar = 0.0
for i in range(len(A)):
dotScalar += A[i]*B[i]
return dotScalar
def vectorProj(Aon, toB):
toUnitB = unitVector(toB)
dotScalar = dot(Aon, toUnitB)
for i in range(len(toUnitB)):
toUnitB[i] *= dotScalar
return toUnitB
def equidistant_vectors(N, spacing):
dims = N-1
coords = {}
first = [0.0]*dims
second = [float(spacing)] + [0.0]*(dims-1)
third = [float(spacing/2.0), float(spacing/2.0)*math.sqrt(3)] + [0.0]*(dims-2)
coords[1] = first
coords[2] = second
coords[3] = third
#initialize N equidistant vectors
for i in range(4, N+1):
node_coord = [0.0]*dims
for dimension in range(0, i-2):
temp = 0.0
for prevNode in range(1, i):
temp += coords[prevNode][dimension]
temp /= float(i-1)
node_coord[dimension] = temp
temp = 0.0
for prevDims in range(0, i-2):
temp += (node_coord[prevDims]**2)
last_dim_solution = math.sqrt(float(spacing)**2 - temp)
node_coord[i-2] = last_dim_solution
coords[i] = node_coord
return coords
def hasConverged(distances):
for key in distances.keys():
edgeDict = distances[key]
for edge in edgeDict.keys():
if edgeDict[edge][1] == False:
return False
return True
def nextDirection(node, neighbors, coords):
position = coords[node]
neighborsCoords = []
for neighbor in neighbors:
neighborsCoords.append(coords[neighbor])
vecList = []
for neighbor in neighborsCoords:
vecList.append(unitVector(vectorFormation(position, neighbor)))
return unitVector(vectorAddition(vecList))
def updatePosition(coords, node, toMoveNext):
for dim in range(len(toMoveNext)):
coords[node][dim] += toMoveNext[dim]
def updateDistances(coords, distances):
for node in distances.keys():
relativesDict = distances[node]
position = coords[node]
for relative in relativesDict.keys():
spacing = relativesDict[relative]
dist = distance(position, coords[relative])
spacing[0] = dist
if dist < 2.0:#Arbitrary value, based on step-distance = 1.0 for unit vector
spacing[1] = True
#Can spacing ever grow to be > 2.0 after it's converged?
def avgPosition(coords, nodes):
average = [0.0]*len(coords[nodes[0]])
for node in nodes:
position = coords[node]
for dim in range(len(average)):
average[dim] += position[dim]
numNodes = float(len(nodes))
for dim in range(len(average)):
average[dim] /= numNodes
return average
def convergence(coordinates, adjacency, space, onResume = False, resumedCoords = {}):
start = time.time()
nodes = adjacency.keys()
distances = {}
if onResume:
coords = resumedCoords
for i in range(len(nodes) - 1):
lesser = nodes[i]
distances[lesser] = {}
for j in range(i+1, len(nodes)):
greater = nodes[j]
distances[lesser][greater] = [distance(resumedCoords[lesser], resumedCoords[nodes[j]]), False]
if distances[lesser][greater][0] < 2.0:
distances[lesser][greater][1] = True
else:
coords = coordinates
for i in range(len(nodes)-1):
lesser = nodes[i]
distances[lesser] = {}
for j in range(i+1, len(nodes)):
distances[lesser][nodes[j]] = [space, False]
iter = 0
while not hasConverged(distances):
iter += 1
print("Round {0}".format(iter))
moveUpdates = []
for node in nodes:
moveUpdates.append(nextDirection(node, adjacency[node], coords))
for x in range(len(nodes)):
updatePosition(coords, nodes[x], moveUpdates[x])
updateDistances(coords, distances)
if (iter%90 == 0):
for key in coords.keys():
print("{0}: {1},".format(key, coords[key]))
print("Time to Converge: {0}".format(time.time() - start))
return avgPosition(coords, nodes)
def main(filename, origSize, sample = False, sampleGraph = {}, onResume = False, resumeCoords = {}):
graph = {}
if sample:
graph = sampleGraph
else:
graph = graphConv(filename)
toDel = [36, 83, 108, 75, 76, 51, 90, 73, 88, 42, 113, 15, 97, 16, 64, 95, 94, 3, 21, 102, 55, 116, 33, 27, 50, 87, 105, 78, 124, 112, 12, 100, 121, 106, 14, 56, 84, 120, 32, 53, 43, 37, 109, 28, 4,]
for node in toDel:
neighbors = graph[node]
for neighbor in neighbors:
graph[neighbor].remove(node)
graph.pop(node, None)
if True:
#Typically, spacing is 5000
spacing = 5000
coords = equidistant_vectors(origSize, spacing)
coordsCopy = {}
for key in coords.keys():
position = []
for dimension in coords[key]:
position.append(dimension)
coordsCopy[key] = position
cPoint = convergence(coordsCopy, graph, spacing, onResume, resumeCoords)
print(cPoint)
distResults = []
for node in graph.keys():
distResults.append((node, distance(cPoint, coords[node])))
distResults = sorted(distResults, key=itemgetter(1), reverse=True)
parsed = []
print(distResults)
for item in distResults:
parsed.append(item[0])
print(parsed)
return distResults[0][0]
#1 Iteration took 0.6 sec
#Size 4 took 3868 simulated rounds
graph1 = {1:[2,3,4], 2:[1,3], 3:[1,2], 4:[1]}
#1 Iteration took 1.74 sec
#Size 7 took 3440 simulated rounds
graph2 = {1:[2,3,4,6], 2:[1,3,5,7], 3:[1,2,4,5], 4:[1,3,5,6,7], 5:[2,3,4,6,7], 6:[1,4,5,7], 7: [2,4,5,6]}
#1 Iteration took 1.3 sec
graph2ver2 = {1:[2,4,6], 2:[1,5,7], 4:[1,5,6,7], 5:[2,4,6,7], 6:[1,4,5,7], 7: [2,4,5,6]}
#1 Iteration took 1.0 sec
graph2ver3 = {1:[4,6], 4:[1,5,6,7], 5:[4,6,7], 6:[1,4,5,7], 7: [4,5,6]}
#1 Iteration took 0.6 sec
graph2ver4 = {4:[5,6,7], 5:[4,6,7], 6:[4,5,7], 7: [4,5,6]}
graph = graph2
#main("c125.txt", 7, True, graph)
#'''
#1 Iteration took 10,385 sec
#Size 125 took 3526 simulated rounds
#Note to self: Converged at... [2500.1606507561632, 1442.297368316359, 1020.9035173351026, 790.785856318066, 645.8978943025529, 546.780878827789, 473.54237984520347, 416.6814071002168, 372.9346475198153, 337.7651684992841, 306.51289554920527, 282.87369095514794, 261.1904799309855, 242.45481892597658, 226.79674719720086, 213.50343814068427, 202.9363278769302, 192.44613404664068, 181.14223321611146, 171.84367302585264, 165.0118714827357, 156.9617862348561, 151.22024426072954, 144.57052309055285, 138.43254493037603, 133.21253740075556, 128.12656293375687, 125.03317070810411, 120.10125643266791, 115.92598780626956, 111.77610144562067, 107.85094011460671, 106.06061849071692, 102.50518518682027, 97.20686682844537, 96.72556952458811, 93.6688605552854, 92.66237650205935, 90.5313997528022, 87.6097190125494, 83.81641237507291, 83.04803859240326, 81.37941778421214, 80.97639167809864, 78.00210626524475, 76.79105055578769, 74.70182672337468, 73.8700940266351, 70.47985909838101, 68.35085557828651, 68.9494522965366, 67.15506063883844, 67.81642204926685, 64.1803035053063, 63.263473610474975, 62.62974105755576, 61.54690200492055, 60.97076611110323, 61.1350066893735, 57.97261298095041, 57.259912915578475, 55.87062323095282, 54.27455439531492, 55.34835220024454, 53.772732842528974, 54.144291137386176, 51.439188907041995, 51.65807840705602, 51.61842438628762, 49.69983994825094, 49.496681891558346, 47.1304434520029, 48.40525408914543, 45.58119223959545, 44.986307490534685, 46.79760723835413, 45.008888162710534, 45.13633276078471, 45.78243361653749, 43.05593024706185, 43.95763112615007, 40.53187058436222, 42.22093094721457, 42.196137780573785, 41.70535544361472, 40.5149772615826, 39.070176512929145, 39.36026790353056, 37.95235473044288, 39.23086163283957, 39.27864289014676, 37.88714180151359, 36.53653005618709, 36.14553675120005, 37.433319615377776, 35.3705773023133, 37.40330528309892, 37.284444024326774, 34.748258868911506, 36.565506646976985, 34.282233062240955, 33.68497693171059, 35.77969430901654, 33.27500676022936, 33.43224778109444, 33.124239700056954, 30.86281342774412, 32.773403380319564, 33.67990482506363, 33.61056635902326, 31.154523222616273, 30.137018117798718, 32.99954590664156, 31.02700405829687, 29.795995788605772, 30.500453773282228, 30.247979408465053, 30.226916319766907, 29.26186779081025, 29.263168756770042, 29.001778269039683, 29.49490611499247, 28.307327970685638, 29.48597598692083]
DIMACS1 = "c125.txt"
#1 Iteration took ___ sec
DIMACS2 = "c250.txt"
filename = DIMACS1
main(filename, 125)
#'''
#solution1 = [7, 9, 11, 13, 19, 22, 25, 29, 33, 34, 40, 44, 49, 52, 54, 55, 66, 67, 68, 70, 79, 80, 93, 96, 98, 99, 103, 104, 110, 111, 114, 117, 122, 125]
#solution2 = [1, 2, 5, 7, 9, 11, 17, 18, 19, 25, 29, 31, 34, 40, 44, 45, 48, 49, 54, 70, 71, 77, 79, 80, 99, 101, 110, 114, 115, 117, 121, 122, 123, 125]
#(Spacing = 5000)
#returnedList = [(36, 3523.693497765972), (83, 3523.6737899979994), (108, 3523.43888631772), (75, 3523.1875935646367), (76, 3523.1786370552636), (51, 3522.9458292278528), (90, 3522.9407640913287), (73, 3522.9268843868417), (88, 3522.702083788151), (42, 3522.694040416341), (113, 3522.691357169404), (15, 3522.6895888687013), (97, 3522.6888349034757), (16, 3522.68852001952), (64, 3522.683320525215), (95, 3522.680309220204), (94, 3522.675917686121), (3, 3522.440157480916), (68, 3522.2154681112374), (103, 3522.212167282833), (33, 3522.207519494393), (17, 3522.207438909312), (116, 3522.2059410640636), (50, 3522.2025843394154), (12, 3522.197338999249), (81, 3522.1968342788455), (100, 3522.1892971055827), (89, 3521.963605011831), (55, 3521.962040311552), (14, 3521.9620069142993), (63, 3521.9587898849377), (38, 3521.95804187085), (105, 3521.9519343575694), (78, 3521.9515434693362), (21, 3521.9480519454173), (102, 3521.947086177915), (112, 3521.944696855856), (71, 3521.7226731924943), (93, 3521.721860081576), (28, 3521.720887782626), (56, 3521.7192643626204), (32, 3521.7130306211875), (61, 3521.71284972694), (120, 3521.712450930675), (87, 3521.7109643190433), (124, 3521.7076283722336), (122, 3521.487027061189), (66, 3521.484695519579), (23, 3521.481978408685), (26, 3521.481152962645), (53, 3521.481147770065), (62, 3521.4800474826425), (84, 3521.478193410925), (20, 3521.4779705939864), (27, 3521.475260900785), (106, 3521.475174276464), (37, 3521.4728484148022), (43, 3521.4710845058726), (107, 3521.4692060050656), (121, 3521.4663227848064), (79, 3521.24344444265), (35, 3521.2399726181493), (117, 3521.237806573935), (115, 3521.2356037010027), (31, 3521.2348749834796), (69, 3521.2346651409625), (13, 3521.233052839421), (5, 3521.231418778267), (118, 3521.2306385823863), (4, 3521.228491295554), (1, 3521.228411300391), (91, 3521.2269549011735), (57, 3521.2269222388663), (44, 3521.2265348660108), (109, 3521.2254365090075), (72, 3521.225263758998), (58, 3521.220382444583), (25, 3521.0036670630457), (2, 3521.0002864225166), (9, 3520.9993057451884), (96, 3520.99876849124), (85, 3520.998555321755), (48, 3520.9968298239564), (86, 3520.995770984512), (119, 3520.9944863650585), (52, 3520.9936254429076), (30, 3520.9935361840603), (46, 3520.991067672346), (74, 3520.990298342853), (41, 3520.985114725235), (6, 3520.98509276115), (77, 3520.754218279458), (82, 3520.7522751845795), (123, 3520.7511606143535), (22, 3520.7504652028906), (34, 3520.7503865622352), (92, 3520.7458172314555), (65, 3520.7455260611414), (10, 3520.7416001455485), (59, 3520.7382862596874), (70, 3520.5229679695626), (47, 3520.517438180784), (24, 3520.5170021581425), (18, 3520.5096323613934), (39, 3520.5066285723883), (67, 3520.290624674209), (125, 3520.2901229823474), (40, 3520.2876614569736), (29, 3520.2864607311913), (11, 3520.285436216093), (49, 3520.2777795930583), (98, 3520.271396491718), (80, 3520.0167386730673), (7, 3520.011514249433), (110, 3520.008977367595), (99, 3520.0080446290144), (101, 3520.0065865175143), (19, 3520.006512223328), (8, 3519.994067254871), (45, 3519.7783062065905), (111, 3519.77139494549), (104, 3519.7702190052587), (54, 3519.538186641415), (114, 3519.536622540787), (60, 3519.5339747761777)]
#parsed = [36, 83, 108, 75, 76, 51, 90, 73, 88, 42, 113, 15, 97, 16, 64, 95, 94, 3, 68, 103, 33, 17, 116, 50, 12, 81, 100, 89, 55, 14, 63, 38, 105, 78, 21, 102, 112, 71, 93, 28, 56, 32, 61, 120, 87, 124, 122, 66, 23, 26,
#53, 62, 84, 20, 27, 106, 37, 43, 107, 121, 79, 35, 117, 115, 31, 69, 13, 5, 118, 4, 1, 91, 57, 44, 109, 72, 58, 25, 2, 9, 96, 85, 48, 86, 119, 52, 30, 46, 74, 41, 6, 77, 82, 123, 22, 34, 92, 65, 10, 59, 70, 47, 24,
#18, 39, 67, 125, 40, 29, 11, 49, 98, 80, 7, 110, 99, 101, 19, 8, 45, 111, 104, 54, 114, 60]
#(Spacing = 500) -- took like 15 minutes I think
#returnedList = [(36, 352.3717390573233), (83, 352.37125760627845), (108, 352.34652225817365), (75, 352.3219776488395), (76, 352.32145154087215), (51, 352.2970925089509), (90, 352.2969325364705), (73, 352.29682330519546), (88, 352.27216221074485), (42, 352.2720528619548), (113, 352.2719887485938), (97, 352.27197449329117), (16, 352.27185149882627), (15, 352.2718481476613), (95, 352.2717366550763), (64, 352.27170112407373), (94, 352.27169285605817), (3, 352.2471522312966), (68, 352.2226075266652), (103, 352.2225536053001), (17, 352.222474101327), (33, 352.22245827869284), (116, 352.2223908818201), (50, 352.22234616927454), (81, 352.2222754259303), (12, 352.2221850218485), (100, 352.22218488139873), (89, 352.1977391639019), (14, 352.1976292557441), (55, 352.1976130579111), (63, 352.1975837849828), (38, 352.1975654170567), (105, 352.19746422050605), (78, 352.1974325318564), (102, 352.1973207687819), (112, 352.19731151418915), (21, 352.1972994575192), (71, 352.1729436209802), (93, 352.17280609476984), (32, 352.1727844040266), (28, 352.17276515989266), (56, 352.1727499180211), (61, 352.1726589573563), (120, 352.1726140734111), (87, 352.17261140254567), (124, 352.17242394678186), (122, 352.1481060647959), (66, 352.14802346532474), (26, 352.14790166356795), (23, 352.1478851958838), (53, 352.14787612683637), (62, 352.14784001399636), (84, 352.14783911147066), (106, 352.1478228646674), (20, 352.14780443822985), (43, 352.14779963892124), (107, 352.1477508660011), (27, 352.1477415381406), (37, 352.14773719079517), (121, 352.14767142407163), (79, 352.12348435778944), (35, 352.1233071409046), (115, 352.1232984046407), (117, 352.12326488800267), (5, 352.1232620110464), (69, 352.12324807102783), (1, 352.1232050567491), (13, 352.12318683830074), (31, 352.1231834273401), (91, 352.12317775457893), (72, 352.1231515624584), (118, 352.12309726102524), (44, 352.1230895957454), (4, 352.12303266986066), (57, 352.1230131136415), (109, 352.1229692881189), (58, 352.12293222310325), (2, 352.0985521732687), (25, 352.09853130022583), (9, 352.0985033534775), (85, 352.09842332120223), (86, 352.098418836791), (96, 352.09840495711893), (48, 352.0983936541416), (119, 352.09833960605124), (74, 352.09831899904873), (30, 352.0983055176576), (46, 352.09826639298), (52, 352.0982591057671), (41, 352.0981807334848), (6, 352.0981321272912), (77, 352.0736979085983), (34, 352.0736916021588), (82, 352.07363507731094), (123, 352.0736171367198), (22, 352.0735187432477), (10, 352.0734881172343), (92, 352.07348393798196), (59, 352.073410807693), (65, 352.0733674026553), (47, 352.04882530828297), (70, 352.0488227812742), (24, 352.04879361414226), (39, 352.0487413137729), (18, 352.0486719640814), (125, 352.0242632724498), (29, 352.02421329510224), (11, 352.0241990336707), (67, 352.02418793435504), (40, 352.0241521025126), (49, 352.02401057116094), (98, 352.02393512226615), (80, 351.9995415288004), (110, 351.99950629973137), (7, 351.9994339165542), (19, 351.99941544651927), (101, 351.9993304517921), (99, 351.9993081691439), (8, 351.99923840213773), (45, 351.97474328334425), (104, 351.97455158286124), (111, 351.97442339468904), (114, 351.94998256037667), (54, 351.9498805645365), (60, 351.9498716176302)]
#parsed = [36, 83, 108, 75, 76, 51, 90, 73, 88, 42, 113, 97, 16, 15, 95, 64, 94, 3, 68, 103, 17, 33, 116, 50, 81, 12, 100, 89, 14, 55, 63, 38, 105, 78, 102, 112, 21, 71, 93, 32, 28, 56, 61, 120, 87, 124, 122, 66, 26, 23,
#53, 62, 84, 106, 20, 43, 107, 27, 37, 121, 79, 35, 115, 117, 5, 69, 1, 13, 31, 91, 72, 118, 44, 4, 57, 109, 58, 2, 25, 9, 85, 86, 96, 48, 119, 74, 30, 46, 52, 41, 6, 77, 34, 82, 123, 22, 10, 92, 59, 65, 47, 70, 24,
#39, 18, 125, 29, 11, 67, 40, 49, 98, 80, 110, 7, 19, 101, 99, 8, 45, 104, 111, 114, 54, 60]
#(Spacing = 5000)
#Deleted First: [36, 83, 108, 75, 76, 51, 90, 73, 88, 42, 113, 15, 97, 16, 64, 95, 94, 3]
#Size 107 took 3522 simulated rounds -- took 7789 seconds
#Converged Point: [2500.4434743203356, 1416.1351556646794, 1029.7116718801074, 797.8854516285612, 651.4889705796835, 551.4805328894486, 477.60238281437563, 420.5945311895941, 376.2101344445525, 341.1870046571781, 309.0148310202923, 285.1747019385654, 263.7159701281376, 214.1933102782585, 200.35949540005228, 219.65399999615775, 208.0159218271004, 197.6986191061002, 186.0066171855248, 175.64732771391957, 169.05860947029657, 160.90915880107121, 155.31735403224224, 148.6546534915806, 142.52431023007964, 135.8641677646059, 131.56962682862445, 128.8218288129483, 123.21945424625082, 119.480617943775, 115.0697112290907, 110.5545437056974, 109.47461940533093, 105.6718482634996, 69.78963226691559, 100.17192124001595, 97.49781454208514, 95.60299765659005, 94.11830258845508, 90.22002544073023, 55.69930936321167, 86.42370466858188, 85.07022043644784, 84.74272667705499, 81.29986186052894, 79.86120553232193, 77.861049229029, 76.56874708708774, 73.42696644873418, 40.52908290952417, 72.15762627323998, 70.46975333974315, 71.38047519115531, 67.18271596481289, 66.62621729274862, 65.76596463455309, 64.63953181885084, 64.1597491668386, 64.35410044574897, 61.38797023530658, 60.06191139689216, 59.421809209028616, 26.004317122766114, 58.4037337627852, 57.50935901118729, 57.589036450011, 54.81245966013532, 54.984097671426966, 54.50261328167362, 53.10210816408117, 52.68688353444218, 19.129270862661322, 51.69990959653043, 18.172008436137453, 17.931308955297684, 50.843188009629074, 48.59471540014981, 49.88321878544052, 50.54636159735107, 47.052175245740244, 48.383635484279345, 13.986780185377935, 46.036520996749815, 46.125165254088564, 46.22587601187969, 43.7677775789382, 11.691395144494024, 43.78648593774718, 11.068000426875, 44.14352435981588, 43.65902220110882, 42.21859665104323, 9.533859489831094, 9.432969248322802, 42.53464911951602, 8.891605131134847, 42.32550141189607, 42.214063772948066, 39.55244701777814, 41.39387153946609, 38.414866446883686, 39.01289096514276, 40.23528978153583, 37.60401739640029, 37.9039072085748, 37.21713509520023, 4.934120729603258, 37.47580200655176, 39.04452559679768, 38.050292696775735, 35.47207402669367, 3.531030008530699, 38.007084894946686, 36.714216357519135, 34.462603865007324, 36.09300099395423, 34.84093924651022, 35.191027930319024, 33.611072902934765, 33.32386302305903, 34.330172455108524, 34.365716256065134, 32.169537579981586, 34.45754888404148]
#returnedList = [(21, 3520.6042323260176), (102, 3520.603139471772), (55, 3520.282826726217), (116, 3520.2805047371585), (33, 3520.277308906825), (27, 3520.276370586483), (50, 3520.2761292544265), (87, 3520.2756315262577), (105, 3520.2740861829247), (78, 3520.271802103456), (124, 3520.269934045139), (112, 3520.266103948439), (12, 3520.2648427978734), (100, 3520.263957990401), (68, 3519.962179556796), (121, 3519.9457816890854), (107, 3519.9456171670595), (120, 3519.9374354816314), (81, 3519.9359203482713), (93, 3519.6238533790165), (23, 3519.623329244898), (103, 3519.6212869925175), (89, 3519.6200650327623), (56, 3519.6198854241416), (84, 3519.619101767436), (14, 3519.617920662033), (43, 3519.6155594760567), (62, 3519.61493023946), (53, 3519.614298557225), (28, 3519.613926627625), (17, 3519.612912326994), (106, 3519.6117132144286), (13, 3519.3004819009257), (71, 3519.3001324370416), (52, 3519.296539109744), (57, 3519.296513273258), (109, 3519.29068326892), (38, 3519.290602852471), (118, 3519.290502202742), (63, 3519.2899235789914), (41, 3519.289844099352), (4, 3519.2892443604237), (37, 3519.288185896807), (20, 3519.2865500134317), (32, 3519.2840767046914), (61, 3519.2829297877647), (58, 3519.278869793601), (5, 3518.981228077406), (85, 3518.978928269945), (69, 3518.9787284904155), (1, 3518.9778086891815), (48, 3518.975808669972), (22, 3518.97420990792), (74, 3518.971863566641), (44, 3518.9717446178324), (66, 3518.9716770343493), (65, 3518.9689816758237), (72, 3518.9687985157498), (46, 3518.96699849308), (26, 3518.966178513855), (30, 3518.9630624812785), (6, 3518.9611670338204), (70, 3518.665315993387), (77, 3518.661774468611), (25, 3518.660360432352), (9, 3518.6596182406165), (49, 3518.6578060731135), (18, 3518.6575441342547), (31, 3518.654355669898), (122, 3518.6539848204025), (35, 3518.6536709710135), (47, 3518.6522266061074), (96, 3518.6506226292736), (92, 3518.645644880461), (59, 3518.645284971401), (91, 3518.6435790239675), (39, 3518.641192276508), (119, 3518.64062288685), (10, 3518.6395480109422), (2, 3518.347634166294), (79, 3518.343192015588), (117, 3518.3370822759857), (123, 3518.335362852005), (86, 3518.3318794501783), (24, 3518.331647991324), (115, 3518.3294249678293), (98, 3518.326336840569), (67, 3518.015410357563), (7, 3518.014891025823), (34, 3518.0124524168255), (111, 3518.008627259335), (8, 3518.008195941617), (101, 3518.0073534197163), (104, 3518.0065619033176), (82, 3518.0063248066426), (99, 3518.004863867226), (29, 3517.7015689068794), (125, 3517.701258689492), (11, 3517.6992515561137), (19, 3517.691919255692), (40, 3517.6885609935), (110, 3517.361572649577), (45, 3517.3614901171763), (114, 3517.3594438803916), (60, 3517.3554043101954), (54, 3517.3544502274053), (80, 3517.0378315088965)]
#parsed = [21, 102, 55, 116, 33, 27, 50, 87, 105, 78, 124, 112, 12, 100, 68, 121, 107, 120, 81, 93, 23, 103, 89, 56, 84, 14, 43, 62, 53, 28, 17, 106, 13, 71, 52, 57, 109, 38, 118, 63, 41, 4, 37, 20, 32, 61, 58, 5, 85, 69,
#1, 48, 22, 74, 44, 66, 65, 72, 46, 26, 30, 6, 70, 77, 25, 9, 49, 18, 31, 122, 35, 47, 96, 92, 59, 91, 39, 119, 10, 2, 79, 117, 123, 86, 24, 115, 98, 67, 7, 34, 111, 8, 101, 104, 82, 99, 29, 125, 11, 19, 40, 110, 45,
#114, 60, 54, 80]
#(Spacing = 5000)
#Deleted First: [36, 83, 108, 75, 76, 51, 90, 73, 88, 42, 113, 15, 97, 16, 64, 95, 94, 3, 21, 102, 55, 116, 33, 27, 50, 87, 105, 78, 124, 112, 12, 100,]
#Size 93 took 3520 simulated rounds -- took 5868 seconds
#Converged Point: [2500.2954326094964, 1412.228756261691, 1030.3715757050059, 799.2380594138027, 652.5988710606983, 552.3184504847883, 478.3313609218547, 421.83568349532703, 376.5069481855601, 342.15650790848866, 274.4041152269769, 288.86659341354465, 266.2246340855903, 212.40515046006672, 198.68682505193468, 223.44759781632777, 211.07332422387512, 200.46663028739195, 188.15251757656497, 142.74579879646043, 172.34795986522005, 165.11375263756622, 159.32087710970436, 152.3778890379916, 145.59974088165848, 103.26707262723545, 135.53914260999034, 133.2413380504599, 127.51006219275341, 123.72246003286594, 118.14927118727637, 78.38471376125005, 113.83134278192313, 109.7198160131592, 69.62139580091409, 103.90372364228496, 102.38193429688816, 99.30768789806135, 98.43772434317272, 95.1848887939836, 54.98142873392181, 89.94733528359583, 89.11869880661973, 88.78512619215111, 85.17643027675041, 83.3339040590592, 81.1624819925905, 80.74900207094412, 40.71078597970508, 39.90455196875549, 76.30202681146595, 74.01031694515567, 75.1158208243745, 34.89423919481607, 70.617283070477, 70.21392903160661, 69.41446446935386, 68.2208865097065, 68.31767511878293, 65.11443215568087, 64.47726514306095, 63.44998095852284, 25.19945907462388, 61.626907950003684, 61.526490045974796, 61.83689595104386, 58.835754837674, 58.820619257218226, 57.96560216412565, 57.14835492013005, 55.522681374445504, 17.90153636474349, 55.353417903690705, 16.91149175351974, 16.68748859505744, 55.00455445478651, 15.756326052314156, 53.664015195610155, 54.25835565689379, 51.50729241301423, 52.12544469645464, 12.930807724684383, 49.23795177415119, 50.32722039074205, 50.1838480968265, 11.016569431487323, 10.89066164580252, 48.50380730208201, 10.223258119310467, 47.84994359009207, 47.744153349064355, 46.80164032758302, 8.563874747704393, 8.473249183895291, 46.551638214001905, 7.9000373345447965, 45.576983691451844, 45.95394049148701, 6.890491106140309, 45.83106889220692, 6.368466497420706, 43.22396134191765, 44.90454572708181, 5.45543869956217, 41.49005048928988, 41.949520023307606, 4.620684913942932, 41.09895955255478, 44.1091837778492, 42.00014478345323, 3.4221428391966047, 3.3917231881605434, 42.8160337586345, 41.18951259625094, 2.6283049325483194, 40.799795454211754, 39.63630343857812, 40.132645622304366, 38.11620256404291, 37.3635550924312, 38.73749692952065, 39.282172878460074, 0.32088146542959084, 39.78800781535458]
#returnedList = [(121, 3518.26289446129), (106, 3518.252240080903), (14, 3517.827636748317), (56, 3517.82708922651), (84, 3517.8268884576905), (120, 3517.8225768824027), (32, 3517.819370083837), (53, 3517.8190173739226), (43, 3517.8189582709656), (37, 3517.818525061086), (109, 3517.8182970561706), (28, 3517.818217595044), (4, 3517.8171802273505), (68, 3517.4096363668996), (22, 3517.407641084493), (103, 3517.4076112728117), (65, 3517.4010438718697), (72, 3517.395368455652), (107, 3517.3948937462324), (61, 3517.3895167866012), (20, 3517.388194560097), (48, 3516.9800793553236), (35, 3516.9714546698456), (57, 3516.9685515159144), (52, 3516.968427057867), (39, 3516.9678516071012), (23, 3516.966120625083), (26, 3516.9654205944425), (118, 3516.9648752722064), (81, 3516.9641092382294), (62, 3516.9621807604176), (63, 3516.9577031220238), (122, 3516.5657969122517), (70, 3516.5638864665493), (5, 3516.56331910334), (1, 3516.5632122795387), (93, 3516.561784152507), (13, 3516.561382012855), (71, 3516.558822156678), (44, 3516.558695520069), (47, 3516.5565930374255), (69, 3516.5551440929576), (17, 3516.5544686920757), (91, 3516.5525404357145), (89, 3516.5512597074994), (66, 3516.549627727032), (98, 3516.549156728852), (74, 3516.5484963614654), (59, 3516.5478715327677), (46, 3516.5458603483744), (38, 3516.545669805149), (10, 3516.544476432132), (30, 3516.5426582498894), (58, 3516.540855988196), (6, 3516.5371858407243), (79, 3516.147157873895), (25, 3516.1449699191367), (34, 3516.1438030104996), (2, 3516.1431284665905), (117, 3516.140716396551), (31, 3516.1397564694175), (85, 3516.136106573078), (18, 3516.1355474247416), (96, 3516.131523411666), (92, 3516.130789433053), (41, 3516.1299478692595), (115, 3516.128648795744), (119, 3516.1260252377638), (111, 3516.1259595915867), (77, 3515.708743312888), (9, 3515.70252797875), (99, 3515.700545617037), (49, 3515.6999175469105), (82, 3515.699379299611), (7, 3515.6990106153253), (123, 3515.696600029084), (24, 3515.696134070765), (8, 3515.6887416614904), (86, 3515.685724859853), (29, 3515.3017334718584), (67, 3515.297688778634), (19, 3515.297365389529), (40, 3515.2931466803634), (54, 3515.293091191461), (101, 3515.29057661626), (104, 3515.2877294269774), (60, 3515.2869422696226), (11, 3514.8641323465376), (114, 3514.8634214416834), (125, 3514.863270082773), (80, 3514.862484879296), (45, 3514.8609623073758), (110, 3514.3984474256513)]
#parsed = [121, 106, 14, 56, 84, 120, 32, 53, 43, 37, 109, 28, 4, 68, 22, 103, 65, 72, 107, 61, 20, 48, 35, 57, 52, 39, 23, 26, 118, 81, 62, 63, 122, 70, 5, 1, 93, 13, 71, 44, 47, 69, 17, 91, 89, 66, 98, 74, 59, 46, 38, 10,
#30, 58, 6, 79, 25, 34, 2, 117, 31, 85, 18, 96, 92, 41, 115, 119, 111, 77, 9, 99, 49, 82, 7, 123, 24, 8, 86, 29, 67, 19, 40, 54, 101, 104, 60, 11, 114, 125, 80, 45, 110]
#(Spacing = 5000)
#Deleted First: [36, 83, 108, 75, 76, 51, 90, 73, 88, 42, 113, 15, 97, 16, 64, 95, 94, 3, 21, 102, 55, 116, 33, 27, 50, 87, 105, 78, 124, 112, 12, 100, 121, 106, 14, 56, 84, 120, 32, 53, 43, 37, 109, 28, 4,]
#Size 80 took 3517 simulated rounds -- took 4506 seconds
#Converged Point: [2499.579960613744, 1406.2134358256146, 994.3430562679252, 809.6905992227353, 660.6329617190236, 559.3238405942792, 484.4098873251217, 427.18638908090395, 381.06483698053444, 346.2303819338989, 272.7690989373315, 293.8550074784456, 228.98532269653532, 213.17373417562067, 199.40576928609897, 230.13500155561093, 216.4249293904158, 206.30798347650767, 192.49067939394794, 142.20543632350459, 178.72000359219055, 169.68189205987017, 164.07884154716595, 157.368247238186, 150.1338998553052, 101.68622675251586, 97.98729992239262, 139.54976409002663, 132.11007058479726, 129.38670019096904, 81.30176298765427, 78.79956864439738, 120.46068577099925, 115.89121821349946, 69.65266026683005, 67.74400499627866, 108.96464873305533, 106.68878691930736, 105.03717126470607, 101.383804003634, 55.311577177785736, 54.009945975881976, 96.93781429447276, 95.29661512802106, 91.59762172509201, 89.6177255046364, 88.81176940733448, 86.97335292455702, 40.9880453161101, 40.1763204775706, 81.44845080647003, 37.836804216472785, 81.39266073808571, 35.62835000731688, 34.986345170337906, 77.02684314730617, 75.70254239450509, 74.39545951286155, 74.78731022390431, 71.34555019145299, 70.75130716380541, 70.17923732049677, 25.80715878372009, 68.09573600786067, 67.62801192167981, 68.22246345708805, 66.1414814962466, 65.1971042476327, 64.22796071070135, 63.32659780566693, 60.77399966353971, 17.763430878377882, 60.26254058280506, 16.70890734693204, 16.487587544118806, 61.18771072901626, 15.478714056191254, 59.136978757877124, 59.46681352004417, 57.13219448771106, 57.5010017443617, 12.387213499186696, 12.238858285193178, 57.049645029100475, 55.86169000844158, 10.774806830458818, 10.651662136673572, 54.45738994916623, 9.920045928884928, 53.72305785778276, 53.66791604862518, 54.201373265365326, 8.055440876493225, 7.970195716717994, 52.33970231571825, 7.341928973569553, 50.62821146087363, 51.214898661809094, 6.2333579841514295, 50.6370592335839, 5.670253889744659, 48.99168752798418, 49.609020595458176, 4.662733535137613, 4.618536011253974, 46.84186725246036, 4.137574755066988, 4.09943961190797, 50.24046008460925, 47.0128554064822, 3.1820084492283955, 3.1537233684565917, 48.14828466808242, 46.1132635070724, 2.302789529115532, 46.24265379849062, 44.74001510876767, 45.48535218624662, 1.1265667652435192, 1.1172175018143595, 45.59941651556393, 44.70191938481714, 0.3708631157290325, 45.98553091029588]
#returnedList = [(20, 3515.685027788185), (52, 3515.1186953964257), (72, 3515.1171705924685), (107, 3515.1156796836385), (61, 3515.107440639082), (65, 3514.55708620765), (23, 3514.545989857778), (74, 3514.545392382092), (118, 3514.543029083558), (57, 3514.538924027725), (59, 3514.5364138442683), (30, 3514.5337286008935), (62, 3514.533533919552), (58, 3514.523297996002), (18, 3513.995038868295), (35, 3513.9916705239516), (98, 3513.990075392268), (103, 3513.9857082634435), (47, 3513.9827010195904), (26, 3513.9794173136397), (66, 3513.9772489294187), (115, 3513.9749564502567), (10, 3513.974464247854), (46, 3513.9727092750236), (111, 3513.9701836705635), (38, 3513.969424012193), (63, 3513.9655924708754), (81, 3513.964075471841), (6, 3513.961300479315), (70, 3513.4382989837272), (5, 3513.4359182305275), (79, 3513.435495870978), (71, 3513.4284500942617), (68, 3513.42840575262), (17, 3513.4272032508657), (22, 3513.423645111113), (123, 3513.423639180569), (117, 3513.422391533596), (91, 3513.415137596916), (41, 3513.413301476978), (119, 3513.408466313163), (69, 3513.406871762053), (39, 3513.4038026896087), (89, 3513.3959673389872), (122, 3512.8928810821462), (34, 3512.8919648735596), (25, 3512.8909881567442), (49, 3512.890614707734), (9, 3512.8901025496284), (54, 3512.8889462912352), (7, 3512.88842073882), (31, 3512.887675172322), (44, 3512.887419998121), (48, 3512.8834464490806), (104, 3512.882838888236), (96, 3512.881355120446), (82, 3512.880875040026), (101, 3512.880162607415), (24, 3512.880049615604), (99, 3512.876822467695), (92, 3512.876800476995), (13, 3512.8701407657645), (60, 3512.86998139234), (86, 3512.868899156313), (8, 3512.865575920916), (77, 3512.3540658306943), (19, 3512.3505597126755), (80, 3512.348031464939), (2, 3512.346961108709), (11, 3512.3445074011906), (67, 3512.343274496222), (114, 3512.3430590948647), (85, 3512.34174179279), (45, 3512.340343386294), (40, 3512.3337644200483), (29, 3511.762078762849), (125, 3511.7590840188645), (93, 3511.74969373789), (1, 3511.7489633154332), (110, 3511.1664654635088)]
#parsed = [20, 52, 72, 107, 61, 65, 23, 74, 118, 57, 59, 30, 62, 58, 18, 35, 98, 103, 47, 26, 66, 115, 10, 46, 111, 38, 63, 81, 6, 70, 5, 79, 71, 68, 17, 22, 123, 117, 91, 41, 119, 69, 39, 89, 122, 34, 25,
#49, 9, 54, 7, 31, 44, 48, 104, 96, 82, 101, 24, 99, 92, 13, 60, 86, 8, 77, 19, 80, 2, 11, 67, 114, 85, 45, 40, 29, 125, 93, 1, 110]