diff -r d2e19670b772 -r 65408ed066b3 busroute.py --- a/busroute.py Thu Oct 26 16:54:29 2017 +0300 +++ b/busroute.py Thu Oct 26 18:02:27 2017 +0300 @@ -2,172 +2,46 @@ from configparser import ConfigParser from math import inf - -replacements = { - "ylioppilaskylä-itä": "ylioppilaskylä", - "ylioppilaskylä-länsi": "ylioppilaskylä", - "jokila": "lieto", - "piispala": "lieto", - 'saaro': 'ruissalo', - 'silvola': 'vahto', - 'hemmola': 'vahto', - 'paasniittu': 'rusko', - 'kahari': 'rusko', - 'kemiö': 'kemiönsaari', - 'kasnäs': 'kemiönsaari', - 'pernon telakka': 'perno', - 'paimion sairaala': 'paimio', - 'hanhijoki': 'paimio', -} - +from misc import profile region_info = ConfigParser() region_info.read('regions.ini') -municipalities = set(region_info.sections()) -municipalities_per_region = {} - -for municipality in municipalities: - for region in region_info[municipality].keys(): - municipalities_per_region[region] = municipality - -for place_from, place_to in replacements.items(): - municipalities_per_region[place_to] = municipalities_per_region[place_from] def simplify_name(name): - name = replacements.get(name, name) + name = profile['replacements'].get(name, name) return name def reduce_schedule(route, trip_length, whole = False, long = False): + priorities = profile['priorities'] length = ((trip_length / 600) * 3 + len(route) * 2) / 5 if not route: return '' have_already = set() i = 0 while i < len(route): - if route[i] in replacements: - route[i] = replacements[route[i]] + if route[i] in profile['replacements']: + route[i] = profile['replacements'][route[i]] if route[i] in have_already: del route[i] else: have_already.add(route[i]) i += 1 - priorities = { - 'ihala': 150, - 'mylly': 200, - 'kuninkoja': 150, - 'moikoinen': 100, - 'raisio': 150, - 'kukola': 50, - 'kaistarniemi': 75, - 'papinsaari': 80, - 'oriniemi': 50, - 'pikisaari': 50, - 'häppilä': 20, - 'haarla': 80, - 'ylioppilaskylä': 50, - 'halinen': 70, - 'kakskerta': 200, - 'pansio': 50, - 'räntämäki': 25, - 'verkahovi': 25, - 'skanssi': 200, - 'vaala': 20, - 'varissuo': 60, - 'kohmo': 80, - 'kupittaa': 70, - 'kupittaa as': 120, - 'kauppatori': inf, - 'lentoasema': 50, - 'runosmäki': 50, - 'lieto': 100, - 'lieto as': 200, - 'ilmarinen': 50, - 'vahto': 50, - 'rusko': 200, - 'oriketo': 50, - 'harittu': 40, - 'jäkärlä': 150, - 'moisio': 150, - 'paattinen': 25, - 'kaarina': 200, - 'naantali': 200, - 'uittamo': 50, - 'piikkiö': 100, - 'paimio': 100, - 'pargas': 100, - 'nagu': 100, - 'yli-maaria': 60, - 'saramäki': 50, - 'tarvasjoki': 100, - 'marttila': 100, - 'koski tl': 100, - 'katariina': 50, - 'länsikeskus': 30, - 'kaanaa': 100, - 'satava': 50, - 'suikkila': 50, - 'raunistula': 50, - 'räntämäki': 50, - 'pääskyvuori': 100, - 'logomo': 100, - 'rymättylä': 50, - "sauvo": 500, - "kemiönsaari": 500, - 'suovuori': 300, - 'eerikvalla': 50, - 'petäsmäki': 50, - 'tortinmäki': 50, - 'aura': 100, - 'friskala': -1, - 'merimasku': 50, - 'turkuhalli': 100, - 'messukeskus': 100, - 'naantalin pikatie': 25, - 'helsingin valtatie': 25, - 'lauste': 25, - 'pompo': 25, - 'loukinainen': 25, - 'tuorla': 25, - 'satakunnantie': 25, - 'hepokulta': 25, - 'nättinummi': 25, - 'nummenmäki': 10, - 'kurala': 10, - 'itäharju': 25, - 'vasaramäki': 25, - 'pohjola': 25, - 'iso-heikkilä': 25, - 'patterinhaka': 25, - 'illoinen': 50, - 'luolavuori': 25, - 'mäntymäki': 25, - 'kurjenmäki': 25, - 'kuusisto': 25, - 'rautatieasema': 25, - 'majakkaranta': 25, - 'itäranta': 25, - 'martti': 25, - 'vähä-heikkilä': 25, - 'särkilahti': 25, - 'urusvuori': 25, - 'port arthur': 25, - } - if 'kauppatori' not in route: - priorities['länsikeskus'] = priorities['skanssi'] = priorities['kauppatori'] +# if 'kauppatori' not in route: +# priorities['länsikeskus'] = priorities['skanssi'] = priorities['kauppatori'] from_place = route[0] destination = route[-1] reitti_arvot = {} f = lambda i: i**-0.3 factor = 1 / max(f(i + 1) for i in range(len(route))) - while priorities.get(route[-1], 0) < 0: + while float(priorities.get(route[-1], 0)) < 0: del route[-1] destination = route[-1] for i, stop in enumerate(route): # muunna indeksi siten että myöhemmät alueet korostuvat i = f(i + 1) * factor # ota prioriteetti huomioon, jotkin alueet ovat tärkeämpiä kyltissä kuin toiset - i *= priorities.get(stop, 1) + i *= float(priorities.get(stop, 1)) reitti_arvot[stop] = i # nollaa lähtöpaikan arvo ettei se mitenkään tule kylttiin if from_place in reitti_arvot: @@ -201,18 +75,6 @@ # muodostetaan sign.. sign = [paino[0] for paino in weights] to_place = sign[-1] - #nearby_municipalities = {'Turku', 'Raisio', 'Naantali', 'Kaarina', 'Lieto'} - #if from_place != to_place: - # municipality_from = municipalities_per_region.get(from_place) - # municipality_to = municipalities_per_region.get(to_place) - # if municipality_from and municipality_to and municipality_from not in nearby_municipalities | {municipality_to} and municipality_to not in nearby_municipalities: - # def convert_region(region): - # municipality = municipalities_per_region.get(region, region) - # if municipality != municipality_from: - # return municipality - # else: - # return region - # sign = [convert_region(region) for region in sign] old_sign = sign.copy() sign = [] for place in old_sign: