Exploring How Green Energy Capacity Affects Mine Production with Electric Trucks
Introduction
Hey everyone! I wanted to share some interesting insights from a simulation I recently conducted. If you're interested in green energy, electric vehicles, or mining operations, this might catch your eye.
The mining industry is steadily moving towards sustainability, and one significant shift is the adoption of electric trucks powered by green energy. But here's the question: How does the efficiency of green energy sources impact the actual production capacity of a mine using these electric trucks?
I decided to explore this by simulating a mining operation powered entirely by green energy assets with varying capacity factors (a measure of how effectively the green energy system operates).
The Simulation
I used Python with the SimPy library to create a simulation that models the following:
How It Works
What I Found
After running the simulation across different capacity factors, here's the interesting part:
Why Does This Happen?
Implications
领英推荐
Takeaways
What's Next?
There's a lot more to explore:
The Code
For those who are curious, here's the Python code I used to run the simulation:
import simpy
import numpy as np
import matplotlib.pyplot as plt
# Parameters
NUM_TRUCKS = 10 # Number of electric trucks in the mine
TRUCK_CAPACITY = 100 # Load capacity of each truck
TRIP_TIME = 2 # Time taken for one trip (hours)
CHARGE_TIME = 1 # Time taken to fully charge a truck (hours)
SIM_TIME = 24 # Total simulation time (hours)
# Green energy parameters
CAPACITY_FACTOR = np.linspace(0.1, 1.0, 10) # Range of capacity factors to simulate
ENERGY_STORAGE_CAPACITY = 1000 # Energy storage capacity (kWh)
TRUCK_ENERGY_USAGE = 100 # Energy used per charge (kWh)
MAX_GENERATION = 500 # Max green energy generation per hour (kWh)
def energy_system(env, capacity_factor, max_generation, energy_storage):
while True:
energy_generated = capacity_factor * max_generation
available_capacity = energy_storage.capacity - energy_storage.level
energy_to_store = min(energy_generated, available_capacity)
if energy_to_store > 0:
yield energy_storage.put(energy_to_store)
yield env.timeout(1)
class Truck:
def __init__(self, env, name, energy_system_resource, energy_storage, trips_completed):
self.env = env
self.name = name
self.energy_system_resource = energy_system_resource
self.energy_storage = energy_storage
self.trips_completed = trips_completed
self.action = env.process(self.run())
def run(self):
while True:
yield self.env.timeout(TRIP_TIME)
with self.energy_system_resource.request() as req:
yield req
yield self.energy_storage.get(TRUCK_ENERGY_USAGE)
yield self.env.timeout(CHARGE_TIME)
self.trips_completed.append(1)
production_capacity = []
for cf in CAPACITY_FACTOR:
env = simpy.Environment()
energy_system_resource = simpy.Resource(env, capacity=NUM_TRUCKS)
energy_storage = simpy.Container(env, capacity=ENERGY_STORAGE_CAPACITY, init=0)
trips_completed = []
env.process(energy_system(env, cf, MAX_GENERATION, energy_storage))
for i in range(NUM_TRUCKS):
Truck(env, f'Truck {i}', energy_system_resource, energy_storage, trips_completed)
env.run(until=SIM_TIME)
total_trips = len(trips_completed)
total_material_moved = total_trips * TRUCK_CAPACITY
production_capacity.append(total_material_moved)
# Plotting the results
plt.figure(figsize=(10, 6))
plt.plot(CAPACITY_FACTOR, production_capacity, marker='o')
plt.title('Mine Production Capacity vs Green Energy Capacity Factor')
plt.xlabel('Green Energy Capacity Factor')
plt.ylabel('Total Material Moved (units)')
plt.grid(True)
plt.show()
Simulation Results
Here's a visual representation of the simulation results:
Let's Connect!
I'd love to hear your thoughts:
Feel free to share your experiences or ask questions in the comments.
If you're interested in learning more about simulation in Python or want to dive deeper into how you can build similar models yourself, make sure to grab my free guide to simulation in Python over at teachem.digital. It's a great resource to get you started and learn more about the tools and techniques I used in this project.