OpenTTD
Public Member Functions | Private Attributes
SymmetricScaler Class Reference

Scaler for symmetric distribution. More...

Inheritance diagram for SymmetricScaler:
Scaler

Public Member Functions

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

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 ( uint  mod_size)
inline

Constructor.

Parameters
mod_sizeSize 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

void SymmetricScaler::AddNode ( const Node node)
inline

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

Parameters
nodeNode.

Definition at line 37 of file demands.cpp.

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

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
fromThe supplying node.
toThe receiving node.
Returns
Effective supply.

Definition at line 58 of file demands.cpp.

References demand_per_node, max(), mod_size, and LinkGraph::NodeWrapper< Tnode, Tedge >::Supply().

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
toNode 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().

void SymmetricScaler::SetDemandPerNode ( uint  num_demands)
inline

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

Parameters
num_demandsNumber of accepting nodes.

Definition at line 46 of file demands.cpp.

References demand_per_node, max(), and supply_sum.

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
jobThe link graph job.
from_idThe supplying node.
to_idThe receiving node.
demand_forwDemand calculated for the "forward" direction.

Reimplemented from Scaler.

Definition at line 131 of file demands.cpp.

References max(), and mod_size.


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