{
"benchmark_id": "001_synthetic_mine_throughput",
"scenarios": {
"baseline": {
"description": "Baseline 8-hour ore haulage shift",
"replications": 30,
"shift_length_hours": 8.0,
"total_tonnes_mean": 12953.3,
"total_tonnes_ci95_low": 12872.0,
"total_tonnes_ci95_high": 13034.6,
"tonnes_per_hour_mean": 1619.17,
"tonnes_per_hour_ci95_low": 1609.0,
"tonnes_per_hour_ci95_high": 1629.33,
"average_cycle_time_min": 28.08,
"truck_utilisation_mean": 0.8081,
"loader_utilisation": {
"L_N": 0.7009,
"L_S": 0.7694
},
"crusher_utilisation": 0.944,
"average_loader_queue_time_min": 0.714,
"average_crusher_queue_time_min": 4.328,
"mean_dumps": 129.5,
"top_bottlenecks": [
{
"resource_id": "D_CRUSH",
"kind": "crusher",
"mean_utilisation": 0.944,
"mean_queue_time_min": 4.328
},
{
"resource_id": "L_S",
"kind": "loader",
"mean_utilisation": 0.7694,
"mean_queue_time_min": 0.776
},
{
"resource_id": "L_N",
"kind": "loader",
"mean_utilisation": 0.7009,
"mean_queue_time_min": 0.618
},
{
"resource_id": "E05_TO_CRUSH",
"kind": "road",
"mean_utilisation": 0.4375,
"mean_queue_time_min": 0.177
},
{
"resource_id": "E09_FROM_LOAD_S",
"kind": "road",
"mean_utilisation": 0.3996,
"mean_queue_time_min": 0.004
}
]
},
"trucks_4": {
"description": "Lower fleet size sensitivity",
"replications": 30,
"shift_length_hours": 8.0,
"total_tonnes_mean": 7753.3,
"total_tonnes_ci95_low": 7727.9,
"total_tonnes_ci95_high": 7778.8,
"tonnes_per_hour_mean": 969.17,
"tonnes_per_hour_ci95_low": 965.99,
"tonnes_per_hour_ci95_high": 972.35,
"average_cycle_time_min": 23.75,
"truck_utilisation_mean": 0.9572,
"loader_utilisation": {
"L_N": 0.4011,
"L_S": 0.4773
},
"crusher_utilisation": 0.5598,
"average_loader_queue_time_min": 0.265,
"average_crusher_queue_time_min": 0.553,
"mean_dumps": 77.5,
"top_bottlenecks": [
{
"resource_id": "D_CRUSH",
"kind": "crusher",
"mean_utilisation": 0.5598,
"mean_queue_time_min": 0.553
},
{
"resource_id": "L_S",
"kind": "loader",
"mean_utilisation": 0.4773,
"mean_queue_time_min": 0.328
},
{
"resource_id": "L_N",
"kind": "loader",
"mean_utilisation": 0.4011,
"mean_queue_time_min": 0.16
},
{
"resource_id": "E05_TO_CRUSH",
"kind": "road",
"mean_utilisation": 0.26,
"mean_queue_time_min": 0.079
},
{
"resource_id": "E09_FROM_LOAD_S",
"kind": "road",
"mean_utilisation": 0.2466,
"mean_queue_time_min": 0.001
}
]
},
"trucks_12": {
"description": "Higher fleet size sensitivity",
"replications": 30,
"shift_length_hours": 8.0,
"total_tonnes_mean": 13033.3,
"total_tonnes_ci95_low": 12924.0,
"total_tonnes_ci95_high": 13142.7,
"tonnes_per_hour_mean": 1629.17,
"tonnes_per_hour_ci95_low": 1615.5,
"tonnes_per_hour_ci95_high": 1642.83,
"average_cycle_time_min": 40.76,
"truck_utilisation_mean": 0.5573,
"loader_utilisation": {
"L_N": 0.7267,
"L_S": 0.794
},
"crusher_utilisation": 0.9502,
"average_loader_queue_time_min": 1.565,
"average_crusher_queue_time_min": 16.472,
"mean_dumps": 130.3,
"top_bottlenecks": [
{
"resource_id": "D_CRUSH",
"kind": "crusher",
"mean_utilisation": 0.9502,
"mean_queue_time_min": 16.472
},
{
"resource_id": "L_S",
"kind": "loader",
"mean_utilisation": 0.794,
"mean_queue_time_min": 1.656
},
{
"resource_id": "L_N",
"kind": "loader",
"mean_utilisation": 0.7267,
"mean_queue_time_min": 1.422
},
{
"resource_id": "E05_TO_CRUSH",
"kind": "road",
"mean_utilisation": 0.4521,
"mean_queue_time_min": 0.186
},
{
"resource_id": "E09_FROM_LOAD_S",
"kind": "road",
"mean_utilisation": 0.4156,
"mean_queue_time_min": 0.003
}
]
},
"ramp_upgrade": {
"description": "Upgrade the narrow main ramp",
"replications": 30,
"shift_length_hours": 8.0,
"total_tonnes_mean": 12983.3,
"total_tonnes_ci95_low": 12910.6,
"total_tonnes_ci95_high": 13056.1,
"tonnes_per_hour_mean": 1622.92,
"tonnes_per_hour_ci95_low": 1613.82,
"tonnes_per_hour_ci95_high": 1632.01,
"average_cycle_time_min": 28.11,
"truck_utilisation_mean": 0.8073,
"loader_utilisation": {
"L_N": 0.7026,
"L_S": 0.7693
},
"crusher_utilisation": 0.9468,
"average_loader_queue_time_min": 0.827,
"average_crusher_queue_time_min": 4.33,
"mean_dumps": 129.8,
"top_bottlenecks": [
{
"resource_id": "D_CRUSH",
"kind": "crusher",
"mean_utilisation": 0.9468,
"mean_queue_time_min": 4.33
},
{
"resource_id": "L_S",
"kind": "loader",
"mean_utilisation": 0.7693,
"mean_queue_time_min": 0.967
},
{
"resource_id": "L_N",
"kind": "loader",
"mean_utilisation": 0.7026,
"mean_queue_time_min": 0.608
},
{
"resource_id": "E05_TO_CRUSH",
"kind": "road",
"mean_utilisation": 0.4372,
"mean_queue_time_min": 0.172
},
{
"resource_id": "E09_FROM_LOAD_S",
"kind": "road",
"mean_utilisation": 0.3995,
"mean_queue_time_min": 0.005
}
]
},
"crusher_slowdown": {
"description": "Slower crusher dumping process",
"replications": 30,
"shift_length_hours": 8.0,
"total_tonnes_mean": 6513.3,
"total_tonnes_ci95_low": 6440.8,
"total_tonnes_ci95_high": 6585.9,
"tonnes_per_hour_mean": 814.17,
"tonnes_per_hour_ci95_low": 805.1,
"tonnes_per_hour_ci95_high": 823.24,
"average_cycle_time_min": 54.07,
"truck_utilisation_mean": 0.4896,
"loader_utilisation": {
"L_N": 0.3718,
"L_S": 0.4096
},
"crusher_utilisation": 0.947,
"average_loader_queue_time_min": 0.363,
"average_crusher_queue_time_min": 27.489,
"mean_dumps": 65.1,
"top_bottlenecks": [
{
"resource_id": "D_CRUSH",
"kind": "crusher",
"mean_utilisation": 0.947,
"mean_queue_time_min": 27.489
},
{
"resource_id": "L_S",
"kind": "loader",
"mean_utilisation": 0.4096,
"mean_queue_time_min": 0.281
},
{
"resource_id": "L_N",
"kind": "loader",
"mean_utilisation": 0.3718,
"mean_queue_time_min": 0.497
},
{
"resource_id": "E05_TO_CRUSH",
"kind": "road",
"mean_utilisation": 0.234,
"mean_queue_time_min": 0.153
},
{
"resource_id": "E09_FROM_LOAD_S",
"kind": "road",
"mean_utilisation": 0.2143,
"mean_queue_time_min": 0.001
}
]
},
"ramp_closed": {
"description": "Main ramp unavailable; traffic should reroute via bypass if possible",
"replications": 30,
"shift_length_hours": 8.0,
"total_tonnes_mean": 12803.3,
"total_tonnes_ci95_low": 12726.4,
"total_tonnes_ci95_high": 12880.2,
"tonnes_per_hour_mean": 1600.42,
"tonnes_per_hour_ci95_low": 1590.81,
"tonnes_per_hour_ci95_high": 1610.03,
"average_cycle_time_min": 28.34,
"truck_utilisation_mean": 0.8021,
"loader_utilisation": {
"L_N": 0.6956,
"L_S": 0.7566
},
"crusher_utilisation": 0.9413,
"average_loader_queue_time_min": 0.845,
"average_crusher_queue_time_min": 4.566,
"mean_dumps": 128.0,
"top_bottlenecks": [
{
"resource_id": "D_CRUSH",
"kind": "crusher",
"mean_utilisation": 0.9413,
"mean_queue_time_min": 4.566
},
{
"resource_id": "L_S",
"kind": "loader",
"mean_utilisation": 0.7566,
"mean_queue_time_min": 0.807
},
{
"resource_id": "L_N",
"kind": "loader",
"mean_utilisation": 0.6956,
"mean_queue_time_min": 0.908
},
{
"resource_id": "E05_TO_CRUSH",
"kind": "road",
"mean_utilisation": 0.4309,
"mean_queue_time_min": 0.179
},
{
"resource_id": "E09_FROM_LOAD_S",
"kind": "road",
"mean_utilisation": 0.3973,
"mean_queue_time_min": 0.003
}
]
},
"crusher_debottleneck": {
"description": "Agent-proposed scenario. Relieve the identified crusher-complex bottleneck by adding a second crusher dump bay and a second crusher-approach lane (D_CRUSH and E05 raised to capacity 2). Used to quantify the throughput upside of debottlenecking the crusher rather than adding more trucks.\n",
"replications": 30,
"shift_length_hours": 8.0,
"total_tonnes_mean": 14853.3,
"total_tonnes_ci95_low": 14804.6,
"total_tonnes_ci95_high": 14902.1,
"tonnes_per_hour_mean": 1856.67,
"tonnes_per_hour_ci95_low": 1850.57,
"tonnes_per_hour_ci95_high": 1862.76,
"average_cycle_time_min": 24.68,
"truck_utilisation_mean": 0.9124,
"loader_utilisation": {
"L_N": 0.7533,
"L_S": 0.8981
},
"crusher_utilisation": 0.543,
"average_loader_queue_time_min": 1.69,
"average_crusher_queue_time_min": 0.047,
"mean_dumps": 148.5,
"top_bottlenecks": [
{
"resource_id": "L_S",
"kind": "loader",
"mean_utilisation": 0.8981,
"mean_queue_time_min": 2.261
},
{
"resource_id": "L_N",
"kind": "loader",
"mean_utilisation": 0.7533,
"mean_queue_time_min": 0.707
},
{
"resource_id": "D_CRUSH",
"kind": "crusher",
"mean_utilisation": 0.543,
"mean_queue_time_min": 0.047
},
{
"resource_id": "E09_FROM_LOAD_S",
"kind": "road",
"mean_utilisation": 0.4693,
"mean_queue_time_min": 0.008
},
{
"resource_id": "E09_TO_LOAD_S",
"kind": "road",
"mean_utilisation": 0.4088,
"mean_queue_time_min": 0.201
}
]
}
},
"key_assumptions": [
"Trucks start the shift at the parking area (PARK) empty and are dispatched to a loader; thereafter they cycle loader<->crusher and are not returned to PARK, so the narrow ramp E03 is only traversed during initial positioning.",
"Ore is hauled only to the primary crusher (CRUSH); the waste dump and maintenance bay are outside the modelled ore-production boundary.",
"Loading and dumping times are truncated-normal with the means/SDs in the data; per-edge travel time has multiplicative log-normal noise (mean 1, CV 0.10) on top of distance / (max_speed x truck speed factor).",
"Capacity-1 road segments (ramp, crusher approach, pit access roads) are single-server SimPy resources; the two directions of each physical road are modelled as independent one-way resources, matching the data's separate-edge representation.",
"All trucks and loaders have availability 1.0 in the data, so no breakdowns or refuelling are modelled.",
"Dispatch is nearest-available-loader (travel + queue-aware wait), tie-broken by shortest expected cycle time, per the baseline config.",
"warmup_minutes is 0 in every supplied scenario, so the full 8-hour shift (including the start-up transient) is measured, matching a whole-shift tonnage question."
],
"model_limitations": [
"Given the supplied topology the narrow ramp is NOT on the loaded-haul cycle, so ramp upgrade/closure affect throughput only via start-of-shift positioning; the recurring bottleneck is the crusher complex.",
"Bidirectional single-lane roads are modelled as two independent one-way capacity-1 resources, which understates head-on contention (acceptable here because flows are directional per leg).",
"No grade/rimpull engine: speed limits come straight from the edge data via a single loaded speed factor (0.85), not from a physics-based haul model.",
"Loaders and the crusher are simple single servers with no spotting time, shift breaks, blast windows, weather or operator variability.",
"Truck utilisation counts only productive time (travel + load + dump); time queued at a resource is treated as non-productive idle."
],
"additional_scenarios_proposed": [
{
"scenario_id": "crusher_debottleneck",
"rationale": "Add a second crusher dump bay and second approach lane (D_CRUSH and E05 capacity 2) to test how much the crusher complex caps throughput.",
"total_tonnes_mean": 14853.3,
"uplift_vs_baseline_pct": 14.7
}
]
}summary.json
← Back to submission · View raw on GitHub