Alle Züge sind in einer Textdatei gespeichert, die wie folgt aufgebaut ist:
150, 0, 060, 340,-1, 01008, 0, 0.14, 0.3, 0.1
200, 0, 120, 340,-1, 00119, 0, 0.14, 0.3, 0.1
40, 5, 400, 340,-1, 04321, 0, 0.14, 0.2, 0.1
x
Eine Zeile steht für einen Zug, dessen Eigenschaften in folgender Codierung aufgelistet sind (durch Kommata getrennt):
- Maximalgeschwindigkeit
- Istgeschwindigkeit
- Personen an Bord
- Planmäßige Ankunftzeit
- tatsächliche Ankunftszeit (-1, wenn noch nicht angekommen)
- Zugnummer zur Identifikation
- Ort auf der Strecke
- Prozentsatz der auf Kategorie 1 umsteigen wird
- Prozentsatz der auf Kategorie 2 umsteigen wird
- Prozentsatz der auf Kategorie 3 umsteigen wird
Diese Datei wird zeilenweise Ausgelesen und jede Zeile einem Listenelement zugewiesen, welches aus einer Zeile ein Wörterbuch macht, das dann ausgelesen werden kann:
def reader(datei):
text = open(datei, "r") # Datei wird geoeffnet
ausgabe = []
while 1==1: #Endlosschleife zum Abarbeiten der Date
zeile = text.readline() # Datei wird nun Zeile fuer Zeile eingelesen
zeile = zeile.strip('\n') # Ein Zeilenumbruchzeichen am Ende wird entfernt
if zeile[0] == "x":
break
else:
zug=list(zeile.split(',')) # Die Zeile wird in eine Liste transformiert
zug=[z.strip() for z in zug]
#Diese List wird nun in ein Woerterbuch eingelesen:
wbzug = {"vavg" : int(zug[0]), "vist" : int(zug[1]), "besetzung" : int(zug[2]), "ankunftplan" : int(zug[3]), "ankunft" : int(zug[4]), "nummer" : int(zug[5]), "ort" : int(zug[6]), "auf1" : float(zug[7]), "auf2" : float(zug[8]), "auf3" : float(zug[9])}
ausgabe.append(wbzug) # Die Woerterbuecher werden als "Anfangsreihenfolge" aufgelistet
text.close()
return ausgabe # Diese Liste wird zurueckgeliefert, die Datei ist eingelesen.
Eine eingelesene Zugliste, wie sie den Simulations- und Auswertungsprogrammen übergeben wird, sieht dann wie folgt aus (sehr klobig). Die Einzelnen Züge sind in Wörterbüchern, die wiederum sind in einer Liste geordnet (die "Reihenfolge").
Hier die eingelesene Liste aus dem Beispiel oben (etwas irritierend sortiert, da Wörterbücher ja keine Reihenfolge besitzen):
[{'ankunft': -1, 'nummer': 1008, 'besetzung': 60, 'vist': 0, 'auf1': 0.14, 'ort': 0, 'auf3': 0.1, 'auf2': 0.3, 'ankunftplan': 340, 'vavg': 150},
{'ankunft': -1, 'nummer': 119, 'besetzung': 120, 'vist': 0, 'auf1': 0.14, 'ort': 0, 'auf3': 0.1, 'auf2': 0.3, 'ankunftplan': 340, 'vavg': 200},
{'ankunft': -1, 'nummer': 4321, 'besetzung': 400, 'vist': 5, 'auf1': 0.14, 'ort': 0, 'auf3': 0.1, 'auf2': 0.2, 'ankunftplan': 340, 'vavg': 40}]