Implicit Load Balancing

From #openttdcoop wiki

Jump to: navigation, search


Without Load Balancing

Without load balancing, trains tend to jam some lines even when others are empty or nowhere near capacity. This station has no load balancer: track A goes to platforms 1, 3, & 5, which lead to output track A, and B goes to 2, 4, & 6, which go to B.

Example without load balancing

Explicit Load Balancing

Most large merges and hubs on #openttdcoop are explicitly load balanced. There are signaled junctions where each train entering from any of N tracks can choose to exit on any of M tracks. When N and M are large (especially with exits from large stations), building one of these load balancers becomes very complex.

Implicit Load Balancing

Implicit load balancing uses properties of the stream of incoming trains to ensure balance of the stream of outgoing trains. At a station, the general idea is to use the process of splitting the trains from a single entrance to multiple tracks to also select the output track in a load-balanced way.

Linear Implicit Load Balancing

Split the tracks entering the station, and distribute them, alternating input tracks (for example, with 6 station platforms and 2 input tracks, the platforms should accept trains from track A, B, A, B, A, B). At the exit, simply group adjacent lines to give equivalent output platforms to each line (output track A should take platforms 1-3 and output track B should take platforms 4-6).

Example with linear implicit load balancing

Problem

The problem with linearly taking the outputs like this is that the trains will take the first platform they see that is empty. This will likely cause track A to be favored with more traffic in this case.

Cyclic Implicit Load Balancing

Cyclic implicit load balancing helps with this case by making each input line favor differing output lines. The output lines are enumerated, and then the order used is rotated each group. If there are 12 platforms feeding 3 output lines, they should be connected like ABC BCA CAB ABC.

An example is given (as before, with outputs AB BA AB).

Example with cyclic implicit load balancing

Large-scale Example

From PS #75, the north and south primary drops:

Example with cyclic implicit load balancing

Overview

R&D Overview
Idea Player Draft of idea Testing Completed Remarks
Implicit Load Balancing strstrep Work-in-progress class="

checked " | Built in PS #75

Waiting for a new implementation (75 failed to fully load-test the LB because of a desync bug with prospecting)
Powered by MediaWiki
  • This page was last modified on 7 November 2013, at 08:13.