Analyses
Analyses are run after ContainerFlowGenerationManager.generate()
.
An analyses provides first insights on the actually generated data.
They help to answer questions such as:
Was the correct input data used? Especially with a lot of input data, it might be tough to keep track of schedules and distributions. Before using the generated data, cross-check the generated data with your input data. Are the schedules honoured? Do the empirical distributions in the generated data match your assumed distributions?
Do the initial assumptions match? It is tricky to assign containers to the vehicles on their outbound journey while adhering to distributions and operational constraints at the same time. It is worthwhile comparing an analysis with its corresponding preview counterpart (if existent) to detect deviations between the two. If they deviate largely and against your personal expectations, maybe the operational constraints need readjustment.
Does the generated data correspond to your expectations? Probably you used some of the default distributions and some you researched yourself. You might want to cross-check the generated data with external data sources. Only that way you can ensure that the data is plausible for the problem you wish to further investigate.
Please be aware that, as stated in the license, ConFlowGen comes without any warranty. These analyses are only a first step, so please add your own analyses of the data. It is up to you to ensure that the generated data actually fits to your task at hand (such as, e.g. a simulation study).
The steps are explained according to the database created by the demo script serving as a Proof of Concept, but you can still use any other ConFlowGen database.
[1]:
import matplotlib.pyplot as plt
from IPython.display import Markdown, display
import conflowgen
database_chooser = conflowgen.DatabaseChooser(
sqlite_databases_directory="./data/prepared_dbs" # subdirectory relative to Jupyter Notebook
)
database_chooser.load_existing_sqlite_database("demo_poc.sqlite")
[2]:
preferred_matplotlib_style = "seaborn-v0_8-colorblind"
Instantiating an Analysis
Each analysis is a standardized approach of how the data present in the database is digested. The resulting objects are part of the API but it requires some programming to further work with them.
[3]:
inbound_and_outbound_vehicle_capacity_analysis = (
conflowgen.InboundAndOutboundVehicleCapacityAnalysis(transportation_buffer=0.2)
)
display(
inbound_and_outbound_vehicle_capacity_analysis.get_inbound_container_volumes_by_vehicle_type()
)
outbound_capacities = (
inbound_and_outbound_vehicle_capacity_analysis.get_outbound_container_volume_by_vehicle_type()
)
display(outbound_capacities.used.teu)
display(outbound_capacities.maximum.teu)
ContainerVolumeByVehicleType(teu={<ModeOfTransport.truck: 'truck'>: 201.5, <ModeOfTransport.train: 'train'>: 263.75, <ModeOfTransport.feeder: 'feeder'>: 295.5, <ModeOfTransport.deep_sea_vessel: 'deep_sea_vessel'>: 445.5, <ModeOfTransport.barge: 'barge'>: 0}, containers={<ModeOfTransport.truck: 'truck'>: 126, <ModeOfTransport.train: 'train'>: 162, <ModeOfTransport.feeder: 'feeder'>: 181, <ModeOfTransport.deep_sea_vessel: 'deep_sea_vessel'>: 279, <ModeOfTransport.barge: 'barge'>: 0})
{<ModeOfTransport.truck: 'truck'>: 318.75,
<ModeOfTransport.train: 'train'>: 119.25,
<ModeOfTransport.feeder: 'feeder'>: 258.75,
<ModeOfTransport.deep_sea_vessel: 'deep_sea_vessel'>: 509.5,
<ModeOfTransport.barge: 'barge'>: 0}
{<ModeOfTransport.truck: 'truck'>: nan,
<ModeOfTransport.train: 'train'>: 270,
<ModeOfTransport.feeder: 'feeder'>: 360,
<ModeOfTransport.deep_sea_vessel: 'deep_sea_vessel'>: 540,
<ModeOfTransport.barge: 'barge'>: 0}
Instantiating an Analysis Report
The data structures returned by an analysis are further digestible by code. If you, however, prefer to have the data in a format better to read, you might rather look for the report. For every analysis, a corresponding report exists. It auto-fills the parameters for the analysis with the data already stored in the database. Thus, we do not need to provide a transportation_buffer
.
[4]:
analysis_report = conflowgen.InboundAndOutboundVehicleCapacityAnalysisReport()
print(analysis_report.get_report_as_text())
(all numbers are reported in TEU)
vehicle type inbound volume outbound volume outbound max capacity
deep sea vessel 445.5 509.5 540.0
feeder 295.5 258.8 360.0
barge 0.0 0.0 0.0
train 263.8 119.2 270.0
truck 201.5 318.8 -1.0
(rounding errors might exist)
Instead of reading tables, one might prefer to see the data visualized. Occasionally, the visualization and text of some reports will be slightly different, but here they complement each other well.
[5]:
analysis_report.show_report_as_graph()
For more information on this preview report, please check
InboundAndOutboundVehicleCapacityAnalysisReport
.
A list of all analyses including their corresponding reports shipped with ConFlowGen is available at
Running analyses.
Showing Analyses as Text
Following the approach sketched out above, you could generate every analysis report you are interested in. If you are interested in all of them, a convenience function exists. It can simply print all information to the standard output.
[6]:
conflowgen.run_all_analyses(
as_text=True,
display_text_func=print,
)
Run all analyses on the synthetically generated data.
Inbound And Outbound Vehicle Capacity Analysis Report
Analyze the container volumes transported by vehicle type for the inbound and
outbound journeys and check for the maximum capacity of each vehicle type on its
outbound journey. If, e.g., for the vehicle type 'feeder' the maximum capacity
is reached, most likely there are more vehicles that deliver containers destined
for feeders but could not get a free spot. You might consider adding more
vehicles of that type or adjusting the modal split.
(all numbers are reported in TEU)
vehicle type inbound volume outbound volume outbound max capacity
deep sea vessel 445.5 509.5 540.0
feeder 295.5 258.8 360.0
barge 0.0 0.0 0.0
train 263.8 119.2 270.0
truck 201.5 318.8 -1.0
(rounding errors might exist)
Container Flow By Vehicle Type Analysis Report
Analyze how many containers were delivered by which vehicle type and how their
journey continued. The analysis pairs the inbound and outbound journey for each
container.
vehicle type (from) vehicle type (to) transported capacity (in TEU)
deep sea vessel deep sea vessel 0.0
deep sea vessel feeder 92.0
deep sea vessel barge 0.0
deep sea vessel train 98.2
deep sea vessel truck 255.2
feeder deep sea vessel 211.0
feeder feeder 0.0
feeder barge 0.0
feeder train 21.0
feeder truck 63.5
barge deep sea vessel 0.0
barge feeder 0.0
barge barge 0.0
barge train 0.0
barge truck 0.0
train deep sea vessel 163.2
train feeder 100.5
train barge 0.0
train train 0.0
train truck 0.0
truck deep sea vessel 135.2
truck feeder 66.2
truck barge 0.0
truck train 0.0
truck truck 0.0
(rounding errors might exist)
vehicle type (from) vehicle type (to) transported capacity (in containers)
deep sea vessel deep sea vessel 0.0
deep sea vessel feeder 56.0
deep sea vessel barge 0.0
deep sea vessel train 65.0
deep sea vessel truck 158.0
feeder deep sea vessel 128.0
feeder feeder 0.0
feeder barge 0.0
feeder train 13.0
feeder truck 40.0
barge deep sea vessel 0.0
barge feeder 0.0
barge barge 0.0
barge train 0.0
barge truck 0.0
train deep sea vessel 103.0
train feeder 59.0
train barge 0.0
train train 0.0
train truck 0.0
truck deep sea vessel 83.0
truck feeder 43.0
truck barge 0.0
truck train 0.0
truck truck 0.0
(rounding errors might exist)
Container Flow By Vehicle Instance Analysis Report
Analyze how many import, export, and transshipment containers were unloaded and
loaded on each vehicle.
mode_of_transport vehicle_id vehicle_name service_name \
vehicle_arrival_time
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
... ... ... ... ...
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
flow_direction journey_direction handled_volume
vehicle_arrival_time
2024-05-27 17:00:00 import inbound NaN
2024-05-27 17:00:00 import outbound NaN
2024-05-27 17:00:00 export inbound 88.0
2024-05-27 17:00:00 export outbound NaN
2024-05-27 17:00:00 transshipment inbound NaN
... ... ... ...
2024-06-15 19:00:00 export outbound 34.0
2024-06-15 19:00:00 transshipment inbound NaN
2024-06-15 19:00:00 transshipment outbound 73.0
2024-06-15 19:00:00 undefined inbound NaN
2024-06-15 19:00:00 undefined outbound NaN
[72 rows x 7 columns]
Container Flow Adjustment By Vehicle Type Analysis Report
Analyze how many containers needed to change their initial container type. When
containers are generated, in order to obey the maximum dwell time, the vehicle
type that is used for onward transportation might change. The initial outbound
vehicle type is the vehicle type that is drawn randomly for a container at the
time of generation. The adjusted vehicle type is the vehicle type that is drawn
in case no vehicle of the initial outbound vehicle type is left within the
maximum dwell time.
initial vehicle type adjusted vehicle type transported capacity (in TEU) transported capacity (in boxes)
deep sea vessel deep sea vessel 499.5 307
deep sea vessel feeder 21.0 12
deep sea vessel barge 0.0 0
deep sea vessel train 0.0 0
deep sea vessel truck 17.0 11
feeder deep sea vessel 0.0 0
feeder feeder 237.8 146
feeder barge 0.0 0
feeder train 0.0 0
feeder truck 40.0 24
barge deep sea vessel 0.0 0
barge feeder 0.0 0
barge barge 0.0 0
barge train 0.0 0
barge truck 0.0 0
train deep sea vessel 10.0 7
train feeder 0.0 0
train barge 0.0 0
train train 119.2 78
train truck 62.0 37
truck deep sea vessel 0.0 0
truck feeder 0.0 0
truck barge 0.0 0
truck train 0.0 0
truck truck 199.8 126
(rounding errors might exist)
Container Flow Adjustment By Vehicle Type Analysis Summary Report
Analyse whether a container needed to change its vehicle type for the outbound
journey and if that was the case, how many times which vehicle type was chosen
in order to not exceed the maximum dwell time.
Capacity in TEU
vehicle type unchanged: 1056.2 (87.56%)
changed to deep sea vessel: 10.0 (0.83%)
changed to feeder: 21.0 (1.74%)
changed to barge: 0.0 (0.00%)
changed to train: 0.0 (0.00%)
changed to truck: 119.0 (9.87%)
(rounding errors might exist)
Container Flow Vehicle Type Adjustment Per Vehicle Analysis Report
Analyze how many of the containers loaded by a vehicle on its outbound journey
have been originally destined for another vehicle type. Generally, it expected
that such an adjustment should only occur occasionally in the beginning. Only
towards the end, difficulties to find the desired vehicle type are expected,
e.g., if a feeder delivers a container to be transshipped to a deep sea vessel
but the last deep sea vessel has already departed, then the container must be
placed on a vehicle of another type. If no vehicle is available, a corresponding
truck is created to pick up the container from the terminal. A large fraction
of re-assigned containers before the end are considered noteworthy but depending
on the input data it might be acceptable.
initial vehicle type = scheduled vehicles
adjusted vehicle type = scheduled vehicles
start date = none
end date = none
vehicle identifier fraction of adjusted containers (in containers)
feeder-LX050-1 0.0%
deep_sea_vessel-LX050-1 0.0%
deep_sea_vessel-LX050-2 0.0%
feeder-LX050-3 17.9%
feeder-LX050-2 0.0%
deep_sea_vessel-LX050-3 6.5%
train-JR03A-2 0.0%
train-JR03A-3 0.0%
truck-2024-06-17 22:31:03 100.0%
truck-2024-06-21 10:47:19 100.0%
truck-2024-06-19 09:09:06 100.0%
truck-2024-06-17 08:43:29 100.0%
truck-2024-06-18 15:08:20 100.0%
truck-2024-06-18 10:47:56 100.0%
truck-2024-06-18 17:09:53 100.0%
truck-2024-06-18 15:04:08 100.0%
truck-2024-06-26 06:04:09 100.0%
truck-2024-06-19 08:53:50 100.0%
truck-2024-07-01 05:09:41 100.0%
truck-2024-07-03 09:34:14 100.0%
truck-2024-06-18 13:22:49 100.0%
truck-2024-06-18 12:20:50 100.0%
truck-2024-06-19 10:24:59 100.0%
truck-2024-06-18 06:02:01 100.0%
truck-2024-06-20 19:17:35 100.0%
truck-2024-06-19 02:42:37 100.0%
truck-2024-06-17 03:46:30 100.0%
truck-2024-06-18 15:43:07 100.0%
truck-2024-06-20 14:23:17 100.0%
truck-2024-06-18 13:56:42 100.0%
truck-2024-06-19 00:16:35 100.0%
truck-2024-06-19 09:38:27 100.0%
truck-2024-06-27 11:25:53 100.0%
truck-2024-06-17 14:03:12 100.0%
truck-2024-06-17 06:57:22 100.0%
truck-2024-06-17 15:16:19 100.0%
truck-2024-06-17 07:22:16 100.0%
truck-2024-06-20 17:39:17 100.0%
truck-2024-06-17 10:42:45 100.0%
truck-2024-06-18 06:55:34 100.0%
truck-2024-06-20 11:41:31 100.0%
truck-2024-06-18 16:48:13 100.0%
truck-2024-06-17 20:03:45 100.0%
truck-2024-06-17 18:39:31 100.0%
truck-2024-06-17 09:18:52 100.0%
truck-2024-06-18 11:08:51 100.0%
truck-2024-06-17 17:32:52 100.0%
truck-2024-06-21 06:35:06 100.0%
truck-2024-06-18 10:06:03 100.0%
truck-2024-06-18 20:44:56 100.0%
truck-2024-06-26 16:17:45 100.0%
truck-2024-06-17 08:38:34 100.0%
truck-2024-06-19 20:34:25 100.0%
truck-2024-06-19 10:51:43 100.0%
truck-2024-06-17 10:10:02 100.0%
truck-2024-06-17 08:29:11 100.0%
truck-2024-06-19 05:06:25 100.0%
truck-2024-07-02 08:21:00 100.0%
truck-2024-06-17 19:09:33 100.0%
truck-2024-06-18 14:45:59 100.0%
truck-2024-06-25 17:06:27 100.0%
truck-2024-06-17 10:37:17 100.0%
truck-2024-06-19 05:44:23 100.0%
truck-2024-06-21 17:08:13 100.0%
truck-2024-06-18 09:39:36 100.0%
truck-2024-06-22 01:12:35 100.0%
truck-2024-06-18 12:12:55 100.0%
truck-2024-06-19 09:20:38 100.0%
truck-2024-06-21 17:53:31 100.0%
truck-2024-06-18 12:54:21 100.0%
truck-2024-06-19 03:37:42 100.0%
truck-2024-07-03 13:05:34 100.0%
truck-2024-06-25 07:42:54 100.0%
truck-2024-06-19 15:24:29 100.0%
truck-2024-06-18 20:37:19 100.0%
truck-2024-06-19 08:43:47 100.0%
truck-2024-06-17 10:17:10 100.0%
truck-2024-06-24 07:29:09 100.0%
truck-2024-06-25 15:12:48 100.0%
truck-2024-06-17 07:01:36 100.0%
(rounding errors might exist)
Modal Split Analysis Report
Analyze how many containers are delivered and picked up by which type of
vehicle. This counts the containers in the yard, i.e., transshipment containers
are *not* counted twice.
Role in network
transshipment traffic (in TEU): 303.00 (25.12%)
inland gateway traffic (in TEU): 903.25 (74.88%)
Modal split in hinterland traffic (only inbound traffic)
trucks (in TEU): 201.5 (43.31%)
barges (in TEU): 0.0 (0.00%)
trains (in TEU): 263.8 (56.69%)
Modal split in hinterland traffic (only outbound traffic)
trucks (in TEU): 318.8 (72.77%)
barges (in TEU): 0.0 (0.00%)
trains (in TEU): 119.2 (27.23%)
Modal split in hinterland traffic (both inbound and outbound traffic)
trucks (in TEU): 520.2 (57.60%)
barges (in TEU): 0.0 (0.00%)
trains (in TEU): 383.0 (42.40%)
(rounding errors might exist)
Container Dwell Time Analysis Report
Analyse the container dwell times. In the text version of the report, only the
statistics are reported. In the visual version of the report, the dwell time
distributions are plotted.
container is delivered by vehicle type = all
container picked up by vehicle type = all
storage requirement = all
number containers: 338
(reported in h)
minimum container dwell time: 11.0
average container dwell time: 127.2
maximum container dwell time: 579.0
standard deviation: 103.5
(rounding errors might exist)
Quay Side Throughput Analysis Report
Analyse the throughput at the quay side. In the text version of the report, only
the statistics are reported. In the visual version of the report, the time
series is plotted. There is no concept of handling times in the data generation
process (as this is the task of the simulation or optimization model using this
data on a later stage) and thus all containers are loaded and discharged at
once. The impact of this fact is mitigated by averaging the data over certain
time ranges.
(reported in boxes)
maximum weekly quay side throughput: 324
average weekly quay side throughput: 186.4
standard deviation: 170.8
maximum daily quay side throughput: 46.3
average daily quay side throughput: 26.6
maximum hourly quay side throughput: 1.9
average hourly quay side throughput: 1.1
(daily and hourly values are simply scaled weekly values, rounding errors might exist)
Truck Gate Throughput Analysis Report
Analyze the trucks entering through the truck gate at each hour. Based on this,
the required truck gate capacity in containers boxes can be deduced. In the text
version of the report, only the statistics are reported. In the visual version
of the report, the time series is plotted.
(reported in boxes)
maximum hourly truck gate throughput: 7
average hourly truck gate throughput: 0.2
standard deviation: 0.7
(rounding errors might exist)
Yard Capacity Analysis Report
Analyse the used capacity in the yard. For each hour, the containers entering
and leaving the yard are checked. Based on this, the required yard capacity in
TEU can be deduced. In the text version of the report, only the statistics are
reported. In the visual version of the report, the time series is plotted. There
is no concept of handling times in the data generation process (as this is the
task of the simulation or optimization model using this data on a later stage)
and thus all containers are loaded and discharged at once. Thus, the yard
utilization shows certain peaks that will most likely not occur, especially if
the discharging and loading process of a vessel is parallelized.
storage requirement = all
(reported in TEU)
maximum used yard capacity: 314.5
average used yard capacity: 108.7
standard deviation: 118.8
(rounding errors might exist)
Outbound To Inbound Vehicle Capacity Utilization Analysis Report
Analyze the used vehicle capacity for each vehicle for the inbound and outbound
journeys. Generally, it expected to reach an equilibrium - each vehicle should
approximately pick up as many containers at the container terminal as it has
delivered. Great disparities between the transported capacities on the inbound
and outbound journey are considered noteworthy but depending on the input data
it might be acceptable. Trucks are excluded from this analysis.
vehicle type = scheduled vehicles
start date = none
end date = none
vehicle identifier inbound volume (in TEU) outbound volume (in TEU)
train-JR03A-1 90.0 0.0
train-JR03A-2 90.0 53.0
train-JR03A-3 90.0 66.2
deep_sea_vessel-LX050-1 150.0 153.2
deep_sea_vessel-LX050-2 150.0 176.5
deep_sea_vessel-LX050-3 150.0 179.8
feeder-LX050-1 100.0 57.0
feeder-LX050-2 100.0 91.8
feeder-LX050-3 100.0 110.0
(rounding errors might exist)
All analyses have been run.
Displaying Analyses as Graphs
Analyses can also be displayed as graphs. The depicted information contains the same information but might be easier to grasp. For emphasis, in the following the text version and graph version of the report are presented side-by-side. In addition, we also use the Markdown capabilities of the convenience function. This makes the presented analyses blend into the remaining content.
[7]:
conflowgen.run_all_analyses(
as_text=True,
as_graph=True,
display_text_func=lambda text: display(Markdown(text)),
display_in_markup_language="markdown",
display_as_ipython_svg=True,
)
Run all analyses on the synthetically generated data.
Inbound And Outbound Vehicle Capacity Analysis Report
Analyze the container volumes transported by vehicle type for the inbound and outbound journeys and check for the maximum capacity of each vehicle type on its outbound journey. If, e.g., for the vehicle type ‘feeder’ the maximum capacity is reached, most likely there are more vehicles that deliver containers destined for feeders but could not get a free spot. You might consider adding more vehicles of that type or adjusting the modal split.
(all numbers are reported in TEU)
vehicle type inbound volume outbound volume outbound max capacity
deep sea vessel 445.5 509.5 540.0
feeder 295.5 258.8 360.0
barge 0.0 0.0 0.0
train 263.8 119.2 270.0
truck 201.5 318.8 -1.0
(rounding errors might exist)
Container Flow By Vehicle Type Analysis Report
Analyze how many containers were delivered by which vehicle type and how their journey continued. The analysis pairs the inbound and outbound journey for each container.
vehicle type (from) vehicle type (to) transported capacity (in TEU)
deep sea vessel deep sea vessel 0.0
deep sea vessel feeder 92.0
deep sea vessel barge 0.0
deep sea vessel train 98.2
deep sea vessel truck 255.2
feeder deep sea vessel 211.0
feeder feeder 0.0
feeder barge 0.0
feeder train 21.0
feeder truck 63.5
barge deep sea vessel 0.0
barge feeder 0.0
barge barge 0.0
barge train 0.0
barge truck 0.0
train deep sea vessel 163.2
train feeder 100.5
train barge 0.0
train train 0.0
train truck 0.0
truck deep sea vessel 135.2
truck feeder 66.2
truck barge 0.0
truck train 0.0
truck truck 0.0
(rounding errors might exist)
vehicle type (from) vehicle type (to) transported capacity (in containers)
deep sea vessel deep sea vessel 0.0
deep sea vessel feeder 56.0
deep sea vessel barge 0.0
deep sea vessel train 65.0
deep sea vessel truck 158.0
feeder deep sea vessel 128.0
feeder feeder 0.0
feeder barge 0.0
feeder train 13.0
feeder truck 40.0
barge deep sea vessel 0.0
barge feeder 0.0
barge barge 0.0
barge train 0.0
barge truck 0.0
train deep sea vessel 103.0
train feeder 59.0
train barge 0.0
train train 0.0
train truck 0.0
truck deep sea vessel 83.0
truck feeder 43.0
truck barge 0.0
truck train 0.0
truck truck 0.0
(rounding errors might exist)
Container Flow By Vehicle Instance Analysis Report
Analyze how many import, export, and transshipment containers were unloaded and loaded on each vehicle.
mode_of_transport vehicle_id vehicle_name service_name \
vehicle_arrival_time
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
2024-05-27 17:00:00 train 1 1 JR03A
... ... ... ... ...
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
2024-06-15 19:00:00 deep_sea_vessel 6 3 LX050
flow_direction journey_direction handled_volume
vehicle_arrival_time
2024-05-27 17:00:00 import inbound NaN
2024-05-27 17:00:00 import outbound NaN
2024-05-27 17:00:00 export inbound 88.0
2024-05-27 17:00:00 export outbound NaN
2024-05-27 17:00:00 transshipment inbound NaN
... ... ... ...
2024-06-15 19:00:00 export outbound 34.0
2024-06-15 19:00:00 transshipment inbound NaN
2024-06-15 19:00:00 transshipment outbound 73.0
2024-06-15 19:00:00 undefined inbound NaN
2024-06-15 19:00:00 undefined outbound NaN
[72 rows x 7 columns]
Container Flow Adjustment By Vehicle Type Analysis Report
Analyze how many containers needed to change their initial container type. When containers are generated, in order to obey the maximum dwell time, the vehicle type that is used for onward transportation might change. The initial outbound vehicle type is the vehicle type that is drawn randomly for a container at the time of generation. The adjusted vehicle type is the vehicle type that is drawn in case no vehicle of the initial outbound vehicle type is left within the maximum dwell time.
initial vehicle type adjusted vehicle type transported capacity (in TEU) transported capacity (in boxes)
deep sea vessel deep sea vessel 499.5 307
deep sea vessel feeder 21.0 12
deep sea vessel barge 0.0 0
deep sea vessel train 0.0 0
deep sea vessel truck 17.0 11
feeder deep sea vessel 0.0 0
feeder feeder 237.8 146
feeder barge 0.0 0
feeder train 0.0 0
feeder truck 40.0 24
barge deep sea vessel 0.0 0
barge feeder 0.0 0
barge barge 0.0 0
barge train 0.0 0
barge truck 0.0 0
train deep sea vessel 10.0 7
train feeder 0.0 0
train barge 0.0 0
train train 119.2 78
train truck 62.0 37
truck deep sea vessel 0.0 0
truck feeder 0.0 0
truck barge 0.0 0
truck train 0.0 0
truck truck 199.8 126
(rounding errors might exist)
Container Flow Adjustment By Vehicle Type Analysis Summary Report
Analyse whether a container needed to change its vehicle type for the outbound journey and if that was the case, how many times which vehicle type was chosen in order to not exceed the maximum dwell time.
Capacity in TEU
vehicle type unchanged: 1056.2 (87.56%)
changed to deep sea vessel: 10.0 (0.83%)
changed to feeder: 21.0 (1.74%)
changed to barge: 0.0 (0.00%)
changed to train: 0.0 (0.00%)
changed to truck: 119.0 (9.87%)
(rounding errors might exist)
Container Flow Vehicle Type Adjustment Per Vehicle Analysis Report
Analyze how many of the containers loaded by a vehicle on its outbound journey have been originally destined for another vehicle type. Generally, it expected that such an adjustment should only occur occasionally in the beginning. Only towards the end, difficulties to find the desired vehicle type are expected, e.g., if a feeder delivers a container to be transshipped to a deep sea vessel but the last deep sea vessel has already departed, then the container must be placed on a vehicle of another type. If no vehicle is available, a corresponding truck is created to pick up the container from the terminal.
A large fraction of re-assigned containers before the end are considered noteworthy but depending on the input data it might be acceptable.
initial vehicle type = scheduled vehicles
adjusted vehicle type = scheduled vehicles
start date = none
end date = none
vehicle identifier fraction of adjusted containers (in containers)
feeder-LX050-1 0.0%
deep_sea_vessel-LX050-1 0.0%
deep_sea_vessel-LX050-2 0.0%
feeder-LX050-3 17.9%
feeder-LX050-2 0.0%
deep_sea_vessel-LX050-3 6.5%
train-JR03A-2 0.0%
train-JR03A-3 0.0%
truck-2024-06-17 22:31:03 100.0%
truck-2024-06-21 10:47:19 100.0%
truck-2024-06-19 09:09:06 100.0%
truck-2024-06-17 08:43:29 100.0%
truck-2024-06-18 15:08:20 100.0%
truck-2024-06-18 10:47:56 100.0%
truck-2024-06-18 17:09:53 100.0%
truck-2024-06-18 15:04:08 100.0%
truck-2024-06-26 06:04:09 100.0%
truck-2024-06-19 08:53:50 100.0%
truck-2024-07-01 05:09:41 100.0%
truck-2024-07-03 09:34:14 100.0%
truck-2024-06-18 13:22:49 100.0%
truck-2024-06-18 12:20:50 100.0%
truck-2024-06-19 10:24:59 100.0%
truck-2024-06-18 06:02:01 100.0%
truck-2024-06-20 19:17:35 100.0%
truck-2024-06-19 02:42:37 100.0%
truck-2024-06-17 03:46:30 100.0%
truck-2024-06-18 15:43:07 100.0%
truck-2024-06-20 14:23:17 100.0%
truck-2024-06-18 13:56:42 100.0%
truck-2024-06-19 00:16:35 100.0%
truck-2024-06-19 09:38:27 100.0%
truck-2024-06-27 11:25:53 100.0%
truck-2024-06-17 14:03:12 100.0%
truck-2024-06-17 06:57:22 100.0%
truck-2024-06-17 15:16:19 100.0%
truck-2024-06-17 07:22:16 100.0%
truck-2024-06-20 17:39:17 100.0%
truck-2024-06-17 10:42:45 100.0%
truck-2024-06-18 06:55:34 100.0%
truck-2024-06-20 11:41:31 100.0%
truck-2024-06-18 16:48:13 100.0%
truck-2024-06-17 20:03:45 100.0%
truck-2024-06-17 18:39:31 100.0%
truck-2024-06-17 09:18:52 100.0%
truck-2024-06-18 11:08:51 100.0%
truck-2024-06-17 17:32:52 100.0%
truck-2024-06-21 06:35:06 100.0%
truck-2024-06-18 10:06:03 100.0%
truck-2024-06-18 20:44:56 100.0%
truck-2024-06-26 16:17:45 100.0%
truck-2024-06-17 08:38:34 100.0%
truck-2024-06-19 20:34:25 100.0%
truck-2024-06-19 10:51:43 100.0%
truck-2024-06-17 10:10:02 100.0%
truck-2024-06-17 08:29:11 100.0%
truck-2024-06-19 05:06:25 100.0%
truck-2024-07-02 08:21:00 100.0%
truck-2024-06-17 19:09:33 100.0%
truck-2024-06-18 14:45:59 100.0%
truck-2024-06-25 17:06:27 100.0%
truck-2024-06-17 10:37:17 100.0%
truck-2024-06-19 05:44:23 100.0%
truck-2024-06-21 17:08:13 100.0%
truck-2024-06-18 09:39:36 100.0%
truck-2024-06-22 01:12:35 100.0%
truck-2024-06-18 12:12:55 100.0%
truck-2024-06-19 09:20:38 100.0%
truck-2024-06-21 17:53:31 100.0%
truck-2024-06-18 12:54:21 100.0%
truck-2024-06-19 03:37:42 100.0%
truck-2024-07-03 13:05:34 100.0%
truck-2024-06-25 07:42:54 100.0%
truck-2024-06-19 15:24:29 100.0%
truck-2024-06-18 20:37:19 100.0%
truck-2024-06-19 08:43:47 100.0%
truck-2024-06-17 10:17:10 100.0%
truck-2024-06-24 07:29:09 100.0%
truck-2024-06-25 15:12:48 100.0%
truck-2024-06-17 07:01:36 100.0%
(rounding errors might exist)
Modal Split Analysis Report
Analyze how many containers are delivered and picked up by which type of vehicle. This counts the containers in the yard, i.e., transshipment containers are not counted twice.
Role in network
transshipment traffic (in TEU): 303.00 (25.12%)
inland gateway traffic (in TEU): 903.25 (74.88%)
Modal split in hinterland traffic (only inbound traffic)
trucks (in TEU): 201.5 (43.31%)
barges (in TEU): 0.0 (0.00%)
trains (in TEU): 263.8 (56.69%)
Modal split in hinterland traffic (only outbound traffic)
trucks (in TEU): 318.8 (72.77%)
barges (in TEU): 0.0 (0.00%)
trains (in TEU): 119.2 (27.23%)
Modal split in hinterland traffic (both inbound and outbound traffic)
trucks (in TEU): 520.2 (57.60%)
barges (in TEU): 0.0 (0.00%)
trains (in TEU): 383.0 (42.40%)
(rounding errors might exist)
Container Dwell Time Analysis Report
Analyse the container dwell times. In the text version of the report, only the statistics are reported. In the visual version of the report, the dwell time distributions are plotted.
container is delivered by vehicle type = all
container picked up by vehicle type = all
storage requirement = all
number containers: 338
(reported in h)
minimum container dwell time: 11.0
average container dwell time: 127.2
maximum container dwell time: 579.0
standard deviation: 103.5
(rounding errors might exist)
Quay Side Throughput Analysis Report
Analyse the throughput at the quay side. In the text version of the report, only the statistics are reported. In the visual version of the report, the time series is plotted. There is no concept of handling times in the data generation process (as this is the task of the simulation or optimization model using this data on a later stage) and thus all containers are loaded and discharged at once. The impact of this fact is mitigated by averaging the data over certain time ranges.
(reported in boxes)
maximum weekly quay side throughput: 324
average weekly quay side throughput: 186.4
standard deviation: 170.8
maximum daily quay side throughput: 46.3
average daily quay side throughput: 26.6
maximum hourly quay side throughput: 1.9
average hourly quay side throughput: 1.1
(daily and hourly values are simply scaled weekly values, rounding errors might exist)
Truck Gate Throughput Analysis Report
Analyze the trucks entering through the truck gate at each hour. Based on this, the required truck gate capacity in containers boxes can be deduced. In the text version of the report, only the statistics are reported. In the visual version of the report, the time series is plotted.
(reported in boxes)
maximum hourly truck gate throughput: 7
average hourly truck gate throughput: 0.2
standard deviation: 0.7
(rounding errors might exist)
Yard Capacity Analysis Report
Analyse the used capacity in the yard. For each hour, the containers entering and leaving the yard are checked. Based on this, the required yard capacity in TEU can be deduced. In the text version of the report, only the statistics are reported. In the visual version of the report, the time series is plotted. There is no concept of handling times in the data generation process (as this is the task of the simulation or optimization model using this data on a later stage) and thus all containers are loaded and discharged at once. Thus, the yard utilization shows certain peaks that will most likely not occur, especially if the discharging and loading process of a vessel is parallelized.
storage requirement = all
(reported in TEU)
maximum used yard capacity: 314.5
average used yard capacity: 108.7
standard deviation: 118.8
(rounding errors might exist)
Outbound To Inbound Vehicle Capacity Utilization Analysis Report
Analyze the used vehicle capacity for each vehicle for the inbound and outbound journeys. Generally, it expected to reach an equilibrium - each vehicle should approximately pick up as many containers at the container terminal as it has delivered. Great disparities between the transported capacities on the inbound and outbound journey are considered noteworthy but depending on the input data it might be acceptable. Trucks are excluded from this analysis.
vehicle type = scheduled vehicles
start date = none
end date = none
vehicle identifier inbound volume (in TEU) outbound volume (in TEU)
train-JR03A-1 90.0 0.0
train-JR03A-2 90.0 53.0
train-JR03A-3 90.0 66.2
deep_sea_vessel-LX050-1 150.0 153.2
deep_sea_vessel-LX050-2 150.0 176.5
deep_sea_vessel-LX050-3 150.0 179.8
feeder-LX050-1 100.0 57.0
feeder-LX050-2 100.0 91.8
feeder-LX050-3 100.0 110.0
(rounding errors might exist)
All analyses have been run.
Restricting Analyses
Some analyses can be restricted to a certain subset of the containers. These are not all covered by the convenience functions.
Here, only the used yard capacity for reefers is shown.
[8]:
yard_capacity_analysis_report = conflowgen.YardCapacityAnalysisReport()
with plt.style.context(preferred_matplotlib_style):
yard_capacity_analysis_report.get_report_as_graph(
storage_requirement=conflowgen.StorageRequirement.reefer
)
plt.show()
Here, the used yard capacity for standard containers and dangerous goods containers is shown.
[9]:
with plt.style.context(preferred_matplotlib_style):
yard_capacity_analysis_report.get_report_as_graph(
storage_requirement=[
conflowgen.StorageRequirement.standard,
conflowgen.StorageRequirement.dangerous_goods,
]
)
plt.show()
This of course also works for the text reports:
[10]:
outbound_to_inbound_vehicle_capacity_utilization_report = (
conflowgen.OutboundToInboundVehicleCapacityUtilizationAnalysisReport()
)
print(
outbound_to_inbound_vehicle_capacity_utilization_report.get_report_as_text(
vehicle_type={
conflowgen.ModeOfTransport.deep_sea_vessel,
conflowgen.ModeOfTransport.feeder,
}
)
)
vehicle type = deep_sea_vessel & feeder
start date = none
end date = none
vehicle identifier inbound volume (in TEU) outbound volume (in TEU)
deep_sea_vessel-LX050-1 150.0 153.2
deep_sea_vessel-LX050-2 150.0 176.5
deep_sea_vessel-LX050-3 150.0 179.8
feeder-LX050-1 100.0 57.0
feeder-LX050-2 100.0 91.8
feeder-LX050-3 100.0 110.0
(rounding errors might exist)
In some cases, even several filters can be combined.
[11]:
container_dwell_time_report = conflowgen.ContainerDwellTimeAnalysisReport()
with plt.style.context(preferred_matplotlib_style):
container_dwell_time_report.get_report_as_graph(
container_delivered_by_vehicle_type={
conflowgen.ModeOfTransport.deep_sea_vessel,
conflowgen.ModeOfTransport.feeder,
},
storage_requirement=conflowgen.StorageRequirement.empty,
)
plt.show()
The same pattern of restricting the output to certain vehicle or container types is usable for other analyses in case you spot the corresponding keyword arguments in Running analyses.
Formulating Your Own Analyses
An analysis is a description of what the output actually looks like. Some analyses are already shipped with ConFlowGen and more are planned in the future. If you have an idea for an analysis that might be worth sharing, please have a look at Contributing. In addition, it might be good to cross-check the output data separately. This can be done with spreadsheet calculations or programmatically with e.g. pandas An example for that you can find in the repository.