# Untitled

a guest
May 21st, 2019
62
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. #importation des modules pythons
2. import random as r
3. import tkinter as tki
4. from math import *
5. import copy
6.
7.
8. #crée des noeuds a des positions aléatoires
9. def coo (n,min):
10. res=[]
11. for i in range (n):
12. x=r.randint (100,900)
13. y=r.randint (100,900)
14. while espace (x,y,min,res):
15. x=r.randint (100,900)
16. y=r.randint (100,900)
17. # print (i)
18. res.append([x,y])
19. return (res)
20.
21.
22. #teste l'espacement entre un point et tous ceux déjà générés
23. def espace (x,y,min,res):
24. bool=False
25. for j in range (len (res)):
26. if sqrt((x-res[j][0])**2+(y-res[j][1])**2)<4*min:
27. bool=True
28. return (bool)
29.
30.
31. #infini est la somme de tous les chemins+1, aucun chemin ne peut depasser cette longueur ce qui suffit à représenter l'infini pour dijkstra
32. def infini (mat):
33. inf=0
34. for i in range (len (mat)):
35. for j in range (len (mat)):
36. inf=inf+mat[i][j]
37. return (inf)
38.
39.
40. #distance entre 2 points a et b
41. def distance (a,b):
42. return (sqrt((a[0]-b[0])**2+(a[1]-b[1])**2))
43.
44.
45. #matrice des distances
46. def distances (coos):
47. n=len (coos)
48. mat=[[0 for i in range (n)]for j in range (n)]
49. for i in range (n):
50. for j in range (n):
51. mat[i][j] = distance (coos[i],coos[j])
52. return mat
53.
54.
55. #trouve les indices de nb points les plus proches
56. def indi_min (m,nb):
57. n=len (m)
58. infi=infini (m)
59. minis=[[0 for i in range (nb)]for j in range (n)]
60. for i in range (n):
61. mini=[infi for k in range (nb)]
62. for j in range (n):
63. k=0
64. pasmin=True
65. while k<nb and pasmin:
66. if mini[k]>m[i][j]:
67. mini[k]=m[i][j]
68. minis[i][k]=j
69. pasmin=False
70. k=k+1
71. return (minis)
72.
73.
74. #crée une matrice d'adjacence a partir des coordonnées des noeuds
75. def init2 (nb,coos):
76. n=len(coos)
77. dist=distances (coos)
78. res=[[0 for i in range (n)]for j in range (n)]
79. indimin= indi_min (dist,nb)
80. for i in range (n):
81. for j in range (n):
82. for k in range (nb):
83. if indimin[i][k]== j:
84. res[i][j]=dist[i][j]
85. res[j][i]=dist[i][j]
86. return res
87.
88.
89. #affiche le graphe
90. def affichage (coos,r,nb):
91. wdw=tki.Tk ()
92. wdw.title ("test")
93. wdw.geometry ("1400x1000")
94. wdw.config(background="#8CCCFE") #bleu pale
95. wdw.maxsize (1400,1000)
96. wdw.minsize (1400,1000)
97. boite =tki.Frame (wdw,width=400,height=1000,bg="#8CCCFE")
98. canvas=tki.Canvas (wdw,width=1000,height=1000,bg="#D0EAFE") #bleu pale clair
99. n=len(coos)
100. m=init2 (nb,coos)
101. for i in range (n):
102. for j in range (1+i,n):
103. if m[i][j]>0:
104. x1=coos[i][0]
105. y1=coos[i][1]
106. x2=coos[j][0]
107. y2=coos[j][1]
108. canvas.create_line (x1,y1,x2,y2,width=2)
109. for i in range (n):
110. x=coos[i][0]
111. y=coos[i][1]
112. canvas.create_oval (x+r,y+r,x-r,y-r,fill="red")
113. #canvas.pack (fill="both",expand=tki.YES)
114. canvas.pack (side="left")
115. chemins=tki.Label(boite,text= "Générer le trafic",font=("Arial",30),bg="#8CCCFE",fg="white")
116. chemins.pack(expand=tki.YES)
117. nombr=tki.Entry(boite,font=("Arial",30),fg="#8CCCFE")
118. nombr.pack(expand=tki.YES)
119. trafftext= "générer"
120. traff=tki.Button(boite,text= trafftext,font=("Arial",30),fg="#8CCCFE",command=print(m))
121. traff.pack()
122. boite.pack (side="right",expand=tki.YES)
123. wdw.mainloop ()
124.
125.
126. #affiche un graphe àléatoire
127. def affich_rand (n,r,nb):
128. return (affichage (coo (n,r),r,nb))
129.
130.
131. #dijkstra c'est pas moi qui l'ai fait, je l'ai trouvé ici: http://www.alcandre.net/uploads/TD-dijkstra.pdf
132.
133. #trouve la première ligne du tableau de l'algorithme de dijkstra
134. def ligneInit(Graphe,depart) :
135. L = []
136. n = len(Graphe)
137. for j in range(n) :
138. poids = Graphe[depart][j]
139. if poids :
140. L.append([ poids, depart ])
141. else :
142. L.append(False)
143. return [L]
144.
145.
146. #determine le prochain sommet que doit traiter dijkstra
147. def SommetSuivant(T, S_marques) :
148. L = T[-1]
149. n = len(L)
150. min = False
151. for i in range(n) :
152. if not(i in S_marques) :
153. if L[i]:
154. if not(min) or L[i][0] < min :
155. min = L[i][0]
156. marque = i
157. return(marque)
158.
159.
160. def ajout_ligne(T,S_marques,Graphe) :
161. # Ajoute une ligne supplémentaire au tableau
162. L = T[-1]
163. n = len(L)
164. # La prochaine ligne est une copie de la précédente,
165. # dont on va modifier quelques valeurs.
166. Lnew = L.copy()
167. # sommet dont on va étudier les voisins
168. S = S_marques[-1]
169. # la longueur du (plus court) chemin associé
170. long = L[S][0]
171. for j in range(n) :
172. if j not in S_marques:
173. poids = Graphe[S][j]
174. if poids :
175. # si l’arète (S,j) est présente
176. if not(L[j]) : # L[j] = False
177. Lnew[j] = [ long + poids, S ]
178. else :
179. if long + poids < L[j][0] :
180. Lnew[j] = [ long + poids, S ]
181. T.append(Lnew)
182. # Calcul du prochain sommet marqué
183. S_marques.append(SommetSuivant(T, S_marques))
184. return T, S_marques
185.
186.
187. #calcule le tableau de l'algorithme de Dijkstra
188. def calcule_tableau(Graphe, depart) :
189. n = len(Graphe)
190. T=[[False] *n]
191. T[0][depart] = [depart, 0]
192. S_marques = [ depart ]
193. while len(S_marques) < n :
194. T, S_marques = ajout_ligne(T, S_marques, Graphe)
195. return T
196.
197.
198. #Calcul du plus court chemin entre 2 noeud
199. def plus_court_chemin(Graphe, depart, arrivee) :
200. n = len(Graphe)
201. T = calcule_tableau (Graphe,depart)
202. C = [ arrivee ]
203. while C[-1] != depart :
204. C.append( T[-1][ C[-1] ][1] )
205. C.reverse()
206. return C
207.
208.
209. #assigne au chemin une nouvelle longueur d'onde
210. def assigne_lambda (chemin,lambd):
211. for i in range (len(chemin)):
212. chemin[i][1].append(lambd)
213. return chemin
214.
215.
216. #fait une liste de k chemin dans un graphe de taille n
217. def trafic (k,n):
218. res=[]
219. for i in range (k):
220. a=0
221. b=0
222. while a==b:
223. a=r.randint(0,n-1)
224. b=r.randint(0,n-1)
225.
226. res.append([a,b])
227. return res
228.
229.
230. #découpe un chemin en parcours neud a neud sous forme de liste de couple, example abcd devient ab,bc,cd
231. def decoupe (chemin):
232. res = []
233. n=len(chemin)
234. for i in range (n-1):
235. if chemin[i]<chemin[i+1]:
236. res.append([chemin[i],chemin[i+1]])
237. else:
238. res.append([chemin[i+1],chemin[i]])
239.
240. return res
241.
242.
243. #transforme les liste de liste de liste en liste de liste
244. def flatten (l):
245. res=[]
246. n=len (l)
247. for i in range (n):
248. for j in range (len(l[i])):
249. res.append (l[i][j])
250. return (res)
251.
252.
253. #compte le nombre de longueurs d'onde qui passe dans chaque dans chaques fibres
254. def compte (l):
255. res=[]
256. n=len(l)
257. for i in range (n):
258. dejacompte =False
259. for j in range (len(res)):
260. if l[i]==res[j][1] and not dejacompte:
261. res[j][0]=res[j][0]+1
262. dejacompte=True
263. if not dejacompte:
264. res.append([1,l[i]])
265. return res
266.
267.
268. graphetest= [[0.0, 0, 0, 0, 0, 0, 0, 0, 102.39140588936164, 0, 0, 0, 0, 143.8923208513922, 0, 0, 0, 0, 0, 0],[0, 0.0, 0, 116.06894502837527, 0, 0, 0, 0, 0, 0, 0, 187.09623192357455, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0.0, 0, 110.3177229641729, 0, 0, 0, 0, 0, 0, 0, 0, 207.99278833651903, 0, 0, 0, 0, 0, 0], [0, 116.06894502837527, 0, 0.0, 0, 0, 0, 0, 0, 0, 312.8338217009152, 142.00352108310554, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 110.3177229641729, 0, 0.0, 182.21415971323415, 251.03187048659777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182.21415971323415, 0.0, 265.75364531836624, 0, 0, 0, 392.3633520093333, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 251.03187048659777, 265.75364531836624, 0.0, 0, 0, 0, 127.09838708654017, 290.5580836941213, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 357.4758733117523, 241.51397475094478, 158.90248582070703, 0, 0, 0, 0, 0, 335.5964838909967, 0], [102.39140588936164, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 139.74262055650738, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 115.52056094046635, 0, 0, 136.85028315644803, 0, 0, 0, 0], [0, 0, 0, 312.8338217009152, 0, 392.3633520093333, 127.09838708654017, 357.4758733117523, 0, 0, 0.0, 182.47739586041882, 0, 0, 0, 0, 0, 0, 0, 0], [0, 187.09623192357455, 0, 142.00352108310554, 0, 0, 290.5580836941213, 241.51397475094478, 0, 0, 182.47739586041882, 0.0, 395.08100435227203, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 158.90248582070703, 0, 115.52056094046635, 0, 395.08100435227203, 0.0, 0, 0, 0, 0, 270.2480342204176, 0, 134.6291201783626], [143.8923208513922, 0, 207.99278833651903, 0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 0, 0, 0.0, 148.92951352905172, 0, 0, 0, 161.40012391568973, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148.92951352905172, 0.0, 0, 157.20368952413298, 240.6595105122588, 135.83077707206124, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 136.85028315644803, 0, 0, 0, 0, 0, 0.0, 0, 0, 288.36088500349695, 139.84276885130672], [0, 0, 0, 0, 0, 0, 0, 0, 139.74262055650738, 0, 0, 0, 0, 0, 157.20368952413298, 0, 0.0, 0, 286.9233347080715, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270.2480342204176, 0, 240.6595105122588, 0, 0, 0.0, 211.6341182323871, 283.0282671395209], [0, 0, 0, 0, 0, 0, 0, 335.5964838909967, 0, 0, 0, 0, 0, 161.40012391568973, 135.83077707206124, 288.36088500349695, 286.9233347080715, 211.6341182323871, 0.0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134.6291201783626, 0, 0, 139.84276885130672, 0, 283.0282671395209, 0, 0.0]]
269.
270.
271. traftest =[[19, 12], [2, 4], [9, 2], [10, 8], [15, 2], [11, 0], [1, 2], [11, 2], [10, 17], [7, 5], [19, 12], [13, 8], [0, 7], [11, 12], [7, 10], [10, 11], [11, 10], [11, 9], [15, 8], [9, 1], [4, 14], [9, 12], [3, 17], [11, 7], [9, 13], [15, 13], [7, 16], [18, 19], [5, 18], [5, 11], [17, 18], [14, 4], [19, 19], [10, 15], [9, 10], [17, 3], [11, 19], [18, 9], [5, 12], [4, 13], [18, 4], [6, 15], [15, 5], [17, 14], [5, 14], [0, 9], [14, 0], [11, 17], [18, 8], [19, 11], [7, 10], [18, 5], [0, 15], [9, 5], [5, 16], [2, 8], [1, 10], [4, 7], [16, 6], [5, 13]]
272.
273.
274. #applique la methode de Barony Bayvel
275. def BaronyBayvel (graphe,limite,traf):
276. n=len (traf)
277. chemins=[]
278. g=copy.deepcopy (graphe)
279. for k in range (n):
280. chemins.append (decoupe(plus_court_chemin(g,traf[k][0],traf[k][1])))
281. densite=compte(flatten(chemins))
282. for i in range (len(densite)):
283. if densite[i][0]>=limite:
284. g[densite[i][1][0]][densite[i][1][1]]=0
285. g[densite[i][1][1]][densite[i][1][0]]=0
286. return chemins
287.
288.
289.
290. graphetest2=[[0.0, 0, 0, 0, 0, 0, 0, 0, 102.39140588936164, 0, 0, 0, 0, 143.8923208513922, 0, 0, 0, 0, 0, 0], [0, 0.0, 0, 116.06894502837527, 0, 0, 0, 0, 0, 0, 0, 187.09623192357455, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 116.06894502837527, 0, 0.0, 0, 0, 0, 0, 0, 0, 312.8338217009152, 142.00352108310554, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0.0, 182.21415971323415, 251.03187048659777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182.21415971323415, 0.0, 265.75364531836624, 0, 0, 0, 392.3633520093333, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 251.03187048659777, 265.75364531836624, 0.0, 0, 0, 0, 127.09838708654017, 290.5580836941213, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 357.4758733117523, 241.51397475094478, 158.90248582070703, 0, 0, 0, 0, 0, 335.5964838909967, 0], [102.39140588936164, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 139.74262055650738, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 115.52056094046635, 0, 0, 136.85028315644803, 0, 0, 0, 0], [0, 0, 0, 312.8338217009152, 0, 392.3633520093333, 127.09838708654017, 357.4758733117523, 0, 0, 0.0, 182.47739586041882, 0, 0, 0, 0, 0, 0, 0, 0], [0, 187.09623192357455, 0, 142.00352108310554, 0, 0, 290.5580836941213, 241.51397475094478, 0, 0, 182.47739586041882, 0.0, 395.08100435227203, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 158.90248582070703, 0, 115.52056094046635, 0, 395.08100435227203, 0.0, 0, 0, 0, 0, 270.2480342204176, 0, 134.6291201783626], [143.8923208513922, 0, 0, 0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 0, 0, 0.0, 148.92951352905172, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148.92951352905172, 0.0, 0, 157.20368952413298, 240.6595105122588, 135.83077707206124, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 136.85028315644803, 0, 0, 0, 0, 0, 0.0, 0, 0, 288.36088500349695, 139.84276885130672], [0, 0, 0, 0, 0, 0, 0, 0, 139.74262055650738, 0, 0, 0, 0, 0, 157.20368952413298, 0, 0.0, 0, 286.9233347080715, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270.2480342204176, 0, 240.6595105122588, 0, 0, 0.0, 211.6341182323871, 283.0282671395209], [0, 0, 0, 0, 0, 0, 0, 335.5964838909967, 0, 0, 0, 0, 0, 0, 135.83077707206124, 288.36088500349695, 286.9233347080715, 211.6341182323871, 0.0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134.6291201783626, 0, 0, 139.84276885130672, 0, 283.0282671395209, 0, 0.0]]
291.
292.
293.
294. resultat= [[[12, 19]], [[2, 4]], [[9, 15], [15, 18], [13, 18], [2, 13]], [[6, 10], [4, 6], [2, 4], [2, 13], [8, 13]], [[15, 18], [13, 18], [2, 13]], [[7, 11], [7, 18], [13, 18], [0, 13]], [[1, 11], [6, 11], [4, 6], [2, 4]], [[6, 11], [4, 6], [2, 4]], [[7, 10], [7, 12], [12, 17]], [[7, 10], [5, 10]], [[12, 19]], [[8, 13]], [[0, 13], [13, 18], [7, 18]], [[11, 12]], [[7, 10]], [[10, 11]], [[10, 11]], [[11, 12], [9, 12]], [[15, 18], [13, 18], [8, 13]], [[9, 12], [11, 12], [1, 11]], [[2, 4], [2, 13], [13, 14]], [[9, 12]], [[3, 11], [11, 12], [12, 17]], [[7, 11]], [[9, 15], [15, 18], [13, 18]], [[15, 18], [13, 18]], [[7, 18], [16, 18]], [[15, 18], [15, 19]], [[4, 5], [2, 4], [2, 13], [13, 18]], [[5, 6], [6, 11]], [[17, 18]], [[13, 14], [2, 13], [2, 4]], [], [[7, 10], [7, 12], [9, 12], [9, 15]], [[9, 12], [7, 12], [7, 10]], [[12, 17], [11, 12], [3, 11]], [[11, 12], [12, 19]], [[15, 18], [9, 15]], [[5, 10], [7, 10], [7, 12]], [[2, 4], [2, 13]], [[13, 18], [2, 13], [2, 4]], [[6, 10], [7, 10], [7, 12], [9, 12], [9, 15]], [[15, 18], [13, 18], [2, 13], [2, 4], [4, 5]], [[14, 17]], [[4, 5], [2, 4], [2, 13], [13, 14]], [[0, 13], [13, 18], [15, 18], [9, 15]], [[13, 14], [0, 13]], [[11, 12], [12, 17]], [[13, 18], [8, 13]], [[12, 19], [11, 12]], [[7, 10]], [[13, 18], [2, 13], [2, 4], [4, 5]], [[0, 13], [13, 18], [15, 18]], [[9, 12], [7, 12], [7, 10], [5, 10]], [[4, 5], [2, 4], [2, 13], [8, 13], [8, 16]], [[2, 13], [8, 13]], [[1, 11], [10, 11]], [[4, 6], [6, 10], [7, 10]], [[8, 16], [8, 13], [2, 13], [2, 4], [4, 6]], [[4, 5], [2, 4], [2, 13]]]
295.
296.
297.
298.
299.
300.
301.
302. #initialise l'assignement de longeur d'onde
303. def InitAssigneLO (l):
304. l=flatten(l)
305. res=[]
306. n=len(l)
307. for i in range (n):
308. dejacompte =False
309. for j in range (len(res)):
310. if l[i]==res[j][1] and not dejacompte:
311. dejacompte=True
312. if not dejacompte:
313. res.append([[],l[i]])
314. return res
315.
316.
317. #verifie si un élément est dans une liste
318. def estdedans (l,e):
319. n=len (l)
320. bool=False
321. for i in range (n):
322. if l[i]==e:
323. bool=True
324. return bool
325.
326.
327. #trouve la position d'un élement dans une liste
328. def indice (l,e):
329. for k in range (len (l)):
330. if l[k]==e:
331. return k
332.
333.
334. #fonction qui simplifi une liste pour facilité l'assignement de longueurs d'onde
335. def simplifi (l,i):
336. res=[]
337. for k in range (len(l)):
338. res.append(l[k][i])
339. return res
340.
341.
342. #algorithme d'assignement de longueurs d'ondes
343. def AssigneLO (l):
344. res=[]
345. dejaassigne=InitAssigneLO (l)
346. indices=simplifi (dejaassigne,1)
347. n=len (l)
348. for i in range (n):
349. m=len(l[i])
350. lambd=0
351. k=0
352. while k<m:
353. if estdedans(dejaassigne[indice(indices,l[i][k])][0],lambd):
354. lambd=lambd+1
355. k=0
356. else :
357. k=k+1
358. for j in range (m):
359. dejaassigne[indice(indices,l[i][j])][0].append(lambd)
360. res.append([lambd,l[i]])
361. return res
362.
363.
364.
365. #nombres de longueurs d'onde utilisées
366. def nombreLO (l):
367. aux=[]
368. n=len(l)
369. for i in range (n):
370. if not estdedans (aux,l[i]):
371. aux.append(l[i])
372. res=len(aux)
373. return (res)
374.
375.
376.
377.
378.
379.
380. graphetipe=[[0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135.79396157414365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154.20765220960988, 0, 0, 0, 0, 0, 0], [0, 0.0, 0, 0, 134.3726162579266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141.98943622678414, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152.27934856703322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185.64751546950473, 0, 0, 0, 0], [0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218.00917411888886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129.9576854210631], [0, 134.3726162579266, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201.1889659002203, 0, 0, 0, 0, 0, 0, 146.102703602637, 0], [0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130.36103712382777, 0, 141.12760183606892, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 121.8031198286809, 0, 0, 0, 0, 0, 0, 186.59314028120113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 147.00340132119393, 0, 0, 0, 0, 0, 121.10326172320876, 0, 0, 0, 0, 0, 0, 0, 146.23952953972466, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 148.32734070291963, 0, 0, 0, 0, 168.4339633209407, 0, 0, 0, 0, 263.5773131360133, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151.38031576133008, 0, 162.8158468945821, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140.80127840328723, 223.0807028857494, 0], [0, 0, 0, 0, 0, 0, 121.8031198286809, 147.00340132119393, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 167.7647161950331, 0, 0, 0, 0, 0, 221.0701246211256, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 244.78970566590417, 0, 140.1606221447379, 0, 0, 0, 0, 0, 0, 187.13097017864254, 0, 0, 0], [135.79396157414365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 125.80143083447024, 0, 0, 0, 0, 0, 193.8762491900439, 0, 0, 314.6966793596653, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 123.0690862889621, 0, 0, 0, 0, 0, 172.18594600024707, 0, 0, 0, 0, 0, 0], [0, 0, 152.27934856703322, 0, 0, 0, 0, 0, 148.32734070291963, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 138.03260484392808, 0, 0, 0, 0, 305.00491799313664, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133.3641631023867, 0, 241.3503677229434], [0, 0, 0, 0, 0, 0, 0, 121.10326172320876, 0, 0, 0, 0, 244.78970566590417, 125.80143083447024, 123.0690862889621, 0, 0, 0.0, 0, 0, 0, 0, 0, 269.462427807663, 0, 0, 0, 0, 0, 0], [0, 0, 0, 218.00917411888886, 0, 0, 186.59314028120113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 181.4717608885746, 0, 0, 0, 0, 219.65882636488797, 0, 0, 196.4001018329675, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167.7647161950331, 140.1606221447379, 0, 0, 0, 0, 0, 181.4717608885746, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 278.4690287985362, 0], [0, 0, 0, 0, 0, 0, 0, 0, 168.4339633209407, 0, 0, 0, 0, 0, 0, 138.03260484392808, 0, 0, 0, 0, 0.0, 0, 171.71196813268432, 0, 288.1700886629284, 0, 0, 0, 0, 0], [0, 141.98943622678414, 0, 0, 201.1889659002203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 317.9701243827791, 0], [0, 0, 0, 0, 0, 130.36103712382777, 0, 0, 0, 151.38031576133008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171.71196813268432, 0, 0.0, 0, 131.24404748406687, 0, 0, 0, 0, 0], [154.20765220960988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193.8762491900439, 172.18594600024707, 0, 0, 269.462427807663, 0, 0, 0, 0, 0, 0.0, 0, 0, 143.42245291445826, 0, 0, 0], [0, 0, 0, 0, 0, 141.12760183606892, 0, 0, 0, 162.8158468945821, 0, 0, 0, 0, 0, 0, 0, 0, 219.65882636488797, 0, 288.1700886629284, 0, 131.24404748406687, 0, 0.0, 0, 0, 0, 0, 143.8923208513922], [0, 0, 185.64751546950473, 0, 0, 0, 0, 146.23952953972466, 263.5773131360133, 0, 0, 221.0701246211256, 0, 0, 0, 305.00491799313664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187.13097017864254, 314.6966793596653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143.42245291445826, 0, 0, 0.0, 0, 153.3101431738944, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140.80127840328723, 0, 0, 0, 0, 0, 133.3641631023867, 0, 196.4001018329675, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0], [0, 0, 0, 0, 146.102703602637, 0, 0, 0, 0, 0, 223.0807028857494, 0, 0, 0, 0, 0, 0, 0, 0, 278.4690287985362, 0, 317.9701243827791, 0, 0, 0, 0, 153.3101431738944, 0, 0.0, 0], [0, 0, 0, 129.9576854210631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241.3503677229434, 0, 0, 0, 0, 0, 0, 0, 143.8923208513922, 0, 0, 0, 0, 0.0]]
381.
382. trafictipe=[[12, 6], [19, 22], [18, 9], [16, 2], [4, 27], [13, 5], [19, 8], [10, 28], [13, 17], [25, 4], [26, 28], [16, 11], [13, 23], [27, 8], [6, 7], [13, 22], [17, 23], [23, 25], [3, 19], [19, 16], [18, 4], [10, 11], [11, 19], [5, 18], [22, 13], [18, 22], [16, 24], [0, 16], [10, 21], [14, 6], [28, 1], [19, 12], [13, 14], [17, 12], [20, 3], [27, 22], [24, 27], [13, 26], [0, 5], [25, 14], [13, 26], [7, 10], [9, 27], [22, 21], [29, 27], [2, 7], [6, 7], [28, 4], [28, 5], [13, 4], [9, 18], [25, 5], [17, 9], [1, 13], [3, 17], [27, 25], [6, 23], [19, 20], [19, 25], [1, 11], [3, 0], [17, 20], [21, 11], [2, 7], [26, 18], [25, 12], [14, 11], [1, 13], [22, 11], [0, 10], [3, 7], [18, 15], [22, 7], [15, 26], [16, 25], [17, 29], [21, 16], [12, 17], [8, 11], [26, 17], [1, 29], [9, 12], [18, 0], [4, 15], [21, 10], [21, 2], [2, 23], [2, 13], [0, 24], [21, 13], [5, 17], [16, 6], [6, 7], [3, 23], [18, 21], [19, 4], [5, 9], [4, 24], [16, 11], [10, 19]]
383.
384.
385.
386. resultattipe=[[[12, 19], [11, 19], [6, 11]], [[18, 19], [18, 24], [22, 24]], [[18, 24], [9, 24]], [[16, 29], [24, 29], [20, 24], [15, 20], [2, 15]], [[4, 28], [10, 28], [10, 27]], [[13, 17], [12, 17], [12, 19], [18, 19], [18, 24], [5, 24]], [[11, 19], [11, 25], [8, 25]], [[10, 28]], [[13, 17]], [[11, 25], [11, 19], [19, 28], [4, 28]], [[26, 28]], [[16, 27], [18, 27], [6, 18], [6, 11]], [[13, 23]], [[18, 27], [18, 24], [20, 24], [8, 20]], [[6, 11], [7, 11]], [[13, 17], [7, 17], [7, 25], [8, 25], [8, 20], [20, 22]], [[17, 23]], [[17, 23], [7, 17], [7, 25]], [[3, 18], [18, 19]], [[18, 19], [18, 27], [16, 27]], [[18, 19], [19, 28], [4, 28]], [[10, 27], [18, 27], [6, 18], [6, 11]], [[11, 19]], [[5, 24], [18, 24]], [[20, 22], [8, 20], [8, 25], [7, 25], [7, 17], [13, 17]], [[18, 24], [22, 24]], [[16, 29], [24, 29]], [[0, 23], [23, 26], [26, 28], [10, 28], [10, 27], [16, 27]], [[10, 28], [21, 28]], [[14, 17], [7, 17], [7, 11], [6, 11]], [[4, 28], [1, 4]], [[12, 19]], [[13, 17], [14, 17]], [[12, 17]], [[20, 24], [24, 29], [3, 29]], [[18, 27], [18, 24], [22, 24]], [[18, 24], [18, 27]], [[13, 26]], [[0, 23], [23, 26], [12, 26], [12, 19], [18, 19], [18, 24], [5, 24]], [[7, 25], [7, 17], [14, 17]], [[13, 26]], [[7, 11], [6, 11], [6, 18], [18, 27], [10, 27]], [[9, 24], [18, 24], [18, 27]], [[22, 24], [18, 24], [18, 19], [19, 28], [21, 28]], [[16, 29], [16, 27]], [[2, 25], [7, 25]], [[6, 11], [7, 11]], [[4, 28]], [[19, 28], [18, 19], [18, 24], [5, 24]], [[13, 26], [26, 28], [4, 28]], [[9, 24], [18, 24]], [[8, 25], [8, 20], [20, 22], [5, 22]], [[12, 17], [12, 19], [18, 19], [18, 24], [9, 24]], [[1, 4], [4, 28], [26, 28], [13, 26]], [[3, 18], [18, 19], [12, 19], [12, 17]], [[18, 27], [6, 18], [6, 11], [11, 25]], [[6, 11], [7, 11], [7, 17], [17, 23]], [[11, 19], [11, 25], [8, 25], [8, 20]], [[11, 19], [11, 25]], [[1, 4], [4, 28], [19, 28], [11, 19]], [[3, 18], [18, 19], [12, 19], [12, 26], [23, 26], [0, 23]], [[7, 17], [7, 25], [8, 25], [8, 20]], [[21, 28], [19, 28], [11, 19]], [[2, 25], [7, 25]], [[12, 26], [12, 19], [18, 19]], [[7, 25], [7, 17], [12, 17]], [[14, 17], [7, 17], [7, 11]], [[1, 4], [4, 28], [26, 28], [13, 26]], [[20, 22], [8, 20], [8, 25], [11, 25]], [[0, 23], [23, 26], [26, 28], [10, 28]], [[3, 18], [6, 18], [6, 11], [7, 11]], [[6, 18], [6, 11], [11, 25], [15, 25]], [[20, 22], [8, 20], [8, 25], [7, 25]], [[15, 25], [7, 25], [7, 17], [17, 23], [23, 26]], [[16, 27], [18, 27], [6, 18], [6, 11], [11, 25]], [[12, 17], [12, 19], [18, 19], [3, 18], [3, 29]], [[21, 28], [10, 28], [10, 27], [16, 27]], [[12, 17]], [[8, 25], [11, 25]], [[23, 26], [17, 23]], [[1, 4], [4, 28], [10, 28], [10, 27], [16, 27], [16, 29]], [[9, 24], [24, 29], [3, 29], [3, 18], [18, 19], [12, 19]], [[6, 18], [6, 11], [7, 11], [7, 17], [13, 17], [0, 13]], [[4, 28], [19, 28], [11, 19], [11, 25], [15, 25]], [[21, 28], [10, 28]], [[21, 28], [19, 28], [11, 19], [11, 25], [2, 25]], [[2, 25], [7, 25], [7, 17], [17, 23]], [[2, 25], [7, 25], [7, 17], [13, 17]], [[0, 13], [13, 17], [7, 17], [7, 25], [8, 25], [8, 20], [20, 24]], [[21, 28], [26, 28], [13, 26]], [[5, 24], [24, 29], [3, 29], [3, 18], [6, 18], [6, 11], [11, 19], [12, 19], [12, 17]], [[16, 27], [18, 27], [6, 18]], [[6, 18], [18, 27], [10, 27], [10, 28], [19, 28], [11, 19], [7, 11]], [[3, 18], [18, 27], [10, 27], [10, 28], [26, 28], [23, 26]], [[18, 27], [10, 27], [10, 28], [21, 28]], [[19, 28], [4, 28]], [[5, 22], [9, 22]], [[4, 28], [10, 28], [10, 27], [16, 27], [16, 29], [24, 29]], [[16, 27], [10, 27], [10, 28], [19, 28], [11, 19]], [[10, 28], [19, 28]]]
RAW Paste Data