Railway Wagon Loading Simulation: Train & Wagon Characteristics

      Railway wagon loading simulation models how trains and individual wagons interact with a LoadingRack during petroleum product loading and railway loading operations. A train consists of multiple wagons, each with its own capacity, product assignment, initial fill level, and current loading state. These characteristics determine the train's total capacity, fill level, fill ratio, wagon count, and loading status. The LoadingRack combines wagon-level data with train-level calculations to represent railway transportation, petroleum product logistics, refinery operations, and oil and gas logistics. Train and wagon characteristics can also be used to monitor loading progress, capacity utilization, and wagon logistics through Loading Rack Statistics. Train departure behavior can be controlled by loading completion or the railway schedule, as described in LoadingPriorityOverSchedule in LoadingRack: Scheduling and Departure Logic.

Train Characteristics in Railway Wagon Loading Simulation

       A train in the LoadingRack model aggregates the characteristics of its assigned wagons. Train-level methods provide the total capacity, loading level, fill ratio, wagon count, and timing information required to evaluate railway loading operations and train loading performance. These aggregated values describe the train's loading progress, capacity utilization, and operational status during railway loading. Train and wagon characteristics provide the data required to apply different LoadingRack scheduling strategies, from detailed train loading to simplified product flow.
       The main train characteristics include:
       Wagon count — the number of wagons assigned to the train.
       Total capacity — the combined capacity of all assigned wagons, in tons.
       Total fill level — the total amount of product currently loaded into the train.
       Total fill ratio — the proportion of total train capacity that has been loaded.
       Product-specific capacity and fill level — aggregated values used to track petroleum product loading for a specified product.
       Arrival and departure information — planned arrival, actual arrival, expected loading duration, and remaining time until departure.
       Train-level characteristics provide the operational data required by LoadingRack control logic to manage active trains, planned operations, loading progress, and departure conditions
       The corresponding API methods provide direct access to these characteristics and support train loading simulation and railway loading analysis. getWagonCount() returns the number of active wagons, while getTotalCapacity() returns their combined capacity in tons. getTotalFillLevel() provides the current total loaded amount, and getTotalFillRatio() expresses loading progress as a ratio of total capacity. In railway wagon loading simulation, train departure can be driven either by the loading schedule or by loading completion; this behavior is explained in LoadingPriorityOverSchedule in LoadingRack: Scheduling and Departure Logic

Wagon Characteristics

       A wagon is the basic transport unit within a train in the LoadingRack model and the fundamental unit of railway wagon loading operations. Each wagon maintains its own capacity, product assignment, initial fill level, current fill level, and turnover information, allowing the simulation to represent individual wagon loading and petroleum product transportation. These values are aggregated at the train level to calculate overall loading performance.

       The main wagon characteristics are:
       wagonName — identifies the wagon;
       capacity — defines the maximum product quantity that can be loaded into the wagon, in tons;
       productId — specifies the product assigned to the wagon;
       initFillLevel — defines the wagon’s initial fill level;
       fillLevel — represents the current amount of product in the wagon;
       turnOver — stores the wagon turnover parameter used by the model;
       isEmpty() — determines whether the wagon is empty.
       These properties allow each wagon to maintain its own loading state while contributing to the aggregated characteristics of the train.

Train Capacity and Loading Level

       The LoadingRack calculates train capacity and loading level by aggregating the corresponding values of its assigned wagons. These calculations provide an overall view of railway loading progress, train capacity utilization, and petroleum product loading. These calculations provide an overall view of railway loading progress while preserving product-specific loading information. For product-specific calculations, getCapacity() sums the capacity of wagons assigned to the specified product. The current loading state is available through getTotalFillLevel(). For a specific product, getFillLevel() returns the corresponding aggregated fill level. The fill ratio is then calculated relative to the available capacity, providing a normalized measure from 0 to 1. This approach makes it possible to evaluate the loading performance of the entire train while retaining the individual characteristics of each wagon.

Product-Specific Train and Wagon Loading

       The LoadingRack can track loading not only for the entire train but also for individual products assigned to its wagons. This is important when a train contains wagons designated for different petroleum products or product grades. The productId property identifies the product assigned to each wagon. Train-level methods aggregate the capacity and loading level only for wagons with the specified product ID. getCapacity() returns the total capacity available for that product, while getFillLevel() returns the corresponding loaded amount. The getFillRatio() method expresses the loading progress as a ratio of the product-specific fill level to its available capacity. When the train is actively being loaded, the fill ratio is obtained from the corresponding LoadingRack item. Otherwise, it is calculated from the wagon fill level and capacity. This product-level aggregation allows railway wagon loading simulation to represent mixed-product trains while maintaining separate loading characteristics for each petroleum product. Product-specific fill levels provide direct information that can be used to control loading operations and make product availability part of the loading decision.

Train Loading Status

       The LoadingRack provides methods for evaluating the overall train loading status and capacity utilization during railway loading operations. Loading Rack Statistics provides visibility into active train fill ratio, product loading progress, and total train capacity utilization. getTotalFillLevel() returns the total amount of product currently loaded, while getTotalFillRatio() expresses this amount relative to the train's total capacity. The isFull() method determines whether the train is considered fully loaded, allowing the simulation to identify when railway wagon loading has reached the required loading level. Train fill level and loading status are particularly important when using Loading Priority to determine whether a train is ready for departure.

Train Arrival and Departure

       Train timing is another important part of the LoadingRack model. The train stores planned and actual arrival information and provides getHoursUntilDeparture() to calculate the remaining time until the expected departure. The departure time is determined from the actual arrival time and the expected loading duration. If loading priority overrides the schedule, the method returns 0.0, indicating that the train is ready for departure without waiting for the scheduled time. These parameters connect wagon loading operations with the train schedule and allow the simulation to evaluate loading performance against railway logistics and departure constraints.

Conclusion

       The LoadingRack connects wagon-level characteristics with aggregated train-level loading data. Wagon capacity, product assignment, and fill level determine the train's loading characteristics, while train timing and departure parameters support railway wagon loading operations and refinery logistics. Together, these capabilities provide a foundation for railway wagon loading simulation, petroleum product transportation, and oil and gas logistics.

FAQ

1. What is a wagon in railway wagon loading simulation?
A wagon is the basic transport unit within a train. In the LoadingRack model, each wagon has its own capacity, product assignment, initial fill level, and current fill level.

2. How is train capacity calculated in railway loading simulation?
Train capacity is calculated as the sum of the capacities of all wagons assigned to the train. The getTotalCapacity() method returns this value in tons.

3. How can I get the number of wagons in a train?
Use getWagonCount(). The method returns the number of active wagons assigned to the train.

4. How is the train fill ratio calculated?
getTotalFillRatio() calculates the ratio between the total loaded amount and the total train capacity, with the result ranging [0;1].

5. How can I check whether a train is fully loaded?
Use isFull(). The method considers the train full when its total fill ratio reaches the defined threshold, allowing a small residual capacity.

6. Can railway wagon loading simulation track different petroleum products in the same train?
Yes. Product-specific methods such as getCapacity(), getFillLevel(), and getFillRatio() allow capacity and loading progress to be evaluated separately for each product.

7. How does the simulation determine the remaining time until departure?
getHoursUntilDeparture() calculates the remaining time from the actual train arrival and expected loading duration. When loading priority overrides the schedule, it returns 0.0.

8. What wagon characteristics are available in the LoadingRack?
Each wagon provides characteristics such as wagonName, capacity, productId, initFillLevel, fillLevel, and turnOver. The isEmpty() method determines whether the wagon is empty.