Case Study:Haul Truck Fleet & Mill Operational Performance Analysis

This report presents a comprehensive analysis of fleet hauling performance and mill throughput efficiency using operational data simulated to reflect real mine-to-mill processes. The analysis leverages Power BI to transform raw equipment, fuel, productivity, and processing data into actionable insights that highlight operational strengths and identify potential improvement areas. By visualizing fleet utilization, mill throughput trends, downtime rates, and productivity patterns, the report demonstrates how data-driven decision-making can enhance performance, reduce bottlenecks, and support continuous improvement in mining operations.

Objective

The objective of this report is to evaluate the operational performance of the haul truck fleet and mill processing plant by analyzing key performance indicators (KPIs) such as utilization rate, tons hauled, productivity, fuel efficiency, breakdown rate, and mill throughput trends. Through interactive dashboards and visual analytics, the goal is to identify meaningful insights, measure efficiency across shifts and equipment, detect performance variability, and support management in making informed operational decisions. This analysis showcases the value of integrating fleet and mill data to achieve a more efficient, reliable, and optimized mine-to-mill value chain.

Data Collection & Preparation

Simulated PI System dataset(python):

  • Haul Truck Data (1800+ rows)
  • Mill & Crusher Data (350+ rows)

Haul Truck Data Columns: Timestamp, Truck_ID, Shift (Day/Night), Operator_ID, Haul_Time_Min, Idle_Time_Min, Fuel_Used_L, Tons_Hauled,Distance_km, Breakdown (Yes/No),Location (Pit, Crusher, Stockpile), Utilization_%.

Mill&Crasher Data Columns: Timestamp, Mill_Throughput_tph, Recovery_Rate_%,
Crusher_Rate_tph, Power_Usage_kWh, Downtime_Hours.

import pandas as pd
import numpy as np
import random
from datetime import datetime, timedelta

# Generate timestamps (hourly for 15 days)
start_time = datetime(2025, 10, 1, 0, 0, 0)
timestamps = [start_time + timedelta(hours=i) for i in range(15 * 24)]

# Haul Truck Data
truck_ids = [f"TRK{str(i).zfill(2)}" for i in range(1, 11)]
operators = [f"OP{str(i).zfill(3)}" for i in range(1, 31)]
locations = ["Pit", "Crusher", "Stockpile"]

haul_data = []
for t in timestamps:
    for truck in random.sample(truck_ids, 5):
        haul_time = round(np.random.uniform(3.5, 8.0), 2)
        idle_time = round(np.random.uniform(0.5, 2.0), 2)
        tons_hauled = round(np.random.uniform(250, 500), 1)
        fuel_used = round(np.random.uniform(150, 300), 1)
        distance = round(np.random.uniform(2, 8), 1)
        utilization = round((haul_time / (haul_time + idle_time)) * 100, 1)
        breakdown = random.choices(["Yes", "No"], weights=[0.05, 0.95])[0]
        shift = "Day" if 6 <= t.hour < 18 else "Night"
        operator = random.choice(operators)
        location = random.choice(locations)

        haul_data.append([t, truck, shift, operator, haul_time, idle_time, fuel_used,
                          tons_hauled, distance, breakdown, location, utilization])

haul_df = pd.DataFrame(haul_data, columns=[
    "Timestamp", "Truck_ID", "Shift", "Operator_ID", "Haul_Time_Min", "Idle_Time_Min",
    "Fuel_Used_L", "Tons_Hauled", "Distance_km", "Breakdown", "Location", "Utilization_%"
])

# Mill & Crusher Data
mill_data = []
for t in timestamps:
    throughput = round(np.random.uniform(1500, 2500), 1)
    recovery_rate = round(np.random.uniform(85, 95), 2)
    crusher_rate = round(np.random.uniform(400, 700), 1)
    power_usage = round(np.random.uniform(1200, 1800), 1)
    downtime = random.choices([0, 1], weights=[0.9, 0.1])[0]
    mill_data.append([t, throughput, recovery_rate, crusher_rate, power_usage, downtime])

mill_df = pd.DataFrame(mill_data, columns=[
    "Timestamp", "Mill_Throughput_tph", "Recovery_Rate_%",
    "Crusher_Rate_tph", "Power_Usage_kWh", "Downtime_Hours"
])

# Save to Excel
with pd.ExcelWriter("Simulated_PI_System_Dataset.xlsx") as writer:
    haul_df.to_excel(writer, index=False, sheet_name="Haul_Truck_Data")
    mill_df.to_excel(writer, index=False, sheet_name="Mill_Crusher_Data")

print("Excel file created: Simulated_PI_System_Dataset.xlsx")

Dataset tables samples:

KPIs Calculations

Haul Truck KPIs

KPIDescriptionFormula / Calculation
Utilization %How effectively a truck is used(Haul_Time_Min / (Haul_Time_Min + Idle_Time_Min)) * 100
Average Tons Hauled per ShiftProductivity per truck per shiftSUM(Tons_Hauled) / COUNT(DISTINCT Shift)
Average Haul TimeEfficiency of tripsAVG(Haul_Time_Min)
Average Idle TimeDowntime between tripsAVG(Idle_Time_Min)
Breakdown Rate %Reliability metric(COUNT(Breakdown = "Yes") / COUNT(Truck_ID)) * 100
Fuel Efficiency (Tons/Liter)Fuel performanceSUM(Tons_Hauled) / SUM(Fuel_Used_L)
Distance per HourOperational efficiencySUM(Distance_km) / SUM(Haul_Time_Min + Idle_Time_Min) * 60

Mill & Crusher KPIs

KPIDescriptionFormula / Calculation
Mill Throughput (tph)Tons processed per hourDirect from Mill_Throughput_tph
Recovery Rate %% of valuable ore recoveredDirect from Recovery_Rate_%
Crusher Rate (tph)Tons processed per hourDirect from Crusher_Rate_tph
Downtime HoursHours mill/crusher is stoppedDirect from Downtime_Hours
Power Usage Efficiency (kWh/ton)Energy efficiencyPower_Usage_kWh / Mill_Throughput_tph
Average Production per ShiftShift-wise efficiencySUM(Mill_Throughput_tph) grouped by shift/day

Analysis & Visualizations

KPIValue
Utilization % – 82.02 %Strong performance — trucks are active more than 80 % of the time. Industry benchmarks often target 75–85 %, so this is efficient.
Avg Tons Hauled – 373.95 tonsEach truck hauls roughly 374 tons per cycle or shift segment. This indicates consistent load capacity across the fleet.
Fuel Efficiency – 1.66 tons/literFor every liter of fuel, 1.66 tons of material are moved. This is a healthy figure and can be tracked to spot under-performing trucks.
Total Downtime – 40 hoursAcross the monitoring period, the fleet lost 40 hours of operation due to breakdowns or idle events — low relative to total active hours.

Fleet Productivity & Utilization

  • The fleet maintained a strong utilization rate of 82.02%, indicating efficient deployment and minimal unproductive time.
  • Trucks hauled an average of 373.95 tons, showing consistent payload delivery across the fleet.
  • Average productivity (1.66) demonstrates steady alignment between fuel usage and hauling efficiency.
  • Breakdown Rate is only 5.11%, which is low and signals good maintenance performance and equipment reliability.

Mill Throughput Trend

  • Mill throughput remained stable with values fluctuating around 46,500 to 51,000 tph.
  • Throughput dips visible on days 7 and 12 likely correspond to short maintenance or feed interruptions.
  • Overall mill performance shows a healthy operational pattern with quick recoveries after dips.

Utilization Over Time

  • Fleet utilization remained in a narrow band (81.0%–83.0%), confirming operational consistency.
  • Small dips around days 10–11 may reflect shift transitions, delays, or mild downtime events.

Fuel vs Productivity

  • Scatterplot indicates no major outliers, showing fuel consumption and productivity remain balanced.
  • Trucks consuming more fuel generally maintain higher productivity, confirming efficient energy use.
  • No trucks show excessive fuel usage for low productivity.

Utilization Rate by Truck & Shift

  • Day and Night shift utilization are nearly identical across all trucks.
  • This suggests:
  • Consistent dispatching and workload distribution.
  • Balanced performance among Truck_IDs (TRK01–TRK10).
  • No significant operator or shift-related performance gaps.

Summary

This reporting period reflects stable and efficient mine-to-mill performance.
The haul truck fleet shows high utilization (82%), strong tonnage movement, and minimal breakdowns (5.11%), indicating effective fleet management and preventive maintenance practices.

The mill throughput trend demonstrates consistent processing rates, with only minor operational interruptions that quickly stabilize. This indicates strong coordination between the fleet and mill, preventing bottlenecks in ore supply.

Fuel efficiency remains well aligned with productivity, and no equipment is consuming excessive fuel relative to output—reducing operational cost risks.
Shift comparison reveals uniform performance between day and night teams, supporting the presence of a well-trained and consistently performing operation.

Overall Operational Health:

✔ Efficient fleet utilization
✔ Strong mill performance
✔ Minimal downtime and consistent tonnage flow
✔ Balanced shift performance
✔ Stable energy and fuel efficiency


Leave a comment