| OpenTTD
    | 
Multi-commodity flow calculating base class. More...
#include <mcf.h>
 
  
 | Protected Member Functions | |
| MultiCommodityFlow (LinkGraphJob &job) | |
| Constructor. | |
| template<class Tannotation , class Tedge_iterator > | |
| void | Dijkstra (NodeID from, PathVector &paths) | 
| A slightly modified Dijkstra algorithm. | |
| uint | PushFlow (Edge &edge, Path *path, uint accuracy, uint max_saturation) | 
| Push flow along a path and update the unsatisfied_demand of the associated edge. | |
| void | CleanupPaths (NodeID source, PathVector &paths) | 
| Clean up paths that lead nowhere and the root path. | |
| Protected Attributes | |
| LinkGraphJob & | job | 
| Job we're working with. | |
| uint | max_saturation | 
| Maximum saturation for edges. | |
| 
 | inlineprotected | 
| 
 | protected | 
Clean up paths that lead nowhere and the root path.
| source_id | ID of the root node. | 
| paths | Paths to be cleaned up. | 
Definition at line 305 of file mcf.cpp.
References Path::Detach(), Path::GetFlow(), Path::GetNode(), Path::GetNumChildren(), and Path::GetParent().
Referenced by MCF1stPass::MCF1stPass(), and MCF2ndPass::MCF2ndPass().
| 
 | protected | 
A slightly modified Dijkstra algorithm.
Grades the paths not necessarily by distance, but by the value Tannotation computes. It uses the max_saturation setting to artificially decrease capacities.
| Tannotation | Annotation to be used. | 
| Tedge_iterator | Iterator to be used for getting outgoing edges. | 
| source_node | Node where the algorithm starts. | 
| paths | Container for the paths to be calculated. | 
Definition at line 259 of file mcf.cpp.
References LinkGraph::EdgeWrapper< Tedge >::Capacity(), DistanceMaxPlusManhattan(), job, max_saturation, and LinkGraphJob::Size().
| 
 | protected | 
Push flow along a path and update the unsatisfied_demand of the associated edge.
| edge | Edge whose ends the path connects. | 
| path | End of the path the flow should be pushed on. | 
| accuracy | Accuracy of the calculation. | 
| max_saturation | If < UINT_MAX only push flow up to the given saturation, otherwise the path can be "overloaded". | 
Definition at line 336 of file mcf.cpp.
References Path::AddFlow(), Clamp(), and job.
Referenced by MCF1stPass::MCF1stPass(), and MCF2ndPass::MCF2ndPass().
 1.8.1.2
 1.8.1.2