busroute.py

changeset 68
382dd85b83a2
parent 60
aab788e8a725
child 71
d2e19670b772
equal deleted inserted replaced
67:336c750b7b5d 68:382dd85b83a2
43 def simplify_name(name): 43 def simplify_name(name):
44 name = replacements.get(name, name) 44 name = replacements.get(name, name)
45 name = abbreviations.get(name, name) 45 name = abbreviations.get(name, name)
46 return name 46 return name
47 47
48 def reduce_schedule(reitti, trip_length, whole = False): 48 def reduce_schedule(reitti, trip_length, whole = False, long = False):
49 length = ((trip_length / 600) * 3 + len(reitti) * 2) / 5 49 length = ((trip_length / 600) * 3 + len(reitti) * 2) / 5
50 if not reitti: 50 if not reitti:
51 return '' 51 return ''
52 have_already = set() 52 have_already = set()
53 i = 0 53 i = 0
60 have_already.add(reitti[i]) 60 have_already.add(reitti[i])
61 i += 1 61 i += 1
62 priorities = { 62 priorities = {
63 'ihala': 150, 63 'ihala': 150,
64 'kauppakeskus mylly': 200, 64 'kauppakeskus mylly': 200,
65 'kuninkoja': 80, 65 'kuninkoja': 150,
66 'moikoinen': 80, 66 'moikoinen': 80,
67 'raision keskusta': 150, 67 'raision keskusta': 150,
68 'kukola': 50, 68 'kukola': 50,
69 'kaistarniemi': 50, 69 'kaistarniemi': 50,
70 'papinsaari': 50, 70 'papinsaari': 80,
71 'oriniemi': 50, 71 'oriniemi': 50,
72 'pikisaari': 50, 72 'pikisaari': 50,
73 'häppilä': 20, 73 'häppilä': 20,
74 'haarla': 80, 74 'haarla': 80,
75 'ylioppilaskylä': 50, 75 'ylioppilaskylä': 50,
76 'halinen': 70, 76 'halinen': 70,
77 'kakskerta': 200, 77 'kakskerta': 200,
78 'pansio': 50, 78 'pansio': 50,
79 'räntämäki': 10, 79 'räntämäki': 25,
80 'verkahovi': 20, 80 'verkahovi': 25,
81 'skanssi': 200, 81 'skanssi': 200,
82 'vaala': 20, 82 'vaala': 20,
83 'varissuo': 60, 83 'varissuo': 60,
84 'kohmo': 80, 84 'kohmo': 80,
85 'kupittaa': 70, 85 'kupittaa': 70,
108 'saramäki': 50, 108 'saramäki': 50,
109 'tarvasjoki': 100, 109 'tarvasjoki': 100,
110 'marttila': 100, 110 'marttila': 100,
111 'koski tl': 100, 111 'koski tl': 100,
112 'katariina': 50, 112 'katariina': 50,
113 'länsikeskus': 50, 113 'länsikeskus': 30,
114 'kaanaa': 100, 114 'kaanaa': 100,
115 'satava': 50, 115 'satava': 50,
116 'suikkila': 50, 116 'suikkila': 50,
117 'raunistula': 50, 117 'raunistula': 50,
118 'räntämäki': 50, 118 'räntämäki': 50,
119 'moisio': 25, 119 'moisio': 25,
120 'pääskyvuori': 100, 120 'pääskyvuori': 100,
121 #'rautatieasema': 50,
122 'logomo': 100, 121 'logomo': 100,
123 'rymättylä': 50, 122 'rymättylä': 50,
124 "sauvo": 500, 123 "sauvo": 500,
125 "kemiönsaari": 500, 124 "kemiönsaari": 500,
126 'suovuori': 300, 125 'suovuori': 300,
130 'aura': 100, 129 'aura': 100,
131 'friskala': -1, 130 'friskala': -1,
132 'merimasku': 50, 131 'merimasku': 50,
133 'turkuhalli': 100, 132 'turkuhalli': 100,
134 'messukeskus': 100, 133 'messukeskus': 100,
135 'naantalin pikatie': 150, 134 'naantalin pikatie': 25,
136 'helsingin valtatie': 500, 135 'helsingin valtatie': 25,
136 'lauste': 25,
137 'pompo': 25,
138 'loukinainen': 25,
139 'tuorla': 25,
140 'satakunnantie': 25,
141 'hepokulta': 25,
142 'nättinummi': 25,
143 'nummenmäki': 25,
144 'kurala': 25,
145 'itäharju': 25,
146 'vasaramäki': 25,
147 'pohjola': 25,
148 'iso-heikkilä': 25,
149 'patterinhaka': 25,
150 'illoinen': 50,
151 'luolavuori': 25,
152 'mäntymäki': 25,
153 'kurjenmäki': 25,
154 'kuusisto': 25,
155 'rautatieasema': 25,
156 'majakkaranta': 25,
157 'itäranta': 25,
158 'martti': 25,
159 'vähä-heikkilä': 25,
160 'särkilahti': 25,
161 'urusvuori': 25,
162 'port arthur': 25,
137 } 163 }
138 164
139 if 'kauppatori' not in reitti: 165 if 'kauppatori' not in reitti:
140 priorities['länsikeskus'] = priorities['skanssi'] = priorities['kauppatori'] 166 priorities['länsikeskus'] = priorities['skanssi'] = priorities['kauppatori']
141 167
162 weights = sorted([ 188 weights = sorted([
163 (stop, reitti_arvot[stop], i) \ 189 (stop, reitti_arvot[stop], i) \
164 for i, stop in enumerate(reitti) \ 190 for i, stop in enumerate(reitti) \
165 if reitti_arvot[stop] >= 1 191 if reitti_arvot[stop] >= 1
166 ], key = lambda stop: -stop[1]) 192 ], key = lambda stop: -stop[1])
167 # enintään neljä tulee kylttiin 193 if long:
168 weights = weights[:3] 194 weights = weights[:4]
169 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois 195 else:
170 try: 196 # enintään neljä tulee kylttiin
171 if weights[2][0] != destination and weights[2][1] < (725 / length ** 0.8): 197 weights = weights[:3]
172 del weights[2] 198 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois
173 except IndexError: 199 try:
174 pass 200 if weights[2][0] != destination and weights[2][1] < (725 / length ** 0.8):
175 try: 201 del weights[2]
176 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15): 202 except IndexError:
177 del weights[1] 203 pass
178 except IndexError: 204 try:
179 pass 205 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15):
206 del weights[1]
207 except IndexError:
208 pass
180 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin 209 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin
181 weights = sorted(weights, key = lambda weight_data: weight_data[2]) 210 weights = sorted(weights, key = lambda weight_data: weight_data[2])
182 # muodostetaan sign.. 211 # muodostetaan sign..
183 sign = [paino[0] for paino in weights] 212 sign = [paino[0] for paino in weights]
184 to_place = sign[-1] 213 to_place = sign[-1]

mercurial