Railway/Train path finding: Difference between revisions
Jump to navigation
Jump to search
(A few grammar edits) |
|||
Line 2: | Line 2: | ||
{{sublinks}} | {{sublinks}} | ||
Before a train | Before a train moves to a target [[Train stop]], it calculates the best route based on the railway network at that time. | ||
For calculation it uses a simple A*-algorithm, with the following special weighting-rules: | For calculation it uses a simple A*-algorithm, with the following special weighting-rules: | ||
* When the rail block is occupied by a train -> penalty of 2 * length of the block divided by block distance from the start, so the far away occupied paths don't matter much. | * When the rail block is occupied by a train -> Add a penalty of 2 * length of the block divided by block distance from the start, so the far away occupied paths don't matter much. | ||
* When there is a train waiting in the station -> penalty of 6 tiles per every remaining second in the station (This also helps the train to choose the best station even when all of them are occupied). | * When there is a train waiting in the station -> Add a penalty of 6 tiles per every remaining second in the station. (This also helps the train to choose the best station even when all of them are occupied). | ||
The route is recalculated if the train would need to stop | The route is recalculated if the train would need to stop. There is an invisible front point called the train_stop_point which is used to determine if the train needs to stop. See [[Debug mode]] and turn show_train_stop_point on, to see that point. The route also recalculated after a train has stopped on a signal. | ||
== History == | == History == | ||
The current algorithm | The current algorithm was introduced with v0.11.11. | ||
Before that the algorithm was simply, if the next block is occupied, take another route. | Before that the algorithm was simply, if the next block is occupied, take another route. |
Revision as of 22:04, 28 June 2016
< Railway | Train path finding
Before a train moves to a target Train stop, it calculates the best route based on the railway network at that time.
For calculation it uses a simple A*-algorithm, with the following special weighting-rules:
- When the rail block is occupied by a train -> Add a penalty of 2 * length of the block divided by block distance from the start, so the far away occupied paths don't matter much.
- When there is a train waiting in the station -> Add a penalty of 6 tiles per every remaining second in the station. (This also helps the train to choose the best station even when all of them are occupied).
The route is recalculated if the train would need to stop. There is an invisible front point called the train_stop_point which is used to determine if the train needs to stop. See Debug mode and turn show_train_stop_point on, to see that point. The route also recalculated after a train has stopped on a signal.
History
The current algorithm was introduced with v0.11.11.
Before that the algorithm was simply, if the next block is occupied, take another route.
See