In other languages: Deutsch

Railway/Train path finding: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
Line 7: Line 7:
* 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 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 to queue up for even when all of them are occupied, it picks the one with least time remaining).
* 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 to queue up for even when all of them are occupied, it picks the one with least time remaining).
* When the path includes a train stop that is not the destination, add a penalty of 2000.
* When the path includes a train stop that is not the destination -> Add a penalty of 2000.


The route is recalculated if the train needs to stop. There is an invisible front point internally 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. This is to make pathing as dynamic as possible.
The route is recalculated if the train needs to stop. There is an invisible front point internally 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. This is to make pathing as dynamic as possible.

Revision as of 16:36, 23 October 2017

< Railway | Train path finding

Before a train moves to a target (In this case, a 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 to queue up for even when all of them are occupied, it picks the one with least time remaining).
  • When the path includes a train stop that is not the destination -> Add a penalty of 2000.

The route is recalculated if the train needs to stop. There is an invisible front point internally 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. This is to make pathing as dynamic as possible.

History

In v15 a penalty was added to avoid using train stops as through tracks

The current algorithm was introduced with v0.11.11.

Before v0.11.11, the algorithm was simply: If the next block is occupied, take another route.

See also