summary.json

← Back to submission · View raw on GitHub

{
  "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
    }
  ]
}