Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1516:logistische_probleme:einleseprogramm

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):

  1. Maximalgeschwindigkeit
  2. Istgeschwindigkeit
  3. Personen an Bord
  4. Planmäßige Ankunftzeit
  5. tatsächliche Ankunftszeit (-1, wenn noch nicht angekommen)
  6. Zugnummer zur Identifikation
  7. Ort auf der Strecke
  8. Prozentsatz der auf Kategorie 1 umsteigen wird
  9. Prozentsatz der auf Kategorie 2 umsteigen wird
  10. 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}]
ws1516/logistische_probleme/einleseprogramm.txt · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)