Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Geschwindigkeiten/KI
#21
@Carsten

Genau so wie beschrieben ist es tatsächlich. kW = Leistung*Gear (wobei maximum gear 2.55). Ich hatte noch was vergessen: f hängt von der Strecke ab: f_Kurve = 8f_flach, f_Steigung = 64f_flach, f_abwärts=-32f_fach.

Da noch die Zeit für den jeweiligen Zeitschritt eingearbeitet werden muss, ist f=65536e1-5 für dt=1. Das wird aber korrigiert, in der Hoffnung, dass die Zeitschritte nicht zu lang werden. (Aber bis 15fache Beschleunigung und simloops 0-1 geht es gut; andere Sachen gehen vorher nicht mehr.)

@marcD

Wenn du einen guten Vorschlag für lineare Terme hast, probiere ich ihn gerne aus. Aber bisher hat der quadratische Ansatz einfach die besseren Resultate erzeugt.

Ciao, Markus
Zitieren
#22
OK, ich hab nochmal ein bischen nachgedacht und festgestellt, das meine Formel physikalisch auch nicht korrekt ist.

Wie komplex darf die Berechnung überhaupt werden bzw. wie zeitkritisch ist die Berechnung?

Die physikalisch korrekte Berechnungsweise währe sehr realistisch, aber leider ist das auch kompliziert.

Erklärung (hoffentlich diesmal richtig):

1. Berechnugn der Zugkraft:

Die Zugkraft ist Leistung duch Geschwindeigkeit, nimmt also gemäß 1/x mit steigender Geschwindigkeit ab. Damit wäre die Zugkraft im Anfahrmoment unendlich, was natürlich Unsinn ist, die maxmale Zugkraft ist gegeben durch die Anpresskraft der Triebachse (also m*g), multipliziert mit dem Haftreibkoeffizienten (bei Stahl etwa 0,3, glaube ich zumindest).

Die Brenskaft berechnet sich Aus:
Rollreibung der Räder (masse des gesamten Zuges * Rollreibkoeffizienten)
+ Luftwiderstand (geht quadratisch mit der Geschwindogkeit)
+ Masse des Zugteils am hang * Steigung
= Gesamtbremskraft

Die Restliche Kraft bleibt für die Beschleunigung.

Die Kurvengeschwindigkeit hängt nicht von der Motorleistung, sondern eigentlich nur von der Strecke ab, hier sollten vielleicht immer 50% der Streckenspezifischen höchstgeschwindegkeit angesetzt werden.

Die Berechnung ist zugegebenerweise sehr aufwändig, besonders für Triebzüge, wo für jeden angetreibenen Wagen die Zugkraft berechnet werden muss, hätte aber auch einige sehr realistische Nebenwirkungen:

* Triebzüge sind am Anfang sehr schnell, da sehr viele Achsen angetrieben werden
* Es ist sinnlos, eine schweren Güterzug mit eine leichten Lok zu bespannen, selbst wenn diese gut motorisiert ist
* langsame Züge müsssen vor Kurven kaum/ gar nicht bremsen.

Ich weis nicht, ob das alles realisierbar bzw gewünscht ist, aber sich fände es sehr schick 8)

Gruß Marc
Zitieren
#23
Erst einmal danke für die Formeln. Die habe ich mir natürlich auch hergeleitet. Wobei ich die Näherung für die Zugkraft erst mal weggelassen hatte und eine Wurzel und Quadrat übrig hatte (kommt von sinnlosen Differentialgleichungen, weil ich gleich das dt reingsteckt hatte) und es erstmal zu den Akten gelegt hatte.

Die Rollreibung sollte übrigens proportional v sein, denke ich.

Übrigens ist die Reibung in Kurven größer, da Züge starre Achsen haben und kein Differential. Sobald sie nicht "optimal" ausschwenken ist die Reibung viel größer. Anfahren in der Kurve am Hang ist schließlich am meisten gefürchtet (kommt aber in der jetzigen Version mangels Kuren am Hang nicht vor).

Bei der korrekten Formel sind die meisten Parameter konstant, deswegen denke ich, geht es performancemäßig ok. Jedoch gibt es ein paar Problem mit Simutrans in der jetzigen Version: Die Zahl der Achsen ist nicht bekannt. (Vielleicht default 4 annehmen?) Und: Die Formel muss übrigens auch für Autos und Schiffe gelten, zumindest in der jetzigen Implementierung.

Ein zweites Problem ist, dass delta_t ziemlich beliebig sein kann. Da man delta_V = Fges*zeit/masse rechnen würde, könnte es übergroße Schritte geben.

Ich denke, man könnte Kurven einfach als schwache Steigungen deklarieren, denn mit halber Geschwindigkeit in Kurven wäre man wieder am Anfang. Ok, ich werde mal den Compiler anwefen.

(Aber die andere Lösung sieht auch nett aus.)
Zitieren
#24
Wenn wir schon physikalisch korrekt sein wollen, müssen wir auch Veränderungen der Haftkraft durch Temperatur, Dreck und Feuchtigkeit auf Schienen und Radsätzen, ... berücksichtigen... Wink

Nein, mal ernsthaft: Wäre es vielleicht möglich, mal ein Video zu zeigen?

Ich sehe übrigens jetzt schon das Problem, dass die Spieler sich wundern, warum ihre Züge nach einem Versionsupdate länger als vorher für die selbe Strecke brauchen... Bin allerdings für diese Neuerung! Smile
Dirk Burkholz

"Geschäftsführer" (Forum-Administrator / Webmaster)

Simutrans bei MyMiniCity
Zitieren
#25
Irgenwie geht es mit den korrekten Formeln nicht so schön. Ich denke, ich lasse Hajo jetzt erst einmal die Formeln einbauen, die ich ihm gestern geschickt habe. Zumal die "physikalisch" korrekten Formeln ja auch für Schiffe verwendet werden würden ...

Aber wenn die Nachfrage noch weiter steigt, dann sehe ich mir auch die korrekten Formeln noch mal an. (Zumal die ungefähr die gleichen Rechenzeit brauchen.)
Zitieren
#26
Wenn Ihr so weitermacht brauch ich bald so'n Teil um Simutrans zu spielen
http://www.top500.org/

Wink
1890-1936 Kleinbahn Karlsruhe - Durmersheim ("Lobberle")
Zitieren
#27
Prissis neuer Code kann in der 0.84.21.0 bewundert werden (im englisichen Forum bereits verfügbar).

Ich wäre an eurer Stelle sehr zurückhaltend was Wünsche nach komplexere Fomeln an dieser Stelle angeht, da die Rechnung für jedes Fahrzeuig und jeden Frame (also etwa 20 bis 50 mal pro Sekunde) gemacht werden muss.
Naja, aber ich habe wohl auch den langsamsten Rechner ... Prissi hat sich wirklich Mühe gegeben die Rechnung schnell zu bekommen, und das Resultat ist sehr schön. Ich denke wir sollten hier nicht noch mehr CPU Zeit verbraten, es gibt sicher noch ein paar interessante Erweiterungen für die wir einige Rserven lassen sollten.
Zitieren
#28
Ist mir gestern Abend aufgefallen:

Vielleicht sollte man über eine Leistungssteigerung der Maschinen der Öltanker (andere Schiffe hab ich derzeit nicht) nachdenken. Wenn ich das recht sehe, erreichen die derzeit nich mal leer die Höchstgeschwindigkeit.

Edit: Hab ich vergessen: Ansonsten finde ich die neue Berechnung wirklich nett!! Gute Idee!
Zitieren
#29
UNDO Funktion gibts auf jeden Fall und die Kurvenfahrten hat Prissi (wie ich ihn kenne) schon seit Jahren geändert.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste