OpenTTD Source: SymmetricScaler Class Reference

OpenTTD Source 13.2.1

Public Member Functions | Private Attributes
SymmetricScaler Class Reference

Scaler for symmetric distribution. More...

Inheritance diagram for SymmetricScaler:

## Public Member Functions
| SymmetricScaler (uint mod_size)
| Constructor. More...
void | AddNode (const Node &node)
| Count a node's supply into the sum of supplies. More...
void | SetDemandPerNode (uint num_demands)
| Calculate the mean demand per node using the sum of supplies. More...
uint | EffectiveSupply (const Node &from, const Node &to)
| Get the effective supply of one node towards another one. More...
bool | HasDemandLeft (const Node &to)
| Check if there is any acceptance left for this node. More...
void | SetDemands (LinkGraphJob &job, NodeID from, NodeID to, uint demand_forw)
| Set the demands between two nodes using the given base demand. More...
Public Member Functions inherited from Scaler
void | SetDemands (LinkGraphJob &job, NodeID from, NodeID to, uint demand_forw)
| Set the demands between two nodes using the given base demand. More...

## Private Attributes
uint | mod_size
| Size modifier. Determines how much demands increase with the supply of the remote station.
uint | supply_sum
| Sum of all supplies in the component.
uint | demand_per_node
| Mean demand associated with each node.

## Detailed Description

Scaler for symmetric distribution.

Definition at line 22 of file demands.cpp.

## Constructor & Destructor Documentation

## ◆ SymmetricScaler()

SymmetricScaler::SymmetricScaler | ( | uint | mod_size | ) |
| inline

Constructor.

Parameters

  mod_size | Size modifier to be used. Determines how much demands increase with the supply of the remote station.

Definition at line 29 of file demands.cpp.

## Member Function Documentation

## ◆ AddNode()

void SymmetricScaler::AddNode | ( | const Node & | node | ) |
| inline

Count a node's supply into the sum of supplies.

Parameters

  node | Node.

Definition at line 37 of file demands.cpp.

References LinkGraph::NodeWrapper< Tnode, Tedge >::Supply(), and supply_sum.

## ◆ EffectiveSupply()

uint SymmetricScaler::EffectiveSupply | ( | const Node & | from,
|  | const Node & | to
| ) |  |
| inline

Get the effective supply of one node towards another one.

In symmetric distribution the supply of the other node is weighed in.

Parameters

  from | The supplying node.
  to | The receiving node.

Returns
  Effective supply.

Definition at line 58 of file demands.cpp.

References LinkGraph::NodeWrapper< Tnode, Tedge >::Supply().

## ◆ HasDemandLeft()

bool SymmetricScaler::HasDemandLeft | ( | const Node & | to | ) |
| inline

Check if there is any acceptance left for this node.

In symmetric distribution nodes only accept anything if they also supply something. So if undelivered_supply == 0 at the node there isn't any demand left either.

Parameters

  to | Node to be checked.

Returns
  If demand is left.

Definition at line 70 of file demands.cpp.

References LinkGraph::NodeWrapper< Tnode, Tedge >::Demand(), and LinkGraph::NodeWrapper< Tnode, Tedge >::Supply().

## ◆ SetDemandPerNode()

void SymmetricScaler::SetDemandPerNode | ( | uint | num_demands | ) |
| inline

Calculate the mean demand per node using the sum of supplies.

Parameters

  num_demands | Number of accepting nodes.

Definition at line 46 of file demands.cpp.

References demand_per_node, and supply_sum.

## ◆ SetDemands()

void SymmetricScaler::SetDemands | ( | LinkGraphJob & | job,
|  | NodeID | from_id,
|  | NodeID | to_id,
|  | uint | demand_forw
| ) |  |

Set the demands between two nodes using the given base demand.

In symmetric mode this sets demands in both directions.

Parameters

  job | The link graph job.
  from_id | The supplying node.
  to_id | The receiving node.
  demand_forw | Demand calculated for the "forward" direction.

Definition at line 130 of file demands.cpp.

References mod_size, and Scaler::SetDemands().

The documentation for this class was generated from the following file:

- src/linkgraph/demands.cpp