Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fahrzeitberechnung mit Beschleunigung und Bremsen (https://www.delphipraxis.net/160890-fahrzeitberechnung-mit-beschleunigung-und-bremsen.html)

t0by 6. Jun 2011 15:58


Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Hallo zusammen,

ich bin gerade dabei eine Berechnung aufzustellen die mir CIRCA sagt wielange, zum Beispiel ein Zug, um von A nach B zu kommen unter der Berücksichtung von Haltestellenaufenthalten.


Was NICHT implementiert ist, sind die Aspekte der Beschleunigungs- & Bremsvorgänge. (Hat dazu vielleicht jemand eine Idee das recht einfach umzusetzen?)


Folgendes ist bis dato bei rumgekommen:


Delphi-Quellcode:
{
  Berechnet die Fahrtzeit anhand der angebenen Parameter:

  Parameter

  v = ivMax          Maximal Geschwindigkeit  in km/h
  k = iDistance      Entfernung               in Kilometer
  n = iStationCount  Anzahl der Haltestellen


  Konstante

  x = CONST          Haltestellen Distanzparameter (Brems- & Beschleunigungsvorgang)
  y = CONST          Haltestellen Geschwindigkeitsvektor

  Formel:
  ((x*n)/y) + (k-(x*n))/v
}
function calculateTravelTime(ivMax, iDistance, iStationCount: Integer): Extended;
const
  STATION_SPEED    : Integer = 35;
  STATION_DISTANCE : Integer = 3;

var
  iStationDistance,
  iTotalDistance: Integer;
  fStationTime,
  fDistanceTime: Extended;
begin
  iStationDistance := (STATION_DISTANCE*iStationCount);
  iTotalDistance   := iDistance - iStationDistance;
  fStationTime     := iStationDistance / STATION_SPEED;
  fDistanceTime    := iTotalDistance / ivMax;
  Result := fStationTime + fDistanceTime;
end;
Das mit der o.g. Beschleunigung wäre Interessant, da hier bei den Werten (ivMax=280) und (STATION_SPEED=35) abprupt auf 35 km/h runtergeankert wird.

Mir ist natürlich auch klar, das nicht permanent mit 280 km/h über die Gleise geheizt wird. Diverse Streckenabschnitte werden später aber noch in die Berechnung eingefügt.


Wie stelle ich die Beschleunigungswerte und Bremsleistung am besten dar?

Motorleistung, Gewicht usw. spielen hier ja eine Rolle genau wie Gewicht und Bremsleistung pro Kilo o. Tonne?

Mit freundlichen Grüßen

Toby

sirius 6. Jun 2011 16:54

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
http://books.google.de/books?id=sptJ...remsen&f=false
(Seite 42)
gleich mit ein paar Werten für die Beschleunigung. (allerdings steht in diesen Fällen der Zug im Bahnhof.

t0by 6. Jun 2011 17:05

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Danke, das hilft mir auf jedenfall schonmal weiter!

jfheins 6. Jun 2011 17:10

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Also ich hab das mal kurz durchgerechnet:
Mit einer Maximalgeschwindigkeit von v und einer Anfahrbeschleunigung von a1 und einer Bremsbeschleunigung von a2 und einer Zeit, die in der Station verbracht wird t_station ergibt sich die Gesamtreisezeit zwischen 2 Stationen mit der Distanz d wie folgt:

t_gesamt = v/(2*a1) + v/(2*a2) + d/v + t_station

mit a1,a2,v,d > 0
Vorraussetzung ist allerdings, dass der Zug seine Maximalgeschwindigkeit auch erreicht.

t0by 6. Jun 2011 17:13

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Eben Das ist ja nicht der Fall. Da zum Beispiel diverse Streckenabschnitte auf 120, 80 oder gar 60 km/h limitiert sind.

p80286 6. Jun 2011 17:28

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
dann ersetzt man v durch die Streckenhöchstgeschwindigkeit und gut ist.

Gruß
K-H

t0by 6. Jun 2011 20:03

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo nochmal,

irgendwie hab ich den Eindruck das da was nicht passt.


Bei den Triebfahrzeugen ist nur eine Differenz von 2 Minuten!?

jfheins 6. Jun 2011 22:27

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Das Problem sind die Bedingungen der Formel: Es wird eine Höchstgeschwindigkeit erreicht. das ist auf mindestens 2 Etappen nicht der Fall.
Falls
Code:
v = sqrt(2*d/(1/a1+1/a2)) < v_max
zutrifft, dann kann der Zug nicht seine Höchstgeschwindigkeit (oder die der Strecke) erreichen, weil wer vorher schon wieder abbremsen muss.

In diesem Fall ist eine etwas komplexere Formel nötig:
Code:
t = sqrt(2*d) * (sqrt(1/(1+a2/a1)) + sqrt(1/(1+a1/a2))) + t_station
Kann man sich auch einfach herleiten, wenn man ein v-t-Diagramm aufzeichnet. Die Fläche unter der Linie entspricht der gefahrenen Strecke, die Steigung entspricht der Beschleunigung und ein bisschen Geometrie und so liefert einem die Gleichungen ;)

t0by 8. Jun 2011 09:41

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Liste der Anhänge anzeigen (Anzahl: 1)
So ich melde mich mal wieder...

Habs mal visualisiert, wie der Zug beschleunigt und bremst.

Die Formeln leiten sich durch die Werte für das jeweilge TfZ ab.

Jedoch passt wohl die Berechnung des Bremsweges nicht, da hier entweder zu früh oder eben zu spät gebremst wird.

Wo genau der Fehler ist, weiß ich nicht... hat da jemand vielleicht einen Tipp?

Eigentlich sollte der Zug so ca. 800 Meter vor dem Anbremspunkt auf 0 auf 40 km/h bremsen und dann sanft in die Haltestelle reingleiten. Macht er aber nicht.


PS: jfheins, das mit der visualisierung war eine Teufelsidee... nun soll ja auch alles seine Richtigkeit haben. :D

freak4fun 8. Jun 2011 09:52

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Hast du das dem Zug mitgeteilt?

Das bedeutet, das er auf der Strecke von 800 Metern von 40km/h auf 0km/h abbremsen soll. :D

t0by 8. Jun 2011 10:06

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Delphi-Quellcode:
if bIsBraking or ((fNextStationDistance > 0.09) and (fCurrentTrackMark > 0.8) and (fNextStationDistance < (fBrakeDistance+0.8)/1000)) then begin
Hatte es so probiert, aber hat nicht gefruchtet.

jfheins 8. Jun 2011 11:32

AW: Fahrzeitberechnung mit Beschleunigung und Bremsen
 
Zitat:

Zitat von t0by (Beitrag 1105208)
PS: jfheins, das mit der visualisierung war eine Teufelsidee... nun soll ja auch alles seine Richtigkeit haben. :D

ich meinte das eigentlich im Sinne von "Stift und Papier" aber so ist auch OK :mrgreen:

Wenn du mit 2 verschiedenen Beschleunigungen bremst, ist das ganze nochmal komplizierter, aber immer noch machbar. Probleme gibts nur, wenn sich die Maximalgeschwindigkeit (die ja auch von der Strecke kommen kann) während der fahrt ändert.

In diesem Fall hätte ich noch eine tolle Idee: vergiss den analytischen Ansatz und mach das numerisch :mrgreen: Also zu jedem Zeitpunkt x, v und a (Ort, Geschw. & Beschl.) berechnen und durch Grenzen dieser Variablen (z.B.: -3 < a < 5 oder 0 <= v <= v_max) das Verhalten des Zugs beeinflussen.
das einzig analytische ist dann eben noch der Bremspunkt: Du errechnest aus der aktuellen Geschwindigkeit den Bremsweg und vergleichst den mit der Distanz zur nächsten Haltestelle (ggf. mal einen Sicherheitsfaktor). Wenn der Bremsweg größer ist als die Distanz, dann wird die Bremsung eingeleitet.

Das "Problem" dabei ist, dass sich die Haltestellen nur schlecht modellieren lassen. Ein Ansatz wäre z.B. ein sehr kurzer Streckenabschnitt, mit sehr geringer erlaubter Geschwindigkeit. Die Länge wird genau so gewählt, dass die Zeit zum durchfahren der Strecke gleich der Haltezeit ist.

Mit dem numerischen Ansatz sind dann auch dynamische Änderungen der Streckenhöchstgeschwindigkeit kein Problem ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz