{
"benchmark_id": "001_synthetic_mine_throughput",
"scenarios": {
"baseline": {
"scenario_id": "baseline",
"replications": 30,
"shift_length_hours": 8.0,
"truck_count": 8,
"total_tonnes_mean": 12053.333333333334,
"total_tonnes_ci95_low": 11999.86221715823,
"total_tonnes_ci95_high": 12106.804449508438,
"tonnes_per_hour_mean": 1506.6666666666667,
"tonnes_per_hour_ci95_low": 1499.9827771447788,
"tonnes_per_hour_ci95_high": 1513.3505561885547,
"average_cycle_time_min": 30.83471217944534,
"average_cycle_time_ci95_low": 30.706177481293416,
"average_cycle_time_ci95_high": 30.963246877597264,
"truck_utilisation_mean": 0.7454385666707473,
"truck_utilisation_ci95_low": 0.7431546235874017,
"truck_utilisation_ci95_high": 0.7477225097540928,
"loader_utilisation": {
"L_N": 0.5769308943592031,
"L_S": 0.7658085817724645
},
"crusher_utilisation": 0.882987054398826,
"crusher_utilisation_ci95_low": 0.8776316036659338,
"crusher_utilisation_ci95_high": 0.8883425051317181,
"average_loader_queue_time_min": 2.2263166282083025,
"average_loader_queue_time_ci95_low": 2.140827009600442,
"average_loader_queue_time_ci95_high": 2.311806246816163,
"average_crusher_queue_time_min": 2.6220646326577763,
"average_crusher_queue_time_ci95_low": 2.4861617956812525,
"average_crusher_queue_time_ci95_high": 2.7579674696343,
"lane_utilisation": {
"E03": 0.053158739313844586,
"E05": 0.7430118182622204,
"E07": 0.3959563783485382,
"E09": 0.741384099966557
},
"lane_queue_wait_min": {
"E03": 10.858938051374993,
"E05": 0.5911026704898509,
"E07": 0.1532652689003596,
"E09": 0.7842280570104824
},
"cycles_completed_mean": 120.53333333333333,
"top_bottlenecks": [
{
"resource": "crusher",
"type": "crusher",
"utilisation": 0.882987054398826
},
{
"resource": "loader:L_S",
"type": "loader",
"utilisation": 0.7658085817724645
},
{
"resource": "lane:E05",
"type": "lane",
"utilisation": 0.7430118182622204,
"queue_wait_mean_min": 0.5911026704898509
},
{
"resource": "lane:E09",
"type": "lane",
"utilisation": 0.741384099966557,
"queue_wait_mean_min": 0.7842280570104824
},
{
"resource": "loader:L_N",
"type": "loader",
"utilisation": 0.5769308943592031
}
]
},
"trucks_4": {
"scenario_id": "trucks_4",
"replications": 30,
"shift_length_hours": 8.0,
"truck_count": 4,
"total_tonnes_mean": 7506.666666666667,
"total_tonnes_ci95_low": 7474.242132570562,
"total_tonnes_ci95_high": 7539.091200762772,
"tonnes_per_hour_mean": 938.3333333333334,
"tonnes_per_hour_ci95_low": 934.2802665713202,
"tonnes_per_hour_ci95_high": 942.3864000953465,
"average_cycle_time_min": 24.924030182345305,
"average_cycle_time_ci95_low": 24.82574643289684,
"average_cycle_time_ci95_high": 25.02231393179377,
"truck_utilisation_mean": 0.909290664033979,
"truck_utilisation_ci95_low": 0.9060925313926115,
"truck_utilisation_ci95_high": 0.9124887966753464,
"loader_utilisation": {
"L_N": 0.3146441653032857,
"L_S": 0.5072425740323847
},
"crusher_utilisation": 0.5459399733405583,
"crusher_utilisation_ci95_low": 0.5407842993051504,
"crusher_utilisation_ci95_high": 0.5510956473759663,
"average_loader_queue_time_min": 0.6004430340040191,
"average_loader_queue_time_ci95_low": 0.5487135216336421,
"average_loader_queue_time_ci95_high": 0.6521725463743961,
"average_crusher_queue_time_min": 0.5789509223214492,
"average_crusher_queue_time_ci95_low": 0.5434433594532,
"average_crusher_queue_time_ci95_high": 0.6144584851896984,
"lane_utilisation": {
"E03": 0.026318468596303015,
"E05": 0.46254412841256803,
"E07": 0.214036899699602,
"E09": 0.48748233132602664
},
"lane_queue_wait_min": {
"E03": 4.542996376542272,
"E05": 0.22483790054358924,
"E07": 0.015283110708934665,
"E09": 0.18296076857533525
},
"cycles_completed_mean": 75.06666666666666,
"top_bottlenecks": [
{
"resource": "crusher",
"type": "crusher",
"utilisation": 0.5459399733405583
},
{
"resource": "loader:L_S",
"type": "loader",
"utilisation": 0.5072425740323847
},
{
"resource": "lane:E09",
"type": "lane",
"utilisation": 0.48748233132602664,
"queue_wait_mean_min": 0.18296076857533525
},
{
"resource": "lane:E05",
"type": "lane",
"utilisation": 0.46254412841256803,
"queue_wait_mean_min": 0.22483790054358924
},
{
"resource": "loader:L_N",
"type": "loader",
"utilisation": 0.3146441653032857
}
]
},
"trucks_12": {
"scenario_id": "trucks_12",
"replications": 30,
"shift_length_hours": 8.0,
"truck_count": 12,
"total_tonnes_mean": 12850.0,
"total_tonnes_ci95_low": 12766.936848877007,
"total_tonnes_ci95_high": 12933.063151122993,
"tonnes_per_hour_mean": 1606.25,
"tonnes_per_hour_ci95_low": 1595.8671061096259,
"tonnes_per_hour_ci95_high": 1616.6328938903741,
"average_cycle_time_min": 42.894028555535414,
"average_cycle_time_ci95_low": 42.646313016573664,
"average_cycle_time_ci95_high": 43.14174409449716,
"truck_utilisation_mean": 0.542184086907304,
"truck_utilisation_ci95_low": 0.5393508276770271,
"truck_utilisation_ci95_high": 0.5450173461375809,
"loader_utilisation": {
"L_N": 0.6303512378692259,
"L_S": 0.844196269610132
},
"crusher_utilisation": 0.9309183526608761,
"crusher_utilisation_ci95_low": 0.9288894670405459,
"crusher_utilisation_ci95_high": 0.9329472382812063,
"average_loader_queue_time_min": 3.1228228866804018,
"average_loader_queue_time_ci95_low": 2.987865119011713,
"average_loader_queue_time_ci95_high": 3.2577806543490904,
"average_crusher_queue_time_min": 11.597073529968876,
"average_crusher_queue_time_ci95_low": 11.188822381494061,
"average_crusher_queue_time_ci95_high": 12.00532467844369,
"lane_utilisation": {
"E03": 0.07939026425801327,
"E05": 0.8013923677806807,
"E07": 0.4247033323607008,
"E09": 0.8156199865641057
},
"lane_queue_wait_min": {
"E03": 17.124822200537583,
"E05": 0.7757831545717073,
"E07": 0.20935050103316194,
"E09": 1.3510202029998255
},
"cycles_completed_mean": 128.5,
"top_bottlenecks": [
{
"resource": "crusher",
"type": "crusher",
"utilisation": 0.9309183526608761
},
{
"resource": "loader:L_S",
"type": "loader",
"utilisation": 0.844196269610132
},
{
"resource": "lane:E09",
"type": "lane",
"utilisation": 0.8156199865641057,
"queue_wait_mean_min": 1.3510202029998255
},
{
"resource": "lane:E05",
"type": "lane",
"utilisation": 0.8013923677806807,
"queue_wait_mean_min": 0.7757831545717073
},
{
"resource": "loader:L_N",
"type": "loader",
"utilisation": 0.6303512378692259
}
]
},
"ramp_upgrade": {
"scenario_id": "ramp_upgrade",
"replications": 30,
"shift_length_hours": 8.0,
"truck_count": 8,
"total_tonnes_mean": 12003.333333333334,
"total_tonnes_ci95_low": 11949.19203358018,
"total_tonnes_ci95_high": 12057.474633086487,
"tonnes_per_hour_mean": 1500.4166666666667,
"tonnes_per_hour_ci95_low": 1493.6490041975226,
"tonnes_per_hour_ci95_high": 1507.184329135811,
"average_cycle_time_min": 30.98227455124125,
"average_cycle_time_ci95_low": 30.848022915135058,
"average_cycle_time_ci95_high": 31.116526187347443,
"truck_utilisation_mean": 0.7389717856269374,
"truck_utilisation_ci95_low": 0.7363846272953292,
"truck_utilisation_ci95_high": 0.7415589439585457,
"loader_utilisation": {
"L_N": 0.5729245840441519,
"L_S": 0.7686061537462864
},
"crusher_utilisation": 0.8764926553105953,
"crusher_utilisation_ci95_low": 0.86923814873716,
"crusher_utilisation_ci95_high": 0.8837471618840306,
"average_loader_queue_time_min": 2.613201467375332,
"average_loader_queue_time_ci95_low": 2.5008135629907846,
"average_loader_queue_time_ci95_high": 2.725589371759879,
"average_crusher_queue_time_min": 2.6276100015673958,
"average_crusher_queue_time_ci95_low": 2.4706034182562253,
"average_crusher_queue_time_ci95_high": 2.7846165848785662,
"lane_utilisation": {
"E05": 0.7382383548879137,
"E07": 0.3892108237689071,
"E09": 0.7451767741671887
},
"lane_queue_wait_min": {
"E05": 0.5886428319564101,
"E07": 0.14408995307054598,
"E09": 1.1380216526373104
},
"cycles_completed_mean": 120.03333333333333,
"top_bottlenecks": [
{
"resource": "crusher",
"type": "crusher",
"utilisation": 0.8764926553105953
},
{
"resource": "loader:L_S",
"type": "loader",
"utilisation": 0.7686061537462864
},
{
"resource": "lane:E09",
"type": "lane",
"utilisation": 0.7451767741671887,
"queue_wait_mean_min": 1.1380216526373104
},
{
"resource": "lane:E05",
"type": "lane",
"utilisation": 0.7382383548879137,
"queue_wait_mean_min": 0.5886428319564101
},
{
"resource": "loader:L_N",
"type": "loader",
"utilisation": 0.5729245840441519
}
]
},
"crusher_slowdown": {
"scenario_id": "crusher_slowdown",
"replications": 30,
"shift_length_hours": 8.0,
"truck_count": 8,
"total_tonnes_mean": 6483.333333333333,
"total_tonnes_ci95_low": 6424.428521211441,
"total_tonnes_ci95_high": 6542.238145455225,
"tonnes_per_hour_mean": 810.4166666666666,
"tonnes_per_hour_ci95_low": 803.0535651514301,
"tonnes_per_hour_ci95_high": 817.7797681819031,
"average_cycle_time_min": 55.67853058653718,
"average_cycle_time_ci95_low": 55.18033209575651,
"average_cycle_time_ci95_high": 56.176729077317844,
"truck_utilisation_mean": 0.4832957440546345,
"truck_utilisation_ci95_low": 0.4802355362445513,
"truck_utilisation_ci95_high": 0.4863559518647177,
"loader_utilisation": {
"L_N": 0.3161056460953965,
"L_S": 0.44973346110683815
},
"crusher_utilisation": 0.9436400477706883,
"crusher_utilisation_ci95_low": 0.9418914586657517,
"crusher_utilisation_ci95_high": 0.9453886368756249,
"average_loader_queue_time_min": 0.4037488382968074,
"average_loader_queue_time_ci95_low": 0.364965456014147,
"average_loader_queue_time_ci95_high": 0.44253222057946784,
"average_crusher_queue_time_min": 26.07606421359441,
"average_crusher_queue_time_ci95_low": 25.635141597673517,
"average_crusher_queue_time_ci95_high": 26.516986829515304,
"lane_utilisation": {
"E03": 0.053158739313844586,
"E05": 0.4135831483154142,
"E07": 0.21646972656823465,
"E09": 0.4340125112556904
},
"lane_queue_wait_min": {
"E03": 10.858938051374993,
"E05": 0.2630220330098984,
"E07": 0.018369348585082042,
"E09": 0.3809925452536477
},
"cycles_completed_mean": 64.83333333333333,
"top_bottlenecks": [
{
"resource": "crusher",
"type": "crusher",
"utilisation": 0.9436400477706883
},
{
"resource": "loader:L_S",
"type": "loader",
"utilisation": 0.44973346110683815
},
{
"resource": "lane:E09",
"type": "lane",
"utilisation": 0.4340125112556904,
"queue_wait_mean_min": 0.3809925452536477
},
{
"resource": "lane:E05",
"type": "lane",
"utilisation": 0.4135831483154142,
"queue_wait_mean_min": 0.2630220330098984
},
{
"resource": "loader:L_N",
"type": "loader",
"utilisation": 0.3161056460953965
}
]
},
"ramp_closed": {
"scenario_id": "ramp_closed",
"replications": 30,
"shift_length_hours": 8.0,
"truck_count": 8,
"total_tonnes_mean": 11953.333333333334,
"total_tonnes_ci95_low": 11900.769085346585,
"total_tonnes_ci95_high": 12005.897581320083,
"tonnes_per_hour_mean": 1494.1666666666667,
"tonnes_per_hour_ci95_low": 1487.596135668323,
"tonnes_per_hour_ci95_high": 1500.7371976650104,
"average_cycle_time_min": 31.08193710559466,
"average_cycle_time_ci95_low": 30.950602877723306,
"average_cycle_time_ci95_high": 31.21327133346601,
"truck_utilisation_mean": 0.7437997300067547,
"truck_utilisation_ci95_low": 0.7414356173938205,
"truck_utilisation_ci95_high": 0.7461638426196889,
"loader_utilisation": {
"L_N": 0.5701927439952096,
"L_S": 0.7647612112299295
},
"crusher_utilisation": 0.8667282434781332,
"crusher_utilisation_ci95_low": 0.8615585895837045,
"crusher_utilisation_ci95_high": 0.8718978973725618,
"average_loader_queue_time_min": 2.614733347278993,
"average_loader_queue_time_ci95_low": 2.519303464860778,
"average_loader_queue_time_ci95_high": 2.7101632296972076,
"average_crusher_queue_time_min": 2.5301827809139743,
"average_crusher_queue_time_ci95_low": 2.3845892635687687,
"average_crusher_queue_time_ci95_high": 2.67577629825918,
"lane_utilisation": {
"E05": 0.7363147441434863,
"E07": 0.3905773229168939,
"E09": 0.7410305740140946
},
"lane_queue_wait_min": {
"E05": 0.5889014768266161,
"E07": 0.15251787134531364,
"E09": 1.1104682950087685
},
"cycles_completed_mean": 119.53333333333333,
"top_bottlenecks": [
{
"resource": "crusher",
"type": "crusher",
"utilisation": 0.8667282434781332
},
{
"resource": "loader:L_S",
"type": "loader",
"utilisation": 0.7647612112299295
},
{
"resource": "lane:E09",
"type": "lane",
"utilisation": 0.7410305740140946,
"queue_wait_mean_min": 1.1104682950087685
},
{
"resource": "lane:E05",
"type": "lane",
"utilisation": 0.7363147441434863,
"queue_wait_mean_min": 0.5889014768266161
},
{
"resource": "loader:L_N",
"type": "loader",
"utilisation": 0.5701927439952096
}
]
},
"trucks_10": {
"scenario_id": "trucks_10",
"replications": 30,
"shift_length_hours": 8.0,
"truck_count": 10,
"total_tonnes_mean": 12786.666666666666,
"total_tonnes_ci95_low": 12695.869498282636,
"total_tonnes_ci95_high": 12877.463835050696,
"tonnes_per_hour_mean": 1598.3333333333333,
"tonnes_per_hour_ci95_low": 1586.9836872853296,
"tonnes_per_hour_ci95_high": 1609.682979381337,
"average_cycle_time_min": 36.178993405775856,
"average_cycle_time_ci95_low": 35.9361763740341,
"average_cycle_time_ci95_high": 36.421810437517614,
"truck_utilisation_mean": 0.6373315398130805,
"truck_utilisation_ci95_low": 0.6339427514178723,
"truck_utilisation_ci95_high": 0.6407203282082888,
"loader_utilisation": {
"L_N": 0.6091479589314296,
"L_S": 0.8300074358380791
},
"crusher_utilisation": 0.9301349000865957,
"crusher_utilisation_ci95_low": 0.9280558880958585,
"crusher_utilisation_ci95_high": 0.932213912077333,
"average_loader_queue_time_min": 2.7328192744167574,
"average_loader_queue_time_ci95_low": 2.605836866960265,
"average_loader_queue_time_ci95_high": 2.85980168187325,
"average_crusher_queue_time_min": 6.313787496299098,
"average_crusher_queue_time_ci95_low": 5.987797480096772,
"average_crusher_queue_time_ci95_high": 6.639777512501425,
"lane_utilisation": {
"E03": 0.06640437413205989,
"E05": 0.7893719944915271,
"E07": 0.4159107622738426,
"E09": 0.804347922918103
},
"lane_queue_wait_min": {
"E03": 14.171503622583373,
"E05": 0.7035699836531341,
"E07": 0.18575354623359344,
"E09": 1.155081150034462
},
"cycles_completed_mean": 127.86666666666666,
"top_bottlenecks": [
{
"resource": "crusher",
"type": "crusher",
"utilisation": 0.9301349000865957
},
{
"resource": "loader:L_S",
"type": "loader",
"utilisation": 0.8300074358380791
},
{
"resource": "lane:E09",
"type": "lane",
"utilisation": 0.804347922918103,
"queue_wait_mean_min": 1.155081150034462
},
{
"resource": "lane:E05",
"type": "lane",
"utilisation": 0.7893719944915271,
"queue_wait_mean_min": 0.7035699836531341
},
{
"resource": "loader:L_N",
"type": "loader",
"utilisation": 0.6091479589314296
}
]
}
},
"key_assumptions": [
"Trucks start the shift at PARK and dispatch immediately.",
"Loading and dumping times are normal-truncated using means/SDs from the data; lower bound = max(0.05 min, mean - 3 SD).",
"Travel times are nominal distance/speed adjusted by truck loaded/empty speed factor, perturbed multiplicatively by a lognormal noise with CV from scenario stochasticity.travel_time_noise_cv.",
"Edges with capacity < 999 are modelled as SimPy resources. Edges sharing a lane id (same prefix before the first underscore, e.g. E03_UP and E03_DOWN) share a single physical-lane resource because the data flags them as the same physical constraint.",
"Routing uses NetworkX shortest-time paths over the directed road graph. Closed edges are removed from the graph before routing.",
"Dispatch policy: nearest_available_loader; tiebreaker: shortest expected cycle time. Expected cycle time considers travel, service, and queue at the candidate loader.",
"Throughput counts only completed dump events at CRUSH within the 8-hour shift.",
"Trucks do not refuel or visit maintenance during the shift; the MAINT node is in the topology but unused under baseline dispatching.",
"Waste haulage is excluded from baseline analysis (no waste cycles dispatched).",
"Fleet is homogeneous: 100 t payload, 1.00 empty / 0.85 loaded speed factors."
],
"model_limitations": [
"No truck breakdowns or maintenance interruptions.",
"No driver shift changes or breaks within the 8-hour shift.",
"Crusher is always available; no crusher downtime / chute-blocked events.",
"No congestion model on uncapacitated edges (capacity=999); only single-lane segments queue.",
"Loaders are always available; no operator changes or refuelling.",
"Truck cycles are assumed to start at PARK and end mid-cycle when the shift clock expires; tonnes in-flight at shift end are not counted.",
"Routing is static (computed once on the open graph); no dynamic re-routing in response to congestion."
],
"additional_scenarios_proposed": [
"trucks_10: an interpolated fleet point between 8 and 12 to confirm saturation, executed alongside the required scenarios when --extras is passed."
]
}summary.json
← Back to submission · View raw on GitHub