busroute.py

changeset 72
65408ed066b3
parent 71
d2e19670b772
child 75
4f8a67d5d79e
--- 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:

mercurial