Verspätung
Moderatoren: Stellwerk-Admin, Moderatoren
Verspätung
Moin,
eine Sache, die mir letztens nochmal wieder aufgefallen ist: warum passen eigentlich nie die angekündigten Verspätungen? Die Züge kommen immer ungefähr nur mit der Hälfte der angekündigten Verspätung. Ein Zug der im Fahrplan mit +30 steht kommt also schon ungefähr nur +15.
Besonders extrem wars letztens in Soest:
RB12345 verlässt Hamm (besetzt) mit +70 und erreicht Soest mit +38 - Zeit zwischen Aus- und Einfahrt keine 5 Minuten (planmäßig ca. 20).
Etwas aufholen ist ja ok, aber soviel?
Ist das gewollt oder nen Bug?
Gruß
Philipp
eine Sache, die mir letztens nochmal wieder aufgefallen ist: warum passen eigentlich nie die angekündigten Verspätungen? Die Züge kommen immer ungefähr nur mit der Hälfte der angekündigten Verspätung. Ein Zug der im Fahrplan mit +30 steht kommt also schon ungefähr nur +15.
Besonders extrem wars letztens in Soest:
RB12345 verlässt Hamm (besetzt) mit +70 und erreicht Soest mit +38 - Zeit zwischen Aus- und Einfahrt keine 5 Minuten (planmäßig ca. 20).
Etwas aufholen ist ja ok, aber soviel?
Ist das gewollt oder nen Bug?
Gruß
Philipp
Ok, das Problem liegt wohl hier:
Diese Funktion randomTimeShift() ermittelt eine normalenverteilte Zufallszahl (oder sollte es zumindest...), deren unterer Rand der 1. Parameter und der obere der 3. ist. Der 2. ist der Mittelpunkt. Es wird also die halbe Verspätung als unterer Rand und 10 Minuten als oberer Rand genommen. Es soll nun so sein, daß ein Zug maximal 10 Minuten mehr Verspätung bekommen kann, aber die halbe Verspätung aufholen kann - vielleicht etwas viel. Aber es ist auch ein normalenverteiler Zufall, also glockenförmig. Es sollte also eher selten zu verspaetung/2 kommen.
Aber vielleicht findet jemand hier einen Denkfehler:
Aber vielleicht ist das Problem auch ein ganz anderes...
Code: Alles auswählen
randomTimeShift(-(verspaetung/2+1),0,10)
Aber vielleicht findet jemand hier einen Denkfehler:
Code: Alles auswählen
long randomTimeShift(long min,long n,long max)
{
long ret=n;
if (rnd==null)
rnd=new Random();
double v;
do
{
v=rnd.nextGaussian();
}
while (v<-1 || v>1);
if (v>0)
ret=Math.round(v*max+n);
else if (v<0)
ret=Math.round(-v*min+n);
return ret;
}
Hier würde eine Signatur stehen. Beachtet eh keiner, wozu also.
puh...Java ist nicht meine Stärke - aber rein logisch scheint mir das in Ordnung zu sein.
Versuch doch mal die Funktion testweise komplett abzuschalten - dann gibts halt kurzzeitig mal überhaupt keine Änderungen an den Verspätungen zwischen den Stellwerken.
Oder vielleicht doch - aber dann weißt du zumindest schonmal, dass es nicht an dieser Funktion liegt.
Versuch doch mal die Funktion testweise komplett abzuschalten - dann gibts halt kurzzeitig mal überhaupt keine Änderungen an den Verspätungen zwischen den Stellwerken.
Oder vielleicht doch - aber dann weißt du zumindest schonmal, dass es nicht an dieser Funktion liegt.
Ich hab nochmal drüber nachgedacht und inzwischen wundert es mich nicht, daß fast alle Züge die verspätung/2 bekommen: die Funktion wird bei jedem Durchlauf aufgerufen, also jede Sekunde - da ist die Chance, auch mal den Rand der Glocke der Normalenverteilung zu bekommen nunmal doch sehr hoch.
Hier würde eine Signatur stehen. Beachtet eh keiner, wozu also.
Also so wie es scheint gibt es jetzt nur noch extreme Situationen.
Siehe auch:
http://www.stellwerksim.de/forum/viewtopic.php?t=710
------------------------------------------
Mein Vater meint, dass der Fehler bei einer Umwandlung von Integer zu Real oder umgekehrt auftretten könnte, also falsches Format beim Aufrufen oder Abspeichern.
Siehe auch:
http://www.stellwerksim.de/forum/viewtopic.php?t=710
------------------------------------------
Mein Vater meint, dass der Fehler bei einer Umwandlung von Integer zu Real oder umgekehrt auftretten könnte, also falsches Format beim Aufrufen oder Abspeichern.