28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE
28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE
28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Aufgabe</strong> 3<br />
Stefan Hansch, Markus Wirsing, <strong>Matthias</strong> <strong>Springer</strong><br />
sehr große Strecken zurückgelegt werden. Eine Wahrscheinlichkeitsfunktion soll<br />
nun für jede beliebige Geschwindigkeit (velocity) eine Aussage darüber geben,<br />
wie wahrscheinlich es ist, dass sich Dominic mit dieser Geschwindigkeit fortbewegt.<br />
Dazu iteriert das Programm über alle GPS-Koordinaten und berechnet<br />
die Geschwindigkeit, mit der sich Dominic zum nächsten Punkt fortbewegt<br />
(Geschwindigkeit = Strecke / Zeit, Array db p segment). Eine Geschwindigkeit<br />
velocity soll genau dann als sehr wahrscheinlich angenommen werden, wenn die<br />
Funktion db p getProbability an dieser Stelle minimal ist.<br />
Definition 2 Die Funktion ist dabei mit db p getProbability(velocity) = ∑ n−1<br />
i=1 v i−<br />
velocity definiert.<br />
Mit Hilfe der Funktion db p getProbability kann also zu jeder beliebigen<br />
Geschwindigkeit velocity ausgesagt werden, wie wahrscheinlich es ist, dass sich<br />
Dominic mit dieser Geschwindigkeit fortbewegt. Dazu werden einfach die Differenzen<br />
zwischen allen Geschwindigkeiten aus der Log-Datei und der Geschwindigkeit<br />
velocity aufsummiert. Die Geschwindigkeiten aus der Log-Datei können<br />
einfach mit der Beziehung Geschwindigkeit = Strecke/Zeit berechnet werden.<br />
Dabei ist Strecke der geometrische Abstand zwischen zwei aufeinanderfolgenden<br />
GPS-Einträgen und Zeit der zeitliche Abstand zwischen den zwei<br />
GPS-Einträgen. Der Term n − 1 in Definition 2 steht für die Anzahl aller<br />
Geschwindigkeits-Daten, die der Log-Datei entnommen werden können, wenn<br />
n Einträge in der Log-Datei vorliegen.<br />
Nach einigen Experimenten, habe ich die Funktion db p getProbability so<br />
abgeändert, dass insgesamt nur Geschwindigkeitsüberschreitungen betrachtet<br />
werden, und keine Unterschreitungen. Dadurch erzielt das Programm bessere<br />
Ergebnisse. Es kann schließlich vorkommen, dass Dominic auch mal langsamer<br />
geht. Nur besonders hohe Geschwindigkeiten sind besonders unwahrscheinlich.<br />
Wenn Fehler in den GPS-Koordinaten auftreten, können diese nicht gänzlich<br />
korrigiert werden. Schließlich kann keine sichere Aussage darüber getroffen werden,<br />
wie sich Dominic wirklich bewegt hat. Es besteht lediglich die Möglichkeit,<br />
bestimmte GPS-Koordinaten als falsch zu deklarieren, wenn es sehr unwahrscheinlich<br />
ist, dass sich Dominic in einem bestimmten Zeitfenster dort hin begeben<br />
hat. Wenn der fehlerhafte Bereich erst einmal identifiziert wurde, kann er<br />
mit sinnvollen Daten ersetzt werden. Ob sich Dominic jedoch wirklich so bewegt<br />
hat, kann man nicht sagen.<br />
Abbildung 1 zeigt einen Weg, den Dominics GPS-Gerät aufgezeichnet hat.<br />
Dabei stellen die schwarzen Linien den korrekt aufgezeichneten Weg dar. Die<br />
roten Linien befinden sich ebenfalls in den GPS-Logs, sind jedoch falsch. Wenn<br />
das Programm erkannt hat, dass der fehlerhafte Bereich zwischen den Punkten<br />
E und H liegt, versucht es, die Logs zu korrigieren. Dazu wählt es die grüne Linie<br />
als Ersatz für die roten Linien. Ob sich Dominic jedoch wirklich so fortbewegt<br />
hat, oder aber so, wie die blauen Linien verlaufen, bleibt ungewiss.<br />
Um nun Fehler in den GPS-Koordinaten zu korrigieren, iteriert das Programm<br />
über alle Punkte aus der Log-Datei (äußere Schleife). Jetzt wird für<br />
jeden solchen Punkt der nächste (darauffolgende) Punkt bestimmt. Dazu iteriert<br />
das Programm über alle Punkte, die zeitlich nach dem aktuellen Punkt<br />
liegen (innere Schleife). Mit Hilfe der Funktion db p getProbability kann nun<br />
bestimmt werden, wie wahrscheinlich es ist, dass der aktuelle Punkt in der innersten<br />
Schleife der Nachfolger des aktuellen Punktes in der äußeren Schleife<br />
4